In [ ]:
. ./nbs_header.ps1
. ./core.ps1
In [ ]:
{ pwsh ../apps/builder/build.ps1 } | Invoke-Block
── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # DibParser (Polyglot)                                                       │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#r 
@"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
dard2.1/FSharp.Control.AsyncSeq.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
0/System.Reactive.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
netstandard2.0/System.Reactive.Linq.dll"
#r 
@"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
#r 
@"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
arsec.dll"
#r 
@"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
arsecCS.dll"

── pwsh ────────────────────────────────────────────────────────────────────────
ls ~/.nuget/packages/argu

╭─[ 233.11ms - stdout ]────────────────────────────────────────────────────────╮
│ 6.2.4                                                                        │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#if !INTERACTIVE
open Lib
#endif

── fsharp ──────────────────────────────────────────────────────────────────────
open Common
open FParsec
open SpiralFileSystem.Operators

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## escapeCell (test)                                                         │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let inline escapeCell input =
    input
    |> SpiralSm.split "\n"
    |> Array.map (function
        | line when line |> SpiralSm.starts_with "\\#!" || line |> 
SpiralSm.starts_with "\\#r" ->
            System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#")
        | line -> line
    )
    |> SpiralSm.concat "\n"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

$"a{nl}\\#!magic{nl}b{nl}"
|> escapeCell
|> _assertEqual (
    $"a{nl}#!magic{nl}b{nl}"
)

╭─[ 41.11ms - stdout ]─────────────────────────────────────────────────────────╮
│ "a                                                                           │
│ #!magic                                                                      │
│ b                                                                            │
│ "                                                                            │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## magicMarker                                                               │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let magicMarker : Parser<string, unit> = pstring "#!"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic"
|> run magicMarker
|> _assertEqual (
    Success ("#!", (), Position ("", 2, 1, 3))
)

╭─[ 55.61ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success: "#!"                                                                │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"##!magic"
|> run magicMarker
|> _assertEqual (
    Failure (
        $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}",
        ParserError (
            Position ("", 0, 1, 1),
            (),
            ErrorMessageList (ExpectedString "#!")
        ),
        ()
    )
)

╭─[ 23.67ms - stdout ]─────────────────────────────────────────────────────────╮
│ Failure:                                                                     │
│ Error in Ln: 1 Col: 1                                                        │
│ ##!magic                                                                     │
│ ^                                                                            │
│ Expecting: '#!'                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## magicCommand                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let magicCommand =
    magicMarker
    >>. manyTill anyChar newline
    |>> (System.String.Concat >> SpiralSm.trim)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic

a"
|> run magicCommand
|> _assertEqual (
    Success ("magic", (), Position ("", 8, 2, 1))
)

╭─[ 14.55ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success: "magic"                                                             │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

" #!magic

a"
|> run magicCommand
|> _assertEqual (
    Failure (
        $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}",
        ParserError (
            Position ("", 0, 1, 1),
            (),
            ErrorMessageList (ExpectedString "#!")
        ),
        ()
    )
)

╭─[ 14.78ms - stdout ]─────────────────────────────────────────────────────────╮
│ Failure:                                                                     │
│ Error in Ln: 1 Col: 1                                                        │
│  #!magic                                                                     │
│ ^                                                                            │
│ Expecting: '#!'                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## content                                                                   │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let content =
    (newline >>. magicMarker) <|> (eof >>. preturn "")
    |> attempt
    |> lookAhead
    |> manyTill anyChar
    |>> (System.String.Concat >> SpiralSm.trim)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic


a


"
|> run content
|> _assertEqual (
    Success ("#!magic


a", (), Position ("", 14, 7, 1))
)

╭─[ 13.28ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success: "#!magic                                                            │
│                                                                              │
│                                                                              │
│ a"                                                                           │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## Output                                                                    │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type Output =
    | Fs
    | Md
    | Spi
    | Spir

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## Magic                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type Magic =
    | Fsharp
    | Markdown
    | Spiral of Output
    | Magic of string

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## kernelOutputs                                                             │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline kernelOutputs magic =
    match magic with
    | Fsharp -> [[ Fs ]]
    | Markdown -> [[ Md ]]
    | Spiral output -> [[ output ]]
    | _ -> [[]]

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## Block                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type Block =
    {
        magic : Magic
        content : string
    }

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## block                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let block =
    pipe2
        magicCommand
        content
        (fun magic content ->
            let magic, content =
                match magic with
                | "fsharp" -> Fsharp, content
                | "markdown" -> Markdown, content
                | "spiral" ->
                    let output = if content |> SpiralSm.contains "//// real\n" 
then Spir else Spi
                    let content =
                        if output = Spi
                        then content
                        else
                            content
                            |> SpiralSm.replace "//// real\n\n" ""
                            |> SpiralSm.replace "//// real\n" ""
                    Spiral output, content
                | magic -> magic |> Magic, content
            {
                magic = magic
                content = content
            })

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!magic


a


"
|> run block
|> _assertEqual (
    Success (
        { magic = Magic "magic"; content = "a" },
        (),
        Position ("", 14, 7, 1)
    )
)

╭─[ 24.18ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success: { magic = Magic "magic"                                             │
│   content = "a" }                                                            │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## blocks                                                                    │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let blocks =
    skipMany newline
    >>. sepEndBy block (skipMany1 newline)

── fsharp ──────────────────────────────────────────────────────────────────────
//// test


"#!magic1

a

\#!magic2

b

"
|> escapeCell
|> run blocks
|> _assertEqual (
    Success (
        [[
            { magic = Magic "magic1"; content = "a" }
            { magic = Magic "magic2"; content = "b" }
        ]],
        (),
        Position ("", 26, 9, 1)
    )
)

╭─[ 23.22ms - stdout ]─────────────────────────────────────────────────────────╮
│ Success: [{ magic = Magic "magic1"                                           │
│    content = "a" }; { magic = Magic "magic2"                                 │
│                       content = "b" }]                                       │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## formatBlock                                                               │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline formatBlock output (block : Block) =
    match output, block with
    | output, { magic = Markdown; content = content } ->
        let markdownComment =
            match output with
            | Spi | Spir -> "/// "
            | Fs -> "/// "
            | _ -> ""
        content
        |> SpiralSm.split "\n"
        |> Array.map (SpiralSm.trim_end [[||]])
        |> Array.filter (SpiralSm.ends_with " (test)" >> not)
        |> Array.map (function
            | "" -> markdownComment
            | line -> System.Text.RegularExpressions.Regex.Replace (line, 
"^\\s*", $"$&{markdownComment}")
        )
        |> SpiralSm.concat "\n"
    | Fs, { magic = Fsharp; content = content } ->
        let trimmedContent = content |> SpiralSm.trim
        if trimmedContent |> SpiralSm.contains "//// test\n"
            || trimmedContent |> SpiralSm.contains "//// ignore\n"
        then ""
        else
            content
            |> SpiralSm.split "\n"
            |> Array.filter (SpiralSm.trim_start [[||]] >> SpiralSm.starts_with 
"#r" >> not)
            |> SpiralSm.concat "\n"
    | (Spi | Spir), { magic = Spiral output'; content = content } when output' =
output ->
        let trimmedContent = content |> SpiralSm.trim
        if trimmedContent |> SpiralSm.contains "//// test\n"
            || trimmedContent |> SpiralSm.contains "//// ignore\n"
        then ""
        else content
    | _ -> ""

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!markdown


a

    b

c


\#!markdown


c


\#!fsharp


let a = 1"
|> escapeCell
|> run block
|> function
    | Success (block, _, _) -> formatBlock Fs block
    | Failure (msg, _, _) -> failwith msg
|> _assertEqual "/// a
/// 
    /// b
/// 
/// c"

╭─[ 29.51ms - stdout ]─────────────────────────────────────────────────────────╮
│ "/// a                                                                       │
│ ///                                                                          │
│     /// b                                                                    │
│ ///                                                                          │
│ /// c"                                                                       │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## formatBlocks                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline formatBlocks output blocks =
    blocks
    |> List.map (fun block ->
        block, formatBlock output block
    )
    |> List.filter (snd >> (<>) "")
    |> fun list ->
        (list, (None, [[]]))
        ||> List.foldBack (fun (block, content) (lastMagic, acc) ->
            let lineBreak =
                if block.magic = Markdown && lastMagic <> Some Markdown && 
lastMagic <> None
                then ""
                else "\n"
            Some block.magic, $"{content}{lineBreak}" :: acc
        )
    |> snd
    |> SpiralSm.concat "\n"

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"#!markdown


a

b


\#!markdown


c


\#!fsharp


let a = 1

\#!markdown

d (test)

\#!fsharp

//// test

let a = 2

\#!markdown

e

\#!fsharp

let a = 3"
|> escapeCell
|> run blocks
|> function
    | Success (blocks, _, _) -> formatBlocks Fs blocks
    | Failure (msg, _, _) -> failwith msg
|> _assertEqual "/// a
/// 
/// b

/// c
let a = 1

/// e
let a = 3
"

╭─[ 37.25ms - stdout ]─────────────────────────────────────────────────────────╮
│ "/// a                                                                       │
│ ///                                                                          │
│ /// b                                                                        │
│                                                                              │
│ /// c                                                                        │
│ let a = 1                                                                    │
│                                                                              │
│ /// e                                                                        │
│ let a = 3                                                                    │
│ "                                                                            │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## parse                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline parse output input =
    match run blocks input with
    | Success (blocks, _, _) ->
        let blocks =
            blocks
            |> List.filter (fun block ->
                block.magic |> kernelOutputs |> List.contains output || 
block.magic = Markdown
            )

        match blocks with
        | { magic = Markdown; content = content } :: _
            when output = Fs
            && content |> SpiralSm.starts_with "# "
            && content |> SpiralSm.ends_with ")"
            ->
            let inline indentBlock (block : Block) =
                { block with
                    content =
                        block.content
                        |> SpiralSm.split "\n"
                        |> Array.fold
                            (fun (lines, isMultiline) line ->
                                let trimmedLine = line |> SpiralSm.trim
                                if trimmedLine = ""
                                then "" :: lines, isMultiline
                                else
                                    let inline singleQuoteLine () =
                                        trimmedLine |> Seq.sumBy ((=) '"' >> 
System.Convert.ToInt32) = 1
                                        && trimmedLine |> SpiralSm.contains 
@"'""'" |> not
                                        && trimmedLine |> SpiralSm.ends_with "{"
|> not
                                        && trimmedLine |> SpiralSm.ends_with 
"{|" |> not
                                        && trimmedLine |> SpiralSm.starts_with 
"}" |> not
                                        && trimmedLine |> SpiralSm.starts_with 
"|}" |> not

                                    match isMultiline, trimmedLine |> 
SpiralSm.split_string [[| $"{q}{q}{q}" |]] with
                                    | false, [[| _; _ |]] ->
                                        $"    {line}" :: lines, true

                                    | true, [[| _; _ |]] ->
                                        line :: lines, false

                                    | false, _ when singleQuoteLine () ->
                                        $"    {line}" :: lines, true

                                    | false, _ when line |> SpiralSm.starts_with
"#" && block.magic = Fsharp ->
                                        line :: lines, false

                                    | false, _ ->
                                        $"    {line}" :: lines, false

                                    | true, _ when singleQuoteLine () && line |>
SpiralSm.starts_with "    " ->
                                        $"    {line}" :: lines, false

                                    | true, _ when singleQuoteLine () ->
                                        line :: lines, false

                                    | true, _ ->
                                        line :: lines, true
                            )
                            ([[]], false)
                        |> fst
                        |> List.rev
                        |> SpiralSm.concat "\n"
                }

            let moduleName, namespaceName =
                System.Text.RegularExpressions.Regex.Match (content, @"# (.*) 
\((.*)\)$")
                |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value

            let moduleBlock =
                {
                    magic = Fsharp
                    content =
                        $"#if !INTERACTIVE
namespace {namespaceName}
#endif

module {moduleName} ="
                }

            blocks
            |> List.indexed
            |> List.fold
                (fun blocks (index, block) ->
                    match index with
                    | 0 -> blocks
                    | 1 -> indentBlock block :: moduleBlock :: blocks
                    | _ -> indentBlock block :: blocks
                )
                [[]]
            |> List.rev
        | _ -> blocks
        |> Result.Ok
    | Failure (errorMsg, _, _) -> Result.Error errorMsg

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let example1 =
    $"""#!meta

{{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name":
"fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}}

\#!markdown

# TestModule (TestNamespace)

\#!fsharp

\#!import file.dib

\#!fsharp

\#r "nuget:Expecto"

\#!markdown

## ParserLibrary

\#!fsharp

open System

\#!markdown

## x (test)

\#!fsharp

//// ignore

let x = 1

\#!spiral

//// test

inl x = 1i32

\#!spiral

//// real

inl x = 2i32

\#!spiral

inl x = 3i32

\#!markdown

### TextInput

\#!fsharp

let str1 = "abc
def"

let str2 =
    "abc\
def"

let str3 =
    $"1{{
        1
    }}1"

let str4 =
    $"1{{({{|
        a = 1
    |}}).a}}1"

let str5 =
    "abc \
        def"

let x =
    match '"' with
    | '"' -> true
    | _ -> false

let long1 = {q}{q}{q}a{q}{q}{q}

let long2 =
    {q}{q}{q}
a
{q}{q}{q}

\#!fsharp

type Position =
    {{
#if INTERACTIVE
        line : string
#else
        line : int
#endif
        column : int
    }}"""
    |> escapeCell

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Fs
|> Result.toOption
|> Option.get
|> (formatBlocks Fs)
|> _assertEqual $"""#if !INTERACTIVE
namespace TestNamespace
#endif

module TestModule =

    /// ## ParserLibrary
    open System

    /// ### TextInput
    let str1 = "abc
def"

    let str2 =
        "abc\
def"

    let str3 =
        $"1{{
            1
        }}1"

    let str4 =
        $"1{{({{|
            a = 1
        |}}).a}}1"

    let str5 =
        "abc \
            def"

    let x =
        match '"' with
        | '"' -> true
        | _ -> false

    let long1 = {q}{q}{q}a{q}{q}{q}

    let long2 =
        {q}{q}{q}
a
{q}{q}{q}

    type Position =
        {{
#if INTERACTIVE
            line : string
#else
            line : int
#endif
            column : int
        }}
"""

╭─[ 94.70ms - stdout ]─────────────────────────────────────────────────────────╮
│ "#if !INTERACTIVE                                                            │
│ namespace TestNamespace                                                      │
│ #endif                                                                       │
│                                                                              │
│ module TestModule =                                                          │
│                                                                              │
│     /// ## ParserLibrary                                                     │
│     open System                                                              │
│                                                                              │
│     /// ### TextInput                                                        │
│     let str1 = "abc                                                          │
│ def"                                                                         │
│                                                                              │
│     let str2 =                                                               │
│         "abc\                                                                │
│ def"                                                                         │
│                                                                              │
│     let str3 =                                                               │
│         $"1{                                                                 │
│             1                                                                │
│         }1"                                                                  │
│                                                                              │
│     let str4 =                                                               │
│         $"1{({|                                                              │
│             a = 1                                                            │
│         |}).a}1"                                                             │
│                                                                              │
│     let str5 =                                                               │
│         "abc \                                                               │
│             def"                                                             │
│                                                                              │
│     let x =                                                                  │
│         match '"' with                                                       │
│         | '"' -> true                                                        │
│         | _ -> false                                                         │
│                                                                              │
│     let long1 = """a"""                                                      │
│                                                                              │
│     let long2 =                                                              │
│         """                                                                  │
│ a                                                                            │
│ """                                                                          │
│                                                                              │
│     type Position =                                                          │
│         {                                                                    │
│ #if INTERACTIVE                                                              │
│             line : string                                                    │
│ #else                                                                        │
│             line : int                                                       │
│ #endif                                                                       │
│             column : int                                                     │
│         }                                                                    │
│ "                                                                            │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Md
|> Result.toOption
|> Option.get
|> (formatBlocks Md)
|> _assertEqual "# TestModule (TestNamespace)

## ParserLibrary

### TextInput
"

╭─[ 82.29ms - stdout ]─────────────────────────────────────────────────────────╮
│ "# TestModule (TestNamespace)                                                │
│                                                                              │
│ ## ParserLibrary                                                             │
│                                                                              │
│ ### TextInput                                                                │
│ "                                                                            │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Spi
|> Result.toOption
|> Option.get
|> (formatBlocks Spi)
|> _assertEqual "/// # TestModule (TestNamespace)

/// ## ParserLibrary
inl x = 3i32

/// ### TextInput
"

╭─[ 84.02ms - stdout ]─────────────────────────────────────────────────────────╮
│ "/// # TestModule (TestNamespace)                                            │
│                                                                              │
│ /// ## ParserLibrary                                                         │
│ inl x = 3i32                                                                 │
│                                                                              │
│ /// ### TextInput                                                            │
│ "                                                                            │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

example1
|> parse Spir
|> Result.toOption
|> Option.get
|> (formatBlocks Spir)
|> _assertEqual "/// # TestModule (TestNamespace)

/// ## ParserLibrary
inl x = 2i32

/// ### TextInput
"

╭─[ 106.95ms - stdout ]────────────────────────────────────────────────────────╮
│ "/// # TestModule (TestNamespace)                                            │
│                                                                              │
│ /// ## ParserLibrary                                                         │
│ inl x = 2i32                                                                 │
│                                                                              │
│ /// ### TextInput                                                            │
│ "                                                                            │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## parseDibCode                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline parseDibCode output file = async {
    trace Debug
        (fun () -> "parseDibCode")
        (fun () -> $"output: {output} / file: {file} / {_locals ()}")
    let! input = file |> SpiralFileSystem.read_all_text_async
    match parse output input with
    | Result.Ok blocks -> return blocks |> formatBlocks output
    | Result.Error msg -> return failwith msg
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## writeDibCode                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline writeDibCode output path = async {
    trace Debug
        (fun () -> "writeDibCode")
        (fun () -> $"output: {output} / path: {path} / {_locals ()}")
    let! result = parseDibCode output path
    let pathDir = path |> System.IO.Path.GetDirectoryName
    let fileNameWithoutExt =
        match output, path |> System.IO.Path.GetFileNameWithoutExtension with
        | Spir, fileNameWithoutExt -> $"real_{fileNameWithoutExt}"
        | _, fileNameWithoutExt -> fileNameWithoutExt
    let outputPath = pathDir </> $"{fileNameWithoutExt}.{output |> string |> 
SpiralSm.to_lower}"
    do! result |> SpiralFileSystem.write_all_text_async outputPath
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## Arguments                                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
[[<RequireQualifiedAccess>]]
type Arguments =
    | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]]
        File of file : string * Output

    interface Argu.IArgParserTemplate with
        member s.Usage =
            match s with
            | File _ -> nameof File

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

Argu.ArgumentParser.Create<Arguments>().PrintUsage ()

╭─[ 68.21ms - return value ]───────────────────────────────────────────────────╮
│ "USAGE: dotnet-repl [--help] <file> <fs|md|spi|spir>                         │
│                                                                              │
│ FILE:                                                                        │
│                                                                              │
│     <file> <fs|md|spi|spir>                                                  │
│                           File                                               │
│                                                                              │
│ OPTIONS:                                                                     │
│                                                                              │
│     --help                display this list of options.                      │
│ "                                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ## main                                                                      │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let main args =
    let argsMap = args |> Runtime.parseArgsMap<Arguments>

    let files =
        argsMap.[[nameof Arguments.File]]
        |> List.map (function
            | Arguments.File (path, output) -> path, output
        )

    files
    |> List.map (fun (path, output) -> path |> writeDibCode output)
    |> Async.Parallel
    |> Async.Ignore
    |> Async.runWithTimeout 30000
    |> function
        | Some () -> 0
        | None -> 1

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

let args =
    System.Environment.GetEnvironmentVariable "ARGS"
    |> SpiralRuntime.split_args
    |> Result.toArray
    |> Array.collect id

match args with
| [[||]] -> 0
| args -> if main args = 0 then 0 else failwith "main failed"

╭─[ 117.93ms - return value ]──────────────────────────────────────────────────╮
│ <div class="dni-plaintext"><pre>0                                            │
│ </pre></div><style>                                                          │
│ .dni-code-hint {                                                             │
│     font-style: italic;                                                      │
│     overflow: hidden;                                                        │
│     white-space: nowrap;                                                     │
│ }                                                                            │
│ .dni-treeview {                                                              │
│     white-space: nowrap;                                                     │
│ }                                                                            │
│ .dni-treeview td {                                                           │
│     vertical-align: top;                                                     │
│     text-align: start;                                                       │
│ }                                                                            │
│ details.dni-treeview {                                                       │
│     padding-left: 1em;                                                       │
│ }                                                                            │
│ table td {                                                                   │
│     text-align: start;                                                       │
│ }                                                                            │
│ table tr {                                                                   │
│     vertical-align: top;                                                     │
│     margin: 0em 0px;                                                         │
│ }                                                                            │
│ table tr td pre                                                              │
│ {                                                                            │
│     vertical-align: top !important;                                          │
│     margin: 0em 0px !important;                                              │
│ }                                                                            │
│ table th {                                                                   │
│     text-align: start;                                                       │
│ }                                                                            │
│ </style>                                                                     │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 119.31ms - stdout ]────────────────────────────────────────────────────────╮
│ 00:00:03   debug #1 writeDibCode / output: Fs / path: Builder.dib       │
│ 00:00:03   debug #2 parseDibCode / output: Fs / file: Builder.dib       │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Builder.dib"])) }
00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
    "repl",
    "--exit-after-run",
    "--run",
    "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib",
    "--output-path",
    "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb",
]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ # Builder (Polyglot)                                                         │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open SpiralFileSystem.Operators
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## buildProject                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline buildProject runtime outputDir path = async {
>     let fullPath = path |> System.IO.Path.GetFullPath
>     let fileDir = fullPath |> System.IO.Path.GetDirectoryName
>     let extension = fullPath |> System.IO.Path.GetExtension
> 
>     trace Debug
>         (fun () -> "buildProject")
>         (fun () -> $"fullPath: {fullPath} / {_locals ()}")
> 
>     match extension with
>     | ".fsproj" -> ()
>     | _ -> failwith "Invalid project file"
> 
>     let runtimes =
>         runtime
>         |> Option.map List.singleton
>         |> Option.defaultValue [[ "linux-x64"; "win-x64" ]]
> 
>     let outputDir = outputDir |> Option.defaultValue "dist"
> 
>     return!
>         runtimes
>         |> List.map (fun runtime -> async {
>             let command = $@"dotnet publish ""{path}"" --configuration Release 
> --output ""{outputDir}"" --runtime {runtime}"
>             let! exitCode, _result =
>                 SpiralRuntime.execution_options (fun x ->
>                     { x with
>                         l0 = command
>                         l6 = Some fileDir
>                     }
>                 )
>                 |> SpiralRuntime.execute_with_options_async
>             return exitCode
>         })
>         |> Async.Sequential
>         |> Async.map Array.sum
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## persistCodeProject                                                        │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline persistCodeProject packages modules name hash code = async {
>     trace Debug
>         (fun () -> "persistCodeProject")
>         (fun () -> $"packages: {packages} / modules: {modules} / name: {name} / 
> hash: {hash} / code.Length: {code |> String.length} / {_locals ()}")
> 
>     let workspaceRoot = SpiralFileSystem.get_workspace_root ()
> 
>     let targetDir =
>         let targetDir = workspaceRoot </> "target/Builder" </> name
>         match hash with
>         | Some hash -> targetDir </> "packages" </> hash
>         | None -> targetDir
>     targetDir |> System.IO.Directory.CreateDirectory |> ignore
> 
>     let filePath = targetDir </> $"{name}.fs" |> System.IO.Path.GetFullPath
>     do! code |> SpiralFileSystem.write_all_text_exists filePath
> 
>     let modulesCode =
>         modules
>         |> List.map (fun path -> $"""<Compile Include="{workspaceRoot </> path}"
> />""")
>         |> SpiralSm.concat "\n        "
> 
>     let fsprojPath = targetDir </> $"{name}.fsproj"
>     let fsprojCode = $"""<Project Sdk="Microsoft.NET.Sdk">
>     <PropertyGroup>
>         <TargetFramework>net9.0</TargetFramework>
>         <LangVersion>preview</LangVersion>
>         <RollForward>Major</RollForward>
>         <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
>         <PublishAot>false</PublishAot>
>         <PublishTrimmed>false</PublishTrimmed>
>         <PublishSingleFile>true</PublishSingleFile>
>         <SelfContained>true</SelfContained>
>         <Version>0.0.1-alpha.1</Version>
>         <OutputType>Exe</OutputType>
>     </PropertyGroup>
> 
>     <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('FreeBSD'))">
>         <DefineConstants>_FREEBSD</DefineConstants>
>     </PropertyGroup>
> 
>     <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('Linux'))">
>         <DefineConstants>_LINUX</DefineConstants>
>     </PropertyGroup>
> 
>     <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('OSX'))">
>         <DefineConstants>_OSX</DefineConstants>
>     </PropertyGroup>
> 
>     <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('Windows'))">
>         <DefineConstants>_WINDOWS</DefineConstants>
>     </PropertyGroup>
> 
>     <ItemGroup>
>         {modulesCode}
>         <Compile Include="{filePath}" />
>     </ItemGroup>
> 
>     <Import Project="{workspaceRoot}/.paket/Paket.Restore.targets" />
> </Project>
> """
>     do! fsprojCode |> SpiralFileSystem.write_all_text_exists fsprojPath
> 
>     let paketReferencesPath = targetDir </> "paket.references"
>     let paketReferencesCode =
>         "FSharp.Core" :: packages
>         |> SpiralSm.concat "\n"
>     do! paketReferencesCode |> SpiralFileSystem.write_all_text_exists 
> paketReferencesPath
> 
>     return fsprojPath
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## buildCode                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline buildCode runtime packages modules outputDir name code = async {
>     let! fsprojPath = code |> persistCodeProject packages modules name None
>     let! exitCode = fsprojPath |> buildProject runtime outputDir
>     if exitCode <> 0 then
>         let! fsprojText = fsprojPath |> SpiralFileSystem.read_all_text_async
>         trace Critical
>             (fun () -> "buildCode")
>             (fun () -> $"code: {code |> SpiralSm.ellipsis_end 400} / fsprojText:
> {fsprojText} / {_locals ()}")
>     return exitCode
> }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "1 + 1 |> ignore"
> |> buildCode None [[]] [[]] None "test1"
> |> Async.runWithTimeout 180000
> |> _assertEqual (Some 0)
> 
> ╭─[ 8.21s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:00:01   debug #1 persistCodeProject / packages: [] / modules: [] /   │
> │ name: test1 / hash:  / code.Length: 15                                       │
> │ 00:00:01   debug #2 buildProject / fullPath:                            │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj        │
> │ 00:00:04   debug #1 runtime.execute_with_options_async / { options = {  │
> │ command = dotnet publish                                                     │
> │ "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj"      │
> │ --configuration Release --output "dist" --runtime linux-x64;                 │
> │ cancellation_token = None; environment_variables = [||]; on_line = None;     │
> │ stdin = None; trace = true; working_directory = Some                         │
> │ "/home/runner/work/polyglot/polyglot/target/Builder/test1" } }               │
> │ 00:00:05 verbose #2 > MSBuild version                                   │
> │ 17.10.0-preview-24101-01+07fd5d51f for .NET                                  │
> │ 00:00:05 verbose #3 >   Determining projects to restore...              │
> │ 00:00:05 verbose #4 >   Paket version                                   │
> │ 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b                      │
> │ 00:00:05 verbose #5 >   The last full restore is still up to date.      │
> │ Nothing left to do.                                                          │
> │ 00:00:05 verbose #6 >   Total time taken: 0 milliseconds                │
> │ 00:00:06 verbose #7 >   Paket version                                   │
> │ 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b                      │
> │ 00:00:06 verbose #8 >   Restoring                                       │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj        │
> │ 00:00:06 verbose #9 >   Starting restore process.                       │
> │ 00:00:06 verbose #10 >   Total time taken: 0 milliseconds               │
> │ 00:00:07 verbose #11 >   Restored                                       │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj (in    │
> │ 283 ms).                                                                     │
> │ 00:00:07 verbose #12 >                                                  │
> │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │
> │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message          │
> │ NETSDK1057: You are using a preview version of .NET. See:                    │
> │ https://aka.ms/dotnet-support-policy [                                       │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj]       │
> │ 00:00:08 verbose #13 >                                                  │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fs(1,16):     │
> │ warning FS0988: Main module of program is empty: nothing will happen when it │
> │ is run [                                                                     │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj]       │
> │ 00:00:09 verbose #14 >   test1 ->                                       │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test1/bin/Release/net9.0/ │
> │ linux-x64/test1.dll                                                          │
> │ 00:00:09 verbose #15 >   test1 ->                                       │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test1/dist                │
> │ 00:00:09   debug #16 runtime.execute_with_options_async / { exit_code = │
> │ 0; output_length = 1300 }                                                    │
> │ 00:00:09   debug #17 runtime.execute_with_options_async / { options = { │
> │ command = dotnet publish                                                     │
> │ "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj"      │
> │ --configuration Release --output "dist" --runtime win-x64;                   │
> │ cancellation_token = None; environment_variables = [||]; on_line = None;     │
> │ stdin = None; trace = true; working_directory = Some                         │
> │ "/home/runner/work/polyglot/polyglot/target/Builder/test1" } }               │
> │ 00:00:10 verbose #18 > MSBuild version                                  │
> │ 17.10.0-preview-24101-01+07fd5d51f for .NET                                  │
> │ 00:00:10 verbose #19 >   Determining projects to restore...             │
> │ 00:00:10 verbose #20 >   Restored                                       │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj (in    │
> │ 259 ms).                                                                     │
> │ 00:00:11 verbose #21 >                                                  │
> │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │
> │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message          │
> │ NETSDK1057: You are using a preview version of .NET. See:                    │
> │ https://aka.ms/dotnet-support-policy [                                       │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj]       │
> │ 00:00:12 verbose #22 >                                                  │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fs(1,16):     │
> │ warning FS0988: Main module of program is empty: nothing will happen when it │
> │ is run [                                                                     │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj]       │
> │ 00:00:12 verbose #23 >   test1 ->                                       │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test1/bin/Release/net9.0/ │
> │ win-x64/test1.dll                                                            │
> │ 00:00:12 verbose #24 >   test1 ->                                       │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test1/dist                │
> │ 00:00:12   debug #25 runtime.execute_with_options_async / { exit_code = │
> │ 0; output_length = 909 }                                                     │
> │ Some 0                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "1 + a |> ignore"
> |> buildCode None [[]] [[]] None "test2"
> |> Async.runWithTimeout 180000
> |> _assertEqual (Some 2)
> 
> ╭─[ 5.81s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:00:09   debug #3 persistCodeProject / packages: [] / modules: [] /   │
> │ name: test2 / hash:  / code.Length: 15                                       │
> │ 00:00:09   debug #4 buildProject / fullPath:                            │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj        │
> │ 00:00:13   debug #26 runtime.execute_with_options_async / { options = { │
> │ command = dotnet publish                                                     │
> │ "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj"      │
> │ --configuration Release --output "dist" --runtime linux-x64;                 │
> │ cancellation_token = None; environment_variables = [||]; on_line = None;     │
> │ stdin = None; trace = true; working_directory = Some                         │
> │ "/home/runner/work/polyglot/polyglot/target/Builder/test2" } }               │
> │ 00:00:13 verbose #27 > MSBuild version                                  │
> │ 17.10.0-preview-24101-01+07fd5d51f for .NET                                  │
> │ 00:00:13 verbose #28 >   Determining projects to restore...             │
> │ 00:00:13 verbose #29 >   Paket version                                  │
> │ 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b                      │
> │ 00:00:14 verbose #30 >   The last full restore is still up to date.     │
> │ Nothing left to do.                                                          │
> │ 00:00:14 verbose #31 >   Total time taken: 0 milliseconds               │
> │ 00:00:14 verbose #32 >   Paket version                                  │
> │ 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b                      │
> │ 00:00:14 verbose #33 >   Restoring                                      │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj        │
> │ 00:00:14 verbose #34 >   Starting restore process.                      │
> │ 00:00:14 verbose #35 >   Total time taken: 0 milliseconds               │
> │ 00:00:15 verbose #36 >   Restored                                       │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj (in    │
> │ 257 ms).                                                                     │
> │ 00:00:15 verbose #37 >                                                  │
> │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │
> │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message          │
> │ NETSDK1057: You are using a preview version of .NET. See:                    │
> │ https://aka.ms/dotnet-support-policy [                                       │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj]       │
> │ 00:00:16 verbose #38 >                                                  │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fs(1,5):      │
> │ error FS0039: The value or constructor 'a' is not defined. [                 │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj]       │
> │ 00:00:16   debug #39 runtime.execute_with_options_async / { exit_code = │
> │ 1; output_length = 1093 }                                                    │
> │ 00:00:16   debug #40 runtime.execute_with_options_async / { options = { │
> │ command = dotnet publish                                                     │
> │ "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj"      │
> │ --configuration Release --output "dist" --runtime win-x64;                   │
> │ cancellation_token = None; environment_variables = [||]; on_line = None;     │
> │ stdin = None; trace = true; working_directory = Some                         │
> │ "/home/runner/work/polyglot/polyglot/target/Builder/test2" } }               │
> │ 00:00:16 verbose #41 > MSBuild version                                  │
> │ 17.10.0-preview-24101-01+07fd5d51f for .NET                                  │
> │ 00:00:17 verbose #42 >   Determining projects to restore...             │
> │ 00:00:17 verbose #43 >   Restored                                       │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj (in    │
> │ 255 ms).                                                                     │
> │ 00:00:17 verbose #44 >                                                  │
> │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │
> │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message          │
> │ NETSDK1057: You are using a preview version of .NET. See:                    │
> │ https://aka.ms/dotnet-support-policy [                                       │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj]       │
> │ 00:00:18 verbose #45 >                                                  │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fs(1,5):      │
> │ error FS0039: The value or constructor 'a' is not defined. [                 │
> │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj]       │
> │ 00:00:18   debug #46 runtime.execute_with_options_async / { exit_code = │
> │ 1; output_length = 704 }                                                     │
> │ 00:00:15 critical #5 buildCode / code: 1 + a |> ignore / fsprojText:    │
> │ <Project Sdk="Microsoft.NET.Sdk">                                            │
> │     <PropertyGroup>                                                          │
> │         <TargetFramework>net9.0</TargetFramework>                            │
> │         <LangVersion>preview</LangVersion>                                   │
> │         <RollForward>Major</RollForward>                                     │
> │         <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>            │
> │         <PublishAot>false</PublishAot>                                       │
> │         <PublishTrimmed>false</PublishTrimmed>                               │
> │         <PublishSingleFile>true</PublishSingleFile>                          │
> │         <SelfContained>true</SelfContained>                                  │
> │         <Version>0.0.1-alpha.1</Version>                                     │
> │         <OutputType>Exe</OutputType>                                         │
> │     </PropertyGroup>                                                         │
> │                                                                              │
> │     <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('FreeBSD'))">        │
> │         <DefineConstants>_FREEBSD</DefineConstants>                          │
> │     </PropertyGroup>                                                         │
> │                                                                              │
> │     <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Linux'))">          │
> │         <DefineConstants>_LINUX</DefineConstants>                            │
> │     </PropertyGroup>                                                         │
> │                                                                              │
> │     <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('OSX'))">            │
> │         <DefineConstants>_OSX</DefineConstants>                              │
> │     </PropertyGroup>                                                         │
> │                                                                              │
> │     <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">        │
> │         <DefineConstants>_WINDOWS</DefineConstants>                          │
> │     </PropertyGroup>                                                         │
> │                                                                              │
> │     <ItemGroup>                                                              │
> │                                                                              │
> │         <Compile                                                             │
> │ Include="/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fs"  │
> │ />                                                                           │
> │     </ItemGroup>                                                             │
> │                                                                              │
> │     <Import                                                                  │
> │ Project="/home/runner/work/polyglot/polyglot/.paket/Paket.Restore.targets"   │
> │ />                                                                           │
> │ </Project>                                                                   │
> │                                                                              │
> │ Some 2                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## readFile                                                                  │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline readFile path = async {
>     let! code = path |> SpiralFileSystem.read_all_text_async
> 
>     let code = System.Text.RegularExpressions.Regex.Replace (
>         code,
>         @"( *)(let\s+main\s+.*?\s*=)",
>         fun m -> m.Groups.[[1]].Value + "[[<EntryPoint>]]\n" + 
> m.Groups.[[1]].Value + m.Groups.[[2]].Value
>     )
> 
>     let codeTrim = code |> SpiralSm.trim_end [[||]]
>     return
>         if codeTrim |> SpiralSm.ends_with "\n()"
>         then codeTrim |> SpiralSm.slice 0 ((codeTrim |> String.length) - 3)
>         else code
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## buildFile                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline buildFile runtime packages modules path = async {
>     let fullPath = path |> System.IO.Path.GetFullPath
>     let dir = fullPath |> System.IO.Path.GetDirectoryName
>     let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension
>     let! code = fullPath |> readFile
>     return! code |> buildCode runtime packages modules (dir </> "dist" |> Some) 
> name
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## persistFile                                                               │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline persistFile packages modules path = async {
>     let fullPath = path |> System.IO.Path.GetFullPath
>     let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension
>     let! code = fullPath |> readFile
>     return! code |> persistCodeProject packages modules name None
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## Arguments                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> [[<RequireQualifiedAccess>]]
> type Arguments =
>     | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce>]] 
> Path of path : string
>     | [[<Argu.ArguAttributes.Unique>]] Packages of packages : string list
>     | [[<Argu.ArguAttributes.Unique>]] Modules of modules : string list
>     | [[<Argu.ArguAttributes.Unique>]] Runtime of runtime : string
>     | [[<Argu.ArguAttributes.Unique>]] Persist_Only
> 
>     interface Argu.IArgParserTemplate with
>         member s.Usage =
>             match s with
>             | Path _ -> nameof Path
>             | Packages _ -> nameof Packages
>             | Modules _ -> nameof Modules
>             | Runtime _ -> nameof Runtime
>             | Persist_Only -> nameof Persist_Only
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
> 
> ╭─[ 75.09ms - return value ]───────────────────────────────────────────────────╮
> │ "USAGE: dotnet-repl [--help] [--packages [<packages>...]]                    │
> │                    [--modules [<modules>...]] [--runtime <runtime>]          │
> │                    [--persist-only] <path>                                   │
> │                                                                              │
> │ PATH:                                                                        │
> │                                                                              │
> │     <path>                Path                                               │
> │                                                                              │
> │ OPTIONS:                                                                     │
> │                                                                              │
> │     --packages [<packages>...]                                               │
> │                           Packages                                           │
> │     --modules [<modules>...]                                                 │
> │                           Modules                                            │
> │     --runtime <runtime>   Runtime                                            │
> │     --persist-only        Persist_Only                                       │
> │     --help                display this list of options.                      │
> │ "                                                                            │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## main                                                                      │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let main args =
>     let argsMap = args |> Runtime.parseArgsMap<Arguments>
> 
>     let path =
>         match argsMap.[[nameof Arguments.Path]] with
>         | [[ Arguments.Path path ]] -> Some path
>         | _ -> None
>         |> Option.get
> 
>     let packages =
>         match argsMap |> Map.tryFind (nameof Arguments.Packages) with
>         | Some [[ Arguments.Packages packages ]] -> packages
>         | _ -> [[]]
> 
>     let modules =
>         match argsMap |> Map.tryFind (nameof Arguments.Modules) with
>         | Some [[ Arguments.Modules modules ]] -> modules
>         | _ -> [[]]
> 
>     let runtime =
>         match argsMap |> Map.tryFind (nameof Arguments.Runtime) with
>         | Some [[ Arguments.Runtime runtime ]] -> Some runtime
>         | _ -> None
> 
>     let persistOnly = argsMap |> Map.containsKey (nameof Arguments.Persist_Only)
> 
>     if persistOnly
>     then path |> persistFile packages modules |> Async.map (fun _ -> 0)
>     else path |> buildFile runtime packages modules
>     |> Async.runWithTimeout (60000 * 60)
>     |> function
>         | Some exitCode -> exitCode
>         | None -> 1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let args =
>     System.Environment.GetEnvironmentVariable "ARGS"
>     |> SpiralRuntime.split_args
>     |> Result.toArray
>     |> Array.collect id
> 
> match args with
> | [[||]] -> 0
> | args -> if main args = 0 then 0 else failwith "main failed"
> 
> ╭─[ 12.28s - return value ]────────────────────────────────────────────────────╮
> │ <div class="dni-plaintext"><pre>0                                            │
> │ </pre></div><style>                                                          │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 12.28s - stdout ]──────────────────────────────────────────────────────────╮
> │ 00:00:16   debug #6 persistCodeProject / packages: [Argu;               │
> │ FSharp.Control.AsyncSeq; System.Reactive.Linq] / modules: [                  │
> │ lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] /     │
> │ name: Builder / hash:  / code.Length: 8210                                   │
> │ 00:00:16   debug #7 buildProject / fullPath:                            │
> │ /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj    │
> │ 00:00:19   debug #47 runtime.execute_with_options_async / { options = { │
> │ command = dotnet publish                                                     │
> │ "/home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj"  │
> │ --configuration Release --output                                             │
> │ "/home/runner/work/polyglot/polyglot/apps/builder/dist" --runtime linux-x64; │
> │ cancellation_token = None; environment_variables = [||]; on_line = None;     │
> │ stdin = None; trace = true; working_directory = Some                         │
> │ "/home/runner/work/polyglot/polyglot/target/Builder/Builder" } }             │
> │ 00:00:19 verbose #48 > MSBuild version                                  │
> │ 17.10.0-preview-24101-01+07fd5d51f for .NET                                  │
> │ 00:00:19 verbose #49 >   Determining projects to restore...             │
> │ 00:00:20 verbose #50 >   Paket version                                  │
> │ 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b                      │
> │ 00:00:20 verbose #51 >   The last full restore is still up to date.     │
> │ Nothing left to do.                                                          │
> │ 00:00:20 verbose #52 >   Total time taken: 0 milliseconds               │
> │ 00:00:20 verbose #53 >   Paket version                                  │
> │ 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b                      │
> │ 00:00:20 verbose #54 >   Restoring                                      │
> │ /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj    │
> │ 00:00:21 verbose #55 >   Starting restore process.                      │
> │ 00:00:21 verbose #56 >   Total time taken: 0 milliseconds               │
> │ 00:00:21 verbose #57 >   Restored                                       │
> │ /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj    │
> │ (in 298 ms).                                                                 │
> │ 00:00:21 verbose #58 >                                                  │
> │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │
> │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message          │
> │ NETSDK1057: You are using a preview version of .NET. See:                    │
> │ https://aka.ms/dotnet-support-policy [                                       │
> │ /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj]   │
> │ 00:00:31 verbose #59 >   Builder ->                                     │
> │ /home/runner/work/polyglot/polyglot/target/Builder/Builder/bin/Release/net9. │
> │ 0/linux-x64/Builder.dll                                                      │
> │ 00:00:31 verbose #60 >   Builder ->                                     │
> │ /home/runner/work/polyglot/polyglot/apps/builder/dist                        │
> │ 00:00:31   debug #61 runtime.execute_with_options_async / { exit_code = │
> │ 0; output_length = 1083 }                                                    │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:42 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 45525 }
00:00:42   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
    "nbconvert",
    "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb",
    "--to",
    "html",
    "--HTMLExporter.theme=dark",
]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:42 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb to html
00:00:42 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:42 verbose #7 !   validate(nb)
00:00:43 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:43 verbose #9 !   return _pygments_highlight(
00:00:43 verbose #10 ! [NbConvertApp] Writing 336566 bytes to /home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html
00:00:43 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 }
00:00:43   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 }
00:00:43   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
    "-c",
    "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:43 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:43   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:43   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 46486 }
In [ ]:
{ pwsh ../apps/spiral/builder/build.ps1 -SkipFsx 1 } | Invoke-Block
00:00:00   debug #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: spiral_builder / hash:  / code.Length: 1771837
targetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder
Fable 4.19.3: F# to Rust compiler (status: alpha)

Thanks to the contributor! @enricosada
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/spiral_builder/spiral_builder.fsproj...
target/Builder/spiral_builder> dotnet restore spiral_builder.fable-temp.csproj -p:FABLE_COMPILER=true -p:FABLE_COMPILER_4=true -p:FABLE_COMPILER_RUST=true -p:_LINUX=true
  Determining projects to restore...
  Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
  The last full restore is still up to date. Nothing left to do.
  Total time taken: 0 milliseconds
  Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
  Restoring /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fable-temp.csproj
  Starting restore process.
  Total time taken: 0 milliseconds
  Restored /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fable-temp.csproj (in 305 ms).
target/Builder/spiral_builder> dotnet restore /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fsproj
  Determining projects to restore...
  Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
  The last full restore is still up to date. Nothing left to do.
  Total time taken: 0 milliseconds
  Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
  Restoring /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fsproj
  Starting restore process.
  Total time taken: 0 milliseconds
  Restored /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fsproj (in 289 ms).
Project and references (14 source files) parsed in 6063ms

Started Fable compilation...

Fable compilation finished in 13706ms

./lib/spiral/date_time.fsx(1012,0): (1012,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/sm.fsx(414,0): (414,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/common.fsx(1425,0): (1425,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/async_.fsx(76,0): (76,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/crypto.fsx(1326,0): (1326,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/threading.fsx(145,0): (145,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/platform.fsx(104,0): (104,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/networking.fsx(4626,0): (4626,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/trace.fsx(1524,0): (1524,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/runtime.fsx(7219,0): (7219,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/file_system.fsx(11479,0): (11479,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
   Compiling spiral_builder v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/builder)
    Finished `release` profile [optimized] target(s) in 9.54s
     Running unittests spiral_builder.rs (/home/runner/work/polyglot/polyglot/workspace/target/release/deps/spiral_builder-927a7b57474f2564)

running 1 test
test module_7e2cd9e0::Spiral_builder::verify_app ... ok

successes:

successes:
    module_7e2cd9e0::Spiral_builder::verify_app

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Compiling spiral_builder v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/builder)
    Finished `release` profile [optimized] target(s) in 20.88s
In [ ]:
{ pwsh ../apps/parser/build.ps1 } | Invoke-Block
00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "DibParser.dib"])) }
00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
    "repl",
    "--exit-after-run",
    "--run",
    "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib",
    "--output-path",
    "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb",
]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ # DibParser (Polyglot)                                                       │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> #r 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> arsec.dll"
> #r 
> @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP
> arsecCS.dll"
> 
> ── pwsh ────────────────────────────────────────────────────────────────────────
> ls ~/.nuget/packages/argu
> 
> ╭─[ 235.83ms - stdout ]────────────────────────────────────────────────────────╮
> │ 6.2.4                                                                        │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open FParsec
> open SpiralFileSystem.Operators
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## escapeCell (test)                                                         │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let inline escapeCell input =
>     input
>     |> SpiralSm.split "\n"
>     |> Array.map (function
>         | line when line |> SpiralSm.starts_with "\\#!" || line |> 
> SpiralSm.starts_with "\\#r" ->
>             System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#")
>         | line -> line
>     )
>     |> SpiralSm.concat "\n"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> $"a{nl}\\#!magic{nl}b{nl}"
> |> escapeCell
> |> _assertEqual (
>     $"a{nl}#!magic{nl}b{nl}"
> )
> 
> ╭─[ 40.58ms - stdout ]─────────────────────────────────────────────────────────╮
> │ "a                                                                           │
> │ #!magic                                                                      │
> │ b                                                                            │
> │ "                                                                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## magicMarker                                                               │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let magicMarker : Parser<string, unit> = pstring "#!"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!magic"
> |> run magicMarker
> |> _assertEqual (
>     Success ("#!", (), Position ("", 2, 1, 3))
> )
> 
> ╭─[ 54.09ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success: "#!"                                                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "##!magic"
> |> run magicMarker
> |> _assertEqual (
>     Failure (
>         $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}",
>         ParserError (
>             Position ("", 0, 1, 1),
>             (),
>             ErrorMessageList (ExpectedString "#!")
>         ),
>         ()
>     )
> )
> 
> ╭─[ 23.52ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Failure:                                                                     │
> │ Error in Ln: 1 Col: 1                                                        │
> │ ##!magic                                                                     │
> │ ^                                                                            │
> │ Expecting: '#!'                                                              │
> │                                                                              │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## magicCommand                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let magicCommand =
>     magicMarker
>     >>. manyTill anyChar newline
>     |>> (System.String.Concat >> SpiralSm.trim)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!magic
> 
> a"
> |> run magicCommand
> |> _assertEqual (
>     Success ("magic", (), Position ("", 8, 2, 1))
> )
> 
> ╭─[ 14.68ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success: "magic"                                                             │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> " #!magic
> 
> a"
> |> run magicCommand
> |> _assertEqual (
>     Failure (
>         $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}",
>         ParserError (
>             Position ("", 0, 1, 1),
>             (),
>             ErrorMessageList (ExpectedString "#!")
>         ),
>         ()
>     )
> )
> 
> ╭─[ 14.12ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Failure:                                                                     │
> │ Error in Ln: 1 Col: 1                                                        │
> │  #!magic                                                                     │
> │ ^                                                                            │
> │ Expecting: '#!'                                                              │
> │                                                                              │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## content                                                                   │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let content =
>     (newline >>. magicMarker) <|> (eof >>. preturn "")
>     |> attempt
>     |> lookAhead
>     |> manyTill anyChar
>     |>> (System.String.Concat >> SpiralSm.trim)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!magic
> 
> 
> a
> 
> 
> "
> |> run content
> |> _assertEqual (
>     Success ("#!magic
> 
> 
> a", (), Position ("", 14, 7, 1))
> )
> 
> ╭─[ 12.94ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success: "#!magic                                                            │
> │                                                                              │
> │                                                                              │
> │ a"                                                                           │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## Output                                                                    │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Output =
>     | Fs
>     | Md
>     | Spi
>     | Spir
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## Magic                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Magic =
>     | Fsharp
>     | Markdown
>     | Spiral of Output
>     | Magic of string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## kernelOutputs                                                             │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline kernelOutputs magic =
>     match magic with
>     | Fsharp -> [[ Fs ]]
>     | Markdown -> [[ Md ]]
>     | Spiral output -> [[ output ]]
>     | _ -> [[]]
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## Block                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Block =
>     {
>         magic : Magic
>         content : string
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## block                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let block =
>     pipe2
>         magicCommand
>         content
>         (fun magic content ->
>             let magic, content =
>                 match magic with
>                 | "fsharp" -> Fsharp, content
>                 | "markdown" -> Markdown, content
>                 | "spiral" ->
>                     let output = if content |> SpiralSm.contains "//// real\n" 
> then Spir else Spi
>                     let content =
>                         if output = Spi
>                         then content
>                         else
>                             content
>                             |> SpiralSm.replace "//// real\n\n" ""
>                             |> SpiralSm.replace "//// real\n" ""
>                     Spiral output, content
>                 | magic -> magic |> Magic, content
>             {
>                 magic = magic
>                 content = content
>             })
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!magic
> 
> 
> a
> 
> 
> "
> |> run block
> |> _assertEqual (
>     Success (
>         { magic = Magic "magic"; content = "a" },
>         (),
>         Position ("", 14, 7, 1)
>     )
> )
> 
> ╭─[ 23.31ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success: { magic = Magic "magic"                                             │
> │   content = "a" }                                                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## blocks                                                                    │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let blocks =
>     skipMany newline
>     >>. sepEndBy block (skipMany1 newline)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> 
> "#!magic1
> 
> a
> 
> \#!magic2
> 
> b
> 
> "
> |> escapeCell
> |> run blocks
> |> _assertEqual (
>     Success (
>         [[
>             { magic = Magic "magic1"; content = "a" }
>             { magic = Magic "magic2"; content = "b" }
>         ]],
>         (),
>         Position ("", 26, 9, 1)
>     )
> )
> 
> ╭─[ 22.89ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success: [{ magic = Magic "magic1"                                           │
> │    content = "a" }; { magic = Magic "magic2"                                 │
> │                       content = "b" }]                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## formatBlock                                                               │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline formatBlock output (block : Block) =
>     match output, block with
>     | output, { magic = Markdown; content = content } ->
>         let markdownComment =
>             match output with
>             | Spi | Spir -> "/// "
>             | Fs -> "/// "
>             | _ -> ""
>         content
>         |> SpiralSm.split "\n"
>         |> Array.map (SpiralSm.trim_end [[||]])
>         |> Array.filter (SpiralSm.ends_with " (test)" >> not)
>         |> Array.map (function
>             | "" -> markdownComment
>             | line -> System.Text.RegularExpressions.Regex.Replace (line, 
> "^\\s*", $"$&{markdownComment}")
>         )
>         |> SpiralSm.concat "\n"
>     | Fs, { magic = Fsharp; content = content } ->
>         let trimmedContent = content |> SpiralSm.trim
>         if trimmedContent |> SpiralSm.contains "//// test\n"
>             || trimmedContent |> SpiralSm.contains "//// ignore\n"
>         then ""
>         else
>             content
>             |> SpiralSm.split "\n"
>             |> Array.filter (SpiralSm.trim_start [[||]] >> SpiralSm.starts_with 
> "#r" >> not)
>             |> SpiralSm.concat "\n"
>     | (Spi | Spir), { magic = Spiral output'; content = content } when output' =
> output ->
>         let trimmedContent = content |> SpiralSm.trim
>         if trimmedContent |> SpiralSm.contains "//// test\n"
>             || trimmedContent |> SpiralSm.contains "//// ignore\n"
>         then ""
>         else content
>     | _ -> ""
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!markdown
> 
> 
> a
> 
>     b
> 
> c
> 
> 
> \#!markdown
> 
> 
> c
> 
> 
> \#!fsharp
> 
> 
> let a = 1"
> |> escapeCell
> |> run block
> |> function
>     | Success (block, _, _) -> formatBlock Fs block
>     | Failure (msg, _, _) -> failwith msg
> |> _assertEqual "/// a
> /// 
>     /// b
> /// 
> /// c"
> 
> ╭─[ 29.85ms - stdout ]─────────────────────────────────────────────────────────╮
> │ "/// a                                                                       │
> │ ///                                                                          │
> │     /// b                                                                    │
> │ ///                                                                          │
> │ /// c"                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## formatBlocks                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline formatBlocks output blocks =
>     blocks
>     |> List.map (fun block ->
>         block, formatBlock output block
>     )
>     |> List.filter (snd >> (<>) "")
>     |> fun list ->
>         (list, (None, [[]]))
>         ||> List.foldBack (fun (block, content) (lastMagic, acc) ->
>             let lineBreak =
>                 if block.magic = Markdown && lastMagic <> Some Markdown && 
> lastMagic <> None
>                 then ""
>                 else "\n"
>             Some block.magic, $"{content}{lineBreak}" :: acc
>         )
>     |> snd
>     |> SpiralSm.concat "\n"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> "#!markdown
> 
> 
> a
> 
> b
> 
> 
> \#!markdown
> 
> 
> c
> 
> 
> \#!fsharp
> 
> 
> let a = 1
> 
> \#!markdown
> 
> d (test)
> 
> \#!fsharp
> 
> //// test
> 
> let a = 2
> 
> \#!markdown
> 
> e
> 
> \#!fsharp
> 
> let a = 3"
> |> escapeCell
> |> run blocks
> |> function
>     | Success (blocks, _, _) -> formatBlocks Fs blocks
>     | Failure (msg, _, _) -> failwith msg
> |> _assertEqual "/// a
> /// 
> /// b
> 
> /// c
> let a = 1
> 
> /// e
> let a = 3
> "
> 
> ╭─[ 36.19ms - stdout ]─────────────────────────────────────────────────────────╮
> │ "/// a                                                                       │
> │ ///                                                                          │
> │ /// b                                                                        │
> │                                                                              │
> │ /// c                                                                        │
> │ let a = 1                                                                    │
> │                                                                              │
> │ /// e                                                                        │
> │ let a = 3                                                                    │
> │ "                                                                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## parse                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline parse output input =
>     match run blocks input with
>     | Success (blocks, _, _) ->
>         let blocks =
>             blocks
>             |> List.filter (fun block ->
>                 block.magic |> kernelOutputs |> List.contains output || 
> block.magic = Markdown
>             )
> 
>         match blocks with
>         | { magic = Markdown; content = content } :: _
>             when output = Fs
>             && content |> SpiralSm.starts_with "# "
>             && content |> SpiralSm.ends_with ")"
>             ->
>             let inline indentBlock (block : Block) =
>                 { block with
>                     content =
>                         block.content
>                         |> SpiralSm.split "\n"
>                         |> Array.fold
>                             (fun (lines, isMultiline) line ->
>                                 let trimmedLine = line |> SpiralSm.trim
>                                 if trimmedLine = ""
>                                 then "" :: lines, isMultiline
>                                 else
>                                     let inline singleQuoteLine () =
>                                         trimmedLine |> Seq.sumBy ((=) '"' >> 
> System.Convert.ToInt32) = 1
>                                         && trimmedLine |> SpiralSm.contains 
> @"'""'" |> not
>                                         && trimmedLine |> SpiralSm.ends_with "{"
> |> not
>                                         && trimmedLine |> SpiralSm.ends_with 
> "{|" |> not
>                                         && trimmedLine |> SpiralSm.starts_with 
> "}" |> not
>                                         && trimmedLine |> SpiralSm.starts_with 
> "|}" |> not
> 
>                                     match isMultiline, trimmedLine |> 
> SpiralSm.split_string [[| $"{q}{q}{q}" |]] with
>                                     | false, [[| _; _ |]] ->
>                                         $"    {line}" :: lines, true
> 
>                                     | true, [[| _; _ |]] ->
>                                         line :: lines, false
> 
>                                     | false, _ when singleQuoteLine () ->
>                                         $"    {line}" :: lines, true
> 
>                                     | false, _ when line |> SpiralSm.starts_with
> "#" && block.magic = Fsharp ->
>                                         line :: lines, false
> 
>                                     | false, _ ->
>                                         $"    {line}" :: lines, false
> 
>                                     | true, _ when singleQuoteLine () && line |>
> SpiralSm.starts_with "    " ->
>                                         $"    {line}" :: lines, false
> 
>                                     | true, _ when singleQuoteLine () ->
>                                         line :: lines, false
> 
>                                     | true, _ ->
>                                         line :: lines, true
>                             )
>                             ([[]], false)
>                         |> fst
>                         |> List.rev
>                         |> SpiralSm.concat "\n"
>                 }
> 
>             let moduleName, namespaceName =
>                 System.Text.RegularExpressions.Regex.Match (content, @"# (.*) 
> \((.*)\)$")
>                 |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value
> 
>             let moduleBlock =
>                 {
>                     magic = Fsharp
>                     content =
>                         $"#if !INTERACTIVE
> namespace {namespaceName}
> #endif
> 
> module {moduleName} ="
>                 }
> 
>             blocks
>             |> List.indexed
>             |> List.fold
>                 (fun blocks (index, block) ->
>                     match index with
>                     | 0 -> blocks
>                     | 1 -> indentBlock block :: moduleBlock :: blocks
>                     | _ -> indentBlock block :: blocks
>                 )
>                 [[]]
>             |> List.rev
>         | _ -> blocks
>         |> Result.Ok
>     | Failure (errorMsg, _, _) -> Result.Error errorMsg
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let example1 =
>     $"""#!meta
> 
> {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name":
> "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}}
> 
> \#!markdown
> 
> # TestModule (TestNamespace)
> 
> \#!fsharp
> 
> \#!import file.dib
> 
> \#!fsharp
> 
> \#r "nuget:Expecto"
> 
> \#!markdown
> 
> ## ParserLibrary
> 
> \#!fsharp
> 
> open System
> 
> \#!markdown
> 
> ## x (test)
> 
> \#!fsharp
> 
> //// ignore
> 
> let x = 1
> 
> \#!spiral
> 
> //// test
> 
> inl x = 1i32
> 
> \#!spiral
> 
> //// real
> 
> inl x = 2i32
> 
> \#!spiral
> 
> inl x = 3i32
> 
> \#!markdown
> 
> ### TextInput
> 
> \#!fsharp
> 
> let str1 = "abc
> def"
> 
> let str2 =
>     "abc\
> def"
> 
> let str3 =
>     $"1{{
>         1
>     }}1"
> 
> let str4 =
>     $"1{{({{|
>         a = 1
>     |}}).a}}1"
> 
> let str5 =
>     "abc \
>         def"
> 
> let x =
>     match '"' with
>     | '"' -> true
>     | _ -> false
> 
> let long1 = {q}{q}{q}a{q}{q}{q}
> 
> let long2 =
>     {q}{q}{q}
> a
> {q}{q}{q}
> 
> \#!fsharp
> 
> type Position =
>     {{
> #if INTERACTIVE
>         line : string
> #else
>         line : int
> #endif
>         column : int
>     }}"""
>     |> escapeCell
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> example1
> |> parse Fs
> |> Result.toOption
> |> Option.get
> |> (formatBlocks Fs)
> |> _assertEqual $"""#if !INTERACTIVE
> namespace TestNamespace
> #endif
> 
> module TestModule =
> 
>     /// ## ParserLibrary
>     open System
> 
>     /// ### TextInput
>     let str1 = "abc
> def"
> 
>     let str2 =
>         "abc\
> def"
> 
>     let str3 =
>         $"1{{
>             1
>         }}1"
> 
>     let str4 =
>         $"1{{({{|
>             a = 1
>         |}}).a}}1"
> 
>     let str5 =
>         "abc \
>             def"
> 
>     let x =
>         match '"' with
>         | '"' -> true
>         | _ -> false
> 
>     let long1 = {q}{q}{q}a{q}{q}{q}
> 
>     let long2 =
>         {q}{q}{q}
> a
> {q}{q}{q}
> 
>     type Position =
>         {{
> #if INTERACTIVE
>             line : string
> #else
>             line : int
> #endif
>             column : int
>         }}
> """
> 
> ╭─[ 92.19ms - stdout ]─────────────────────────────────────────────────────────╮
> │ "#if !INTERACTIVE                                                            │
> │ namespace TestNamespace                                                      │
> │ #endif                                                                       │
> │                                                                              │
> │ module TestModule =                                                          │
> │                                                                              │
> │     /// ## ParserLibrary                                                     │
> │     open System                                                              │
> │                                                                              │
> │     /// ### TextInput                                                        │
> │     let str1 = "abc                                                          │
> │ def"                                                                         │
> │                                                                              │
> │     let str2 =                                                               │
> │         "abc\                                                                │
> │ def"                                                                         │
> │                                                                              │
> │     let str3 =                                                               │
> │         $"1{                                                                 │
> │             1                                                                │
> │         }1"                                                                  │
> │                                                                              │
> │     let str4 =                                                               │
> │         $"1{({|                                                              │
> │             a = 1                                                            │
> │         |}).a}1"                                                             │
> │                                                                              │
> │     let str5 =                                                               │
> │         "abc \                                                               │
> │             def"                                                             │
> │                                                                              │
> │     let x =                                                                  │
> │         match '"' with                                                       │
> │         | '"' -> true                                                        │
> │         | _ -> false                                                         │
> │                                                                              │
> │     let long1 = """a"""                                                      │
> │                                                                              │
> │     let long2 =                                                              │
> │         """                                                                  │
> │ a                                                                            │
> │ """                                                                          │
> │                                                                              │
> │     type Position =                                                          │
> │         {                                                                    │
> │ #if INTERACTIVE                                                              │
> │             line : string                                                    │
> │ #else                                                                        │
> │             line : int                                                       │
> │ #endif                                                                       │
> │             column : int                                                     │
> │         }                                                                    │
> │ "                                                                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> example1
> |> parse Md
> |> Result.toOption
> |> Option.get
> |> (formatBlocks Md)
> |> _assertEqual "# TestModule (TestNamespace)
> 
> ## ParserLibrary
> 
> ### TextInput
> "
> 
> ╭─[ 81.46ms - stdout ]─────────────────────────────────────────────────────────╮
> │ "# TestModule (TestNamespace)                                                │
> │                                                                              │
> │ ## ParserLibrary                                                             │
> │                                                                              │
> │ ### TextInput                                                                │
> │ "                                                                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> example1
> |> parse Spi
> |> Result.toOption
> |> Option.get
> |> (formatBlocks Spi)
> |> _assertEqual "/// # TestModule (TestNamespace)
> 
> /// ## ParserLibrary
> inl x = 3i32
> 
> /// ### TextInput
> "
> 
> ╭─[ 83.15ms - stdout ]─────────────────────────────────────────────────────────╮
> │ "/// # TestModule (TestNamespace)                                            │
> │                                                                              │
> │ /// ## ParserLibrary                                                         │
> │ inl x = 3i32                                                                 │
> │                                                                              │
> │ /// ### TextInput                                                            │
> │ "                                                                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> example1
> |> parse Spir
> |> Result.toOption
> |> Option.get
> |> (formatBlocks Spir)
> |> _assertEqual "/// # TestModule (TestNamespace)
> 
> /// ## ParserLibrary
> inl x = 2i32
> 
> /// ### TextInput
> "
> 
> ╭─[ 106.51ms - stdout ]────────────────────────────────────────────────────────╮
> │ "/// # TestModule (TestNamespace)                                            │
> │                                                                              │
> │ /// ## ParserLibrary                                                         │
> │ inl x = 2i32                                                                 │
> │                                                                              │
> │ /// ### TextInput                                                            │
> │ "                                                                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## parseDibCode                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline parseDibCode output file = async {
>     trace Debug
>         (fun () -> "parseDibCode")
>         (fun () -> $"output: {output} / file: {file} / {_locals ()}")
>     let! input = file |> SpiralFileSystem.read_all_text_async
>     match parse output input with
>     | Result.Ok blocks -> return blocks |> formatBlocks output
>     | Result.Error msg -> return failwith msg
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## writeDibCode                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline writeDibCode output path = async {
>     trace Debug
>         (fun () -> "writeDibCode")
>         (fun () -> $"output: {output} / path: {path} / {_locals ()}")
>     let! result = parseDibCode output path
>     let pathDir = path |> System.IO.Path.GetDirectoryName
>     let fileNameWithoutExt =
>         match output, path |> System.IO.Path.GetFileNameWithoutExtension with
>         | Spir, fileNameWithoutExt -> $"real_{fileNameWithoutExt}"
>         | _, fileNameWithoutExt -> fileNameWithoutExt
>     let outputPath = pathDir </> $"{fileNameWithoutExt}.{output |> string |> 
> SpiralSm.to_lower}"
>     do! result |> SpiralFileSystem.write_all_text_async outputPath
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## Arguments                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> [[<RequireQualifiedAccess>]]
> type Arguments =
>     | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]]
>         File of file : string * Output
> 
>     interface Argu.IArgParserTemplate with
>         member s.Usage =
>             match s with
>             | File _ -> nameof File
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
> 
> ╭─[ 68.15ms - return value ]───────────────────────────────────────────────────╮
> │ "USAGE: dotnet-repl [--help] <file> <fs|md|spi|spir>                         │
> │                                                                              │
> │ FILE:                                                                        │
> │                                                                              │
> │     <file> <fs|md|spi|spir>                                                  │
> │                           File                                               │
> │                                                                              │
> │ OPTIONS:                                                                     │
> │                                                                              │
> │     --help                display this list of options.                      │
> │ "                                                                            │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## main                                                                      │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let main args =
>     let argsMap = args |> Runtime.parseArgsMap<Arguments>
> 
>     let files =
>         argsMap.[[nameof Arguments.File]]
>         |> List.map (function
>             | Arguments.File (path, output) -> path, output
>         )
> 
>     files
>     |> List.map (fun (path, output) -> path |> writeDibCode output)
>     |> Async.Parallel
>     |> Async.Ignore
>     |> Async.runWithTimeout 30000
>     |> function
>         | Some () -> 0
>         | None -> 1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let args =
>     System.Environment.GetEnvironmentVariable "ARGS"
>     |> SpiralRuntime.split_args
>     |> Result.toArray
>     |> Array.collect id
> 
> match args with
> | [[||]] -> 0
> | args -> if main args = 0 then 0 else failwith "main failed"
> 
> ╭─[ 126.46ms - return value ]──────────────────────────────────────────────────╮
> │ <div class="dni-plaintext"><pre>0                                            │
> │ </pre></div><style>                                                          │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 127.80ms - stdout ]────────────────────────────────────────────────────────╮
> │ 00:00:03   debug #1 writeDibCode / output: Fs / path: DibParser.dib     │
> │ 00:00:03   debug #2 parseDibCode / output: Fs / file: DibParser.dib     │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 50285 }
00:00:16   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
    "nbconvert",
    "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb",
    "--to",
    "html",
    "--HTMLExporter.theme=dark",
]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:17 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb to html
00:00:17 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:17 verbose #7 !   validate(nb)
00:00:18 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:18 verbose #9 !   return _pygments_highlight(
00:00:18 verbose #10 ! [NbConvertApp] Writing 377326 bytes to /home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.html
00:00:18 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 }
00:00:18   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 }
00:00:18   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
    "-c",
    "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:18 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:18   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:18   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 51248 }
00:00:00   debug #1 persistCodeProject / packages: [Argu; FParsec; FSharp.Control.AsyncSeq; ... ] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: DibParser / hash:  / code.Length: 10861
00:00:00   debug #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj
00:00:00   debug #1 runtime.execute_with_options_async / { options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/parser/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/DibParser" } }
00:00:00 verbose #2 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:00 verbose #3 >   Determining projects to restore...
00:00:01 verbose #4 >   Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
00:00:01 verbose #5 >   The last full restore is still up to date. Nothing left to do.
00:00:01 verbose #6 >   Total time taken: 0 milliseconds
00:00:01 verbose #7 >   Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
00:00:01 verbose #8 >   Restoring /home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj
00:00:01 verbose #9 >   Starting restore process.
00:00:02 verbose #10 >   Total time taken: 0 milliseconds
00:00:02 verbose #11 >   Restored /home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj (in 311 ms).
00:00:02 verbose #12 > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj]
00:00:12 verbose #13 >   DibParser -> /home/runner/work/polyglot/polyglot/target/Builder/DibParser/bin/Release/net9.0/linux-x64/DibParser.dll
00:00:12 verbose #14 >   DibParser -> /home/runner/work/polyglot/polyglot/apps/parser/dist
00:00:12   debug #15 runtime.execute_with_options_async / { exit_code = 0; output_length = 1102 }
00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "JsonParser.dib"])) }
00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
    "repl",
    "--exit-after-run",
    "--run",
    "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib",
    "--output-path",
    "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb",
]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ # JsonParser (Polyglot)                                                      │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open Parser
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## JsonParser                                                                │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> (*
> // --------------------------------
> JSON spec from http://www.json.org/
> // --------------------------------
> 
> The JSON spec is available at [[json.org]](http://www.json.org/). I'll paraphase
> it here:
> 
> * A `value` can be a `string` or a `number` or a `bool` or `null` or an `object`
> or an `array`.
>   * These structures can be nested.
> * A `string` is a sequence of zero or more Unicode characters, wrapped in double
> quotes, using backslash escapes.
> * A `number` is very much like a C or Java number, except that the octal and 
> hexadecimal formats are not used.
> * A `boolean` is the literal `true` or `false`
> * A `null` is the literal `null`
> * An `object` is an unordered set of name/value pairs.
>   * An object begins with { (left brace) and ends with } (right brace).
>   * Each name is followed by : (colon) and the name/value pairs are separated by
> , (comma).
> * An `array` is an ordered collection of values.
>   * An array begins with [[ (left bracket) and ends with ]] (right bracket).
>   * Values are separated by , (comma).
> * Whitespace can be inserted between any pair of tokens.
> *)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let inline parserEqual (expected : ParseResult<'a>) (actual : ParseResult<'a * 
> Input>) =
>     match actual, expected with
>     | Success (_actual, _), Success _expected ->
>         printResult actual
>         _actual |> _assertEqual _expected
>     | Failure (l1, e1, p1), Failure (l2, e2, p2) when l1 = l2 && e1 = e2 && p1 =
> p2 ->
>         printResult actual
>     | _ ->
>         printfn $"Actual: {actual}"
>         printfn $"Expected: {expected}"
>         failwith "Parse failed"
>     actual
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### JValue                                                                   │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type JValue =
>     | JString of string
>     | JNumber of float
>     | JBool   of bool
>     | JNull
>     | JObject of Map<string, JValue>
>     | JArray  of JValue list
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jValue, jValueRef = createParserForwardedToRef<JValue> ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jNull                                                                    │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jNull =
>     pstring "null"
>     >>% JNull
>     <?> "null"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jValue "null"
> |> parserEqual (Success JNull)
> 
> ╭─[ 163.27ms - return value ]──────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNull, { lines = [                      │
> │ |&quot;null&quot;|]<br />                  position = { line = 0<br />       │
> │ column = 4 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNull, { lines = [|&quot;null&quot;|]<br />     │
> │ position = { line = 0<br />               column = 4 }                       │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNull</code></span></summary><div><table><thead> │
> │ <tr></tr></thead><tbody><tr><td>IsJString</td><td><div                       │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;null&quot;|]<br />  position = │
> │ { line = 0<br />               column = 4 }                                  │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ null                         │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 4                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>4                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 169.70ms - stdout ]────────────────────────────────────────────────────────╮
> │ JNull                                                                        │
> │ JNull                                                                        │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNull "nulp"
> |> parserEqual (
>     Failure (
>         "null",
>         "Unexpected 'p'",
>         { currentLine = "nulp"; line = 0; column = 3 }
>     )
> )
> 
> ╭─[ 35.86ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Failure (&quot;null&quot;, &quot;Unexpected      │
> │ &#39;p&#39;&quot;, { currentLine = &quot;nulp&quot;<br />                    │
> │ line = 0<br />                                     column = 3                │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&quot;null&quot;              │
> │ </pre></div></td></tr><tr><td>Item2</td><td><div                             │
> │ class="dni-plaintext"><pre>&quot;Unexpected &#39;p&#39;&quot;                │
> │ </pre></div></td></tr><tr><td>Item3</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
> │ currentLine = &quot;nulp&quot;<br />  line = 0<br />  column = 3             │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ currentLine</td><td><div class="dni-plaintext"><pre>&quot;nulp&quot;         │
> │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>3                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │
> │ ccess</td><td><div class="dni-plaintext"><pre>false                          │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 37.98ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Line:0 Col:3 Error parsing null                                              │
> │ nulp                                                                         │
> │    ^Unexpected 'p'                                                           │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jBool                                                                    │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jBool =
>     let jtrue =
>         pstring "true"
>         >>% JBool true
>     let jfalse =
>         pstring "false"
>         >>% JBool false
> 
>     jtrue <|> jfalse
>     <?> "bool"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jBool "true"
> |> parserEqual (Success (JBool true))
> 
> ╭─[ 30.04ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JBool true, { lines = [                 │
> │ |&quot;true&quot;|]<br />                       position = { line = 0<br />  │
> │ column = 4 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JBool true, { lines = [|&quot;true&quot;|]<br   │
> │ />  position = { line = 0<br />               column = 4 }                   │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JBool                                            │
> │ true</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< │
> │ td>Item</td><td><div class="dni-plaintext"><pre>true                         │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;true&quot;|]<br />  position = │
> │ { line = 0<br />               column = 4 }                                  │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ true                         │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 4                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>4                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 33.52ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JBool true                                                                   │
> │ JBool true                                                                   │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jBool "false"
> |> parserEqual (Success (JBool false))
> 
> ╭─[ 22.86ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JBool false, { lines = [                │
> │ |&quot;false&quot;|]<br />                        position = { line = 0<br   │
> │ />                                     column = 5 }                          │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JBool false, { lines = [|&quot;false&quot;|]<br │
> │ />  position = { line = 0<br />               column = 5 }                   │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JBool                                            │
> │ false</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │
> │ <td>Item</td><td><div class="dni-plaintext"><pre>false                       │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;false&quot;|]<br />  position  │
> │ = { line = 0<br />               column = 5 }                                │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ false                        │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 5                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>5                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 26.18ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JBool false                                                                  │
> │ JBool false                                                                  │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jBool "truX"
> |> parserEqual (
>     Failure (
>         "bool",
>         "Unexpected 't'",
>         { currentLine = "truX"; line = 0; column = 0 }
>     )
> )
> 
> ╭─[ 17.97ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Failure (&quot;bool&quot;, &quot;Unexpected      │
> │ &#39;t&#39;&quot;, { currentLine = &quot;truX&quot;<br />                    │
> │ line = 0<br />                                     column = 0                │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&quot;bool&quot;              │
> │ </pre></div></td></tr><tr><td>Item2</td><td><div                             │
> │ class="dni-plaintext"><pre>&quot;Unexpected &#39;t&#39;&quot;                │
> │ </pre></div></td></tr><tr><td>Item3</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
> │ currentLine = &quot;truX&quot;<br />  line = 0<br />  column = 0             │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ currentLine</td><td><div class="dni-plaintext"><pre>&quot;truX&quot;         │
> │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │
> │ ccess</td><td><div class="dni-plaintext"><pre>false                          │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 20.23ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Line:0 Col:0 Error parsing bool                                              │
> │ truX                                                                         │
> │ ^Unexpected 't'                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jUnescapedChar                                                           │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jUnescapedChar =
>     satisfy (fun ch -> ch <> '\\' && ch <> '\"') "char"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jUnescapedChar "a"
> |> parserEqual (Success 'a')
> 
> ╭─[ 34.78ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (&#39;a&#39;, { lines = [                │
> │ |&quot;a&quot;|]<br />                position = { line = 0<br />            │
> │ column = 1 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(a, { lines = [|&quot;a&quot;|]<br />  position  │
> │ = { line = 0<br />               column = 1 }                                │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&#39;a&#39;                   │
> │ </pre></div></td></tr><tr><td>Item2</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [  │
> │ |&quot;a&quot;|]<br />  position = { line = 0<br />               column = 1 │
> │ }                                                                            │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ a                            │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 1                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>1                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 37.86ms - stdout ]─────────────────────────────────────────────────────────╮
> │ 'a'                                                                          │
> │ 'a'                                                                          │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jUnescapedChar "\\"
> |> parserEqual (
>     Failure (
>         "char",
>         "Unexpected '\\'",
>         { currentLine = "\\"; line = 0; column = 0 }
>     )
> )
> 
> ╭─[ 25.44ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Failure (&quot;char&quot;, &quot;Unexpected      │
> │ &#39;\&#39;&quot;, { currentLine = &quot;\&quot;<br />                       │
> │ line = 0<br />                                     column = 0                │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&quot;char&quot;              │
> │ </pre></div></td></tr><tr><td>Item2</td><td><div                             │
> │ class="dni-plaintext"><pre>&quot;Unexpected &#39;\&#39;&quot;                │
> │ </pre></div></td></tr><tr><td>Item3</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
> │ currentLine = &quot;\&quot;<br />  line = 0<br />  column = 0                │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ currentLine</td><td><div class="dni-plaintext"><pre>&quot;\&quot;            │
> │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │
> │ ccess</td><td><div class="dni-plaintext"><pre>false                          │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 27.90ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Line:0 Col:0 Error parsing char                                              │
> │ \                                                                            │
> │ ^Unexpected '\'                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jEscapedChar                                                             │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jEscapedChar =
>     [[
>         ("\\\"",'\"')
>         ("\\\\",'\\')
>         ("\\/",'/')
>         ("\\b",'\b')
>         ("\\f",'\f')
>         ("\\n",'\n')
>         ("\\r",'\r')
>         ("\\t",'\t')
>     ]]
>     |> List.map (fun (toMatch, result) ->
>         pstring toMatch >>% result
>     )
>     |> choice
>     <?> "escaped char"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar "\\\\"
> |> parserEqual (Success '\\')
> 
> ╭─[ 23.01ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (&#39;\\&#39;, { lines = [               │
> │ |&quot;\\&quot;|]<br />                 position = { line = 0<br />          │
> │ column = 2 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(\, { lines = [|&quot;\\&quot;|]<br />  position │
> │ = { line = 0<br />               column = 2 }                                │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&#39;\\&#39;                  │
> │ </pre></div></td></tr><tr><td>Item2</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [  │
> │ |&quot;\\&quot;|]<br />  position = { line = 0<br />               column =  │
> │ 2 }                                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ \\                           │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 2                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>2                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 25.87ms - stdout ]─────────────────────────────────────────────────────────╮
> │ '\\'                                                                         │
> │ '\\'                                                                         │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar "\\t"
> |> parserEqual (Success '\t')
> 
> ╭─[ 19.61ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (&#39;\009&#39;, { lines = [             │
> │ |&quot;\t&quot;|]<br />                   position = { line = 0<br />        │
> │ column = 2 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(	, { lines = [|&quot;\t&quot;|]<br />  position = │
> │ { line = 0<br />               column = 2 }                                  │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&#39;\009&#39;                │
> │ </pre></div></td></tr><tr><td>Item2</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [  │
> │ |&quot;\t&quot;|]<br />  position = { line = 0<br />               column =  │
> │ 2 }                                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ \t                           │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 2                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>2                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 22.40ms - stdout ]─────────────────────────────────────────────────────────╮
> │ '\009'                                                                       │
> │ '\009'                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar @"\\"
> |> parserEqual (Success '\\')
> 
> ╭─[ 45.31ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (&#39;\\&#39;, { lines = [               │
> │ |&quot;\\&quot;|]<br />                 position = { line = 0<br />          │
> │ column = 2 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(\, { lines = [|&quot;\\&quot;|]<br />  position │
> │ = { line = 0<br />               column = 2 }                                │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&#39;\\&#39;                  │
> │ </pre></div></td></tr><tr><td>Item2</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [  │
> │ |&quot;\\&quot;|]<br />  position = { line = 0<br />               column =  │
> │ 2 }                                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ \\                           │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 2                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>2                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 48.27ms - stdout ]─────────────────────────────────────────────────────────╮
> │ '\\'                                                                         │
> │ '\\'                                                                         │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar @"\n"
> |> parserEqual (Success '\n')
> 
> ╭─[ 20.58ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (&#39;\010&#39;, { lines = [|&quot;<br   │
> │ />&quot;|]<br />                   position = { line = 0<br />               │
> │ column = 2 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(<br />, { lines = [|&quot;<br />&quot;|]<br />  │
> │ position = { line = 0<br />               column = 2 }                       │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&#39;\010&#39;                │
> │ </pre></div></td></tr><tr><td>Item2</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [  │
> │ |&quot;<br />&quot;|]<br />  position = { line = 0<br />                     │
> │ column = 2 }                                                                 │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ <br />                       │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 2                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>2                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 23.62ms - stdout ]─────────────────────────────────────────────────────────╮
> │ '\010'                                                                       │
> │ '\010'                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jEscapedChar "a"
> |> parserEqual (
>     Failure (
>         "escaped char",
>         "Unexpected 'a'",
>         { currentLine = "a"; line = 0; column = 0 }
>     )
> )
> 
> ╭─[ 18.24ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Failure (&quot;escaped char&quot;,               │
> │ &quot;Unexpected &#39;a&#39;&quot;, { currentLine = &quot;a&quot;<br />      │
> │ line = 0<br />                                             column = 0        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&quot;escaped char&quot;      │
> │ </pre></div></td></tr><tr><td>Item2</td><td><div                             │
> │ class="dni-plaintext"><pre>&quot;Unexpected &#39;a&#39;&quot;                │
> │ </pre></div></td></tr><tr><td>Item3</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
> │ currentLine = &quot;a&quot;<br />  line = 0<br />  column = 0                │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ currentLine</td><td><div class="dni-plaintext"><pre>&quot;a&quot;            │
> │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │
> │ ccess</td><td><div class="dni-plaintext"><pre>false                          │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 20.42ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Line:0 Col:0 Error parsing escaped char                                      │
> │ a                                                                            │
> │ ^Unexpected 'a'                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jUnicodeChar                                                             │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jUnicodeChar =
>     let backslash = pchar '\\'
>     let uChar = pchar 'u'
>     let hexdigit = anyOf ([[ '0' .. '9' ]] @ [[ 'A' .. 'F' ]] @ [[ 'a' .. 'f' 
> ]])
>     let fourHexDigits = hexdigit .>>. hexdigit .>>. hexdigit .>>. hexdigit
> 
>     let inline convertToChar (((h1, h2), h3), h4) =
>         let str = $"%c{h1}%c{h2}%c{h3}%c{h4}"
>         Int32.Parse (str, Globalization.NumberStyles.HexNumber) |> char
> 
>     backslash >>. uChar >>. fourHexDigits
>     |>> convertToChar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jUnicodeChar "\\u263A"
> |> parserEqual (Success '☺')
> 
> ╭─[ 28.00ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (&#39;☺&#39;, { lines = [                │
> │ |&quot;\u263A&quot;|]<br />                position = { line = 0<br />       │
> │ column = 6 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(☺, { lines = [|&quot;\u263A&quot;|]<br />       │
> │ position = { line = 0<br />               column = 6 }                       │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&#39;☺&#39;                   │
> │ </pre></div></td></tr><tr><td>Item2</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [  │
> │ |&quot;\u263A&quot;|]<br />  position = { line = 0<br />                     │
> │ column = 6 }                                                                 │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ \u263A                       │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 6                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>6                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 31.05ms - stdout ]─────────────────────────────────────────────────────────╮
> │ '☺'                                                                          │
> │ '☺'                                                                          │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jString                                                                  │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let quotedString =
>     let quote = pchar '\"' <?> "quote"
>     let jchar = jUnescapedChar <|> jEscapedChar <|> jUnicodeChar
> 
>     quote >>. manyChars jchar .>> quote
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jString =
>     quotedString
>     |>> JString
>     <?> "quoted string"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>             jString
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"\""
> |> parserEqual (Success (JString ""))
> 
> ╭─[ 30.35ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JString &quot;&quot;, { lines = [       │
> │ |&quot;&quot;&quot;&quot;|]<br />                       position = { line =  │
> │ 0<br />                                    column = 2 }                      │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JString &quot;&quot;, { lines = [               │
> │ |&quot;&quot;&quot;&quot;|]<br />  position = { line = 0<br />               │
> │ column = 2 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JString                                          │
> │ &quot;&quot;</code></span></summary><div><table><thead><tr></tr></thead><tbo │
> │ dy><tr><td>Item</td><td><div class="dni-plaintext"><pre>&quot;&quot;         │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;&quot;&quot;&quot;|]<br />     │
> │ position = { line = 0<br />               column = 2 }                       │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ &quot;&quot;                 │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 2                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>2                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 34.17ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JString ""                                                                   │
> │ JString ""                                                                   │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"a\""
> |> parserEqual (Success (JString "a"))
> 
> ╭─[ 21.23ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JString &quot;a&quot;, { lines = [      │
> │ |&quot;&quot;a&quot;&quot;|]<br />                        position = { line  │
> │ = 0<br />                                     column = 3 }                   │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JString &quot;a&quot;, { lines = [              │
> │ |&quot;&quot;a&quot;&quot;|]<br />  position = { line = 0<br />              │
> │ column = 3 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JString                                          │
> │ &quot;a&quot;</code></span></summary><div><table><thead><tr></tr></thead><tb │
> │ ody><tr><td>Item</td><td><div class="dni-plaintext"><pre>&quot;a&quot;       │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;&quot;a&quot;&quot;|]<br />    │
> │ position = { line = 0<br />               column = 3 }                       │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ &quot;a&quot;                │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 3                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>3                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 24.64ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JString "a"                                                                  │
> │ JString "a"                                                                  │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"ab\""
> |> parserEqual (Success (JString "ab"))
> 
> ╭─[ 20.49ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JString &quot;ab&quot;, { lines = [     │
> │ |&quot;&quot;ab&quot;&quot;|]<br />                         position = {     │
> │ line = 0<br />                                      column = 4 }             │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JString &quot;ab&quot;, { lines = [             │
> │ |&quot;&quot;ab&quot;&quot;|]<br />  position = { line = 0<br />             │
> │ column = 4 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JString                                          │
> │ &quot;ab&quot;</code></span></summary><div><table><thead><tr></tr></thead><t │
> │ body><tr><td>Item</td><td><div class="dni-plaintext"><pre>&quot;ab&quot;     │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;&quot;ab&quot;&quot;|]<br />   │
> │ position = { line = 0<br />               column = 4 }                       │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ &quot;ab&quot;               │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 4                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>4                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 23.78ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JString "ab"                                                                 │
> │ JString "ab"                                                                 │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"ab\\tde\""
> |> parserEqual (Success (JString "ab\tde"))
> 
> ╭─[ 21.53ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JString &quot;ab	de&quot;, { lines = [    │
> │ |&quot;&quot;ab\tde&quot;&quot;|]<br />                            position  │
> │ = { line = 0<br />                                         column = 8 }      │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JString &quot;ab	de&quot;, { lines = [            │
> │ |&quot;&quot;ab\tde&quot;&quot;|]<br />  position = { line = 0<br />         │
> │ column = 8 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JString &quot;ab	                                  │
> │ de&quot;</code></span></summary><div><table><thead><tr></tr></thead><tbody>< │
> │ tr><td>Item</td><td><div class="dni-plaintext"><pre>&quot;ab	de&quot;          │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><t...ni-treeview"><summary><span class="dni-code-hint"><code>{ lines = │
> │ [|&quot;&quot;ab\tde&quot;&quot;|]<br />  position = { line = 0<br />        │
> │ column = 8 }                                                                 │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ &quot;ab\tde&quot;           │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 8                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>8                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 25.35ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JString "ab	de"                                                                │
> │ JString "ab	de"                                                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jString "\"ab\\u263Ade\""
> |> parserEqual (Success (JString "ab☺de"))
> 
> ╭─[ 21.90ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JString &quot;ab☺de&quot;, { lines = [  │
> │ |&quot;&quot;ab\u263Ade&quot;&quot;|]<br />                                  │
> │ position = { line = 0<br />                                         column = │
> │ 12 }                                                                         │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JString &quot;ab☺de&quot;, { lines = [          │
> │ |&quot;&quot;ab\u263Ade&quot;&quot;|]<br />  position = { line = 0<br />     │
> │ column = 12 }                                                                │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JString                                          │
> │ &quot;ab☺de&quot;</code></span></summary><div><table><thead><tr></tr></thead │
> │ ><tbody><tr><td>Item</td><td><div                                            │
> │ class="dni-plaintext"><pre>&quot;ab☺de&quot;                                 │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>It.. │
> │ ."><summary><span class="dni-code-hint"><code>{ lines = [                    │
> │ |&quot;&quot;ab\u263Ade&quot;&quot;|]<br />  position = { line = 0<br />     │
> │ column = 12 }                                                                │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ &quot;ab\u263Ade&quot;       │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 12                                                         │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>12                                                │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 25.41ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JString "ab☺de"                                                              │
> │ JString "ab☺de"                                                              │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jNumber                                                                  │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jNumber =
>     let optSign = opt (pchar '-')
> 
>     let zero = pstring "0"
> 
>     let digitOneNine =
>         satisfy (fun ch -> Char.IsDigit ch && ch <> '0') "1-9"
> 
>     let digit =
>         satisfy Char.IsDigit "digit"
> 
>     let point = pchar '.'
> 
>     let e = pchar 'e' <|> pchar 'E'
> 
>     let optPlusMinus = opt (pchar '-' <|> pchar '+')
> 
>     let nonZeroInt =
>         digitOneNine .>>. manyChars digit
>         |>> fun (first, rest) -> string first + rest
> 
>     let intPart = zero <|> nonZeroInt
> 
>     let fractionPart = point >>. manyChars1 digit
> 
>     let exponentPart = e >>. optPlusMinus .>>. manyChars1 digit
> 
>     let inline (|>?) opt f =
>         match opt with
>         | None -> ""
>         | Some x -> f x
> 
>     let inline convertToJNumber (((optSign, intPart), fractionPart), expPart) =
>         let signStr =
>             optSign
>             |>? string
> 
>         let fractionPartStr =
>             fractionPart
>             |>? (fun digits -> "." + digits)
> 
>         let expPartStr =
>             expPart
>             |>? fun (optSign, digits) ->
>                 let sign = optSign |>? string
>                 "e" + sign + digits
> 
>         (signStr + intPart + fractionPartStr + expPartStr)
>         |> float
>         |> JNumber
> 
>     optSign .>>. intPart .>>. opt fractionPart .>>. opt exponentPart
>     |>> convertToJNumber
>     <?> "number"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>             jString
>             jNumber
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "123"
> |> parserEqual (Success (JNumber 123.0))
> 
> ╭─[ 37.78ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber 123.0, { lines = [              │
> │ |&quot;123&quot;|]<br />                          position = { line = 0<br   │
> │ />                                       column = 3 }                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber 123.0, { lines = [|&quot;123&quot;|]<br │
> │ />  position = { line = 0<br />               column = 3 }                   │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │
> │ <td>Item</td><td><div class="dni-plaintext"><pre>123.0                       │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;123&quot;|]<br />  position =  │
> │ { line = 0<br />               column = 3 }                                  │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ 123                          │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 3                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>3                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 40.97ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber 123.0                                                                │
> │ JNumber 123.0                                                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "-123"
> |> parserEqual (Success (JNumber -123.0))
> 
> ╭─[ 22.87ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber -123.0, { lines = [             │
> │ |&quot;-123&quot;|]<br />                           position = { line = 0<br │
> │ />                                        column = 4 }                       │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber -123.0, { lines = [                     │
> │ |&quot;-123&quot;|]<br />  position = { line = 0<br />               column  │
> │ = 4 }                                                                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr │
> │ ><td>Item</td><td><div class="dni-plaintext"><pre>-123.0                     │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;-123&quot;|]<br />  position = │
> │ { line = 0<br />               column = 4 }                                  │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ -123                         │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 4                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>4                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 26.02ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber -123.0                                                               │
> │ JNumber -123.0                                                               │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "123.4"
> |> parserEqual (Success (JNumber 123.4))
> 
> ╭─[ 22.73ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber 123.4, { lines = [              │
> │ |&quot;123.4&quot;|]<br />                          position = { line = 0<br │
> │ />                                       column = 5 }                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber 123.4, { lines = [                      │
> │ |&quot;123.4&quot;|]<br />  position = { line = 0<br />               column │
> │ = 5 }                                                                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │
> │ <td>Item</td><td><div class="dni-plaintext"><pre>123.4                       │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;123.4&quot;|]<br />  position  │
> │ = { line = 0<br />               column = 5 }                                │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ 123.4                        │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 5                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>5                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 25.93ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber 123.4                                                                │
> │ JNumber 123.4                                                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "-123."
> |> parserEqual (Success (JNumber -123.0))
> 
> ╭─[ 21.56ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber -123.0, { lines = [             │
> │ |&quot;-123.&quot;|]<br />                           position = { line =     │
> │ 0<br />                                        column = 4 }                  │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber -123.0, { lines = [                     │
> │ |&quot;-123.&quot;|]<br />  position = { line = 0<br />               column │
> │ = 4 }                                                                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr │
> │ ><td>Item</td><td><div class="dni-plaintext"><pre>-123.0                     │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;-123.&quot;|]<br />  position  │
> │ = { line = 0<br />               column = 4 }                                │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ -123.                        │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 4                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>4                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 24.67ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber -123.0                                                               │
> │ JNumber -123.0                                                               │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber "00.1"
> |> parserEqual (Success (JNumber 0.0))
> 
> ╭─[ 21.91ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber 0.0, { lines = [                │
> │ |&quot;00.1&quot;|]<br />                        position = { line = 0<br /> │
> │ column = 1 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber 0.0, { lines = [|&quot;00.1&quot;|]<br  │
> │ />  position = { line = 0<br />               column = 1 }                   │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 0.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │
> │ d>Item</td><td><div class="dni-plaintext"><pre>0.0                           │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;00.1&quot;|]<br />  position = │
> │ { line = 0<br />               column = 1 }                                  │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ 00.1                         │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 0<br />  column = 1                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>0                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>1                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 25.45ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber 0.0                                                                  │
> │ JNumber 0.0                                                                  │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let jNumber_ = jNumber .>> spaces1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123"
> |> parserEqual (Success (JNumber 123.0))
> 
> ╭─[ 23.71ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber 123.0, { lines = [              │
> │ |&quot;123&quot;|]<br />                          position = { line = 1<br   │
> │ />                                       column = 0 }                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber 123.0, { lines = [|&quot;123&quot;|]<br │
> │ />  position = { line = 1<br />               column = 0 }                   │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │
> │ <td>Item</td><td><div class="dni-plaintext"><pre>123.0                       │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;123&quot;|]<br />  position =  │
> │ { line = 1<br />               column = 0 }                                  │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ 123                          │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 1<br />  column = 0                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>1                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 26.87ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber 123.0                                                                │
> │ JNumber 123.0                                                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "-123"
> |> parserEqual (Success (JNumber -123.0))
> 
> ╭─[ 22.53ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber -123.0, { lines = [             │
> │ |&quot;-123&quot;|]<br />                           position = { line = 1<br │
> │ />                                        column = 0 }                       │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber -123.0, { lines = [                     │
> │ |&quot;-123&quot;|]<br />  position = { line = 1<br />               column  │
> │ = 0 }                                                                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr │
> │ ><td>Item</td><td><div class="dni-plaintext"><pre>-123.0                     │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;-123&quot;|]<br />  position = │
> │ { line = 1<br />               column = 0 }                                  │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ -123                         │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 1<br />  column = 0                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>1                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 26.09ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber -123.0                                                               │
> │ JNumber -123.0                                                               │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "-123."
> |> parserEqual (
>     Failure (
>         "number andThen many1 whitespace",
>         "Unexpected '.'",
>         { currentLine = "-123."; line = 0; column = 4 }
>     )
> )
> 
> ╭─[ 18.79ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Failure<br />  (&quot;number andThen many1       │
> │ whitespace&quot;, &quot;Unexpected &#39;.&#39;&quot;, { currentLine =        │
> │ &quot;-123.&quot;<br />                                                      │
> │ line = 0<br />                                                               │
> │ column = 4                                                                   │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&quot;number andThen many1    │
> │ whitespace&quot;                                                             │
> │ </pre></div></td></tr><tr><td>Item2</td><td><div                             │
> │ class="dni-plaintext"><pre>&quot;Unexpected &#39;.&#39;&quot;                │
> │ </pre></div></td></tr><tr><td>Item3</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
> │ currentLine = &quot;-123.&quot;<br />  line = 0<br />  column = 4            │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ currentLine</td><td><div class="dni-plaintext"><pre>&quot;-123.&quot;        │
> │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>4                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │
> │ ccess</td><td><div class="dni-plaintext"><pre>false                          │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 20.90ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Line:0 Col:4 Error parsing number andThen many1 whitespace                   │
> │ -123.                                                                        │
> │     ^Unexpected '.'                                                          │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123.4"
> |> parserEqual (Success (JNumber 123.4))
> 
> ╭─[ 21.75ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber 123.4, { lines = [              │
> │ |&quot;123.4&quot;|]<br />                          position = { line = 1<br │
> │ />                                       column = 0 }                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber 123.4, { lines = [                      │
> │ |&quot;123.4&quot;|]<br />  position = { line = 1<br />               column │
> │ = 0 }                                                                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │
> │ <td>Item</td><td><div class="dni-plaintext"><pre>123.4                       │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;123.4&quot;|]<br />  position  │
> │ = { line = 1<br />               column = 0 }                                │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ 123.4                        │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 1<br />  column = 0                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>1                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 27.14ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber 123.4                                                                │
> │ JNumber 123.4                                                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "00.4"
> |> parserEqual (
>     Failure (
>         "number andThen many1 whitespace",
>         "Unexpected '0'",
>         { currentLine = "00.4"; line = 0; column = 1 }
>     )
> )
> 
> ╭─[ 18.96ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Failure<br />  (&quot;number andThen many1       │
> │ whitespace&quot;, &quot;Unexpected &#39;0&#39;&quot;, { currentLine =        │
> │ &quot;00.4&quot;<br />                                                       │
> │ line = 0<br />                                                               │
> │ column = 1                                                                   │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&quot;number andThen many1    │
> │ whitespace&quot;                                                             │
> │ </pre></div></td></tr><tr><td>Item2</td><td><div                             │
> │ class="dni-plaintext"><pre>&quot;Unexpected &#39;0&#39;&quot;                │
> │ </pre></div></td></tr><tr><td>Item3</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
> │ currentLine = &quot;00.4&quot;<br />  line = 0<br />  column = 1             │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ currentLine</td><td><div class="dni-plaintext"><pre>&quot;00.4&quot;         │
> │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>1                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │
> │ ccess</td><td><div class="dni-plaintext"><pre>false                          │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 21.30ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Line:0 Col:1 Error parsing number andThen many1 whitespace                   │
> │ 00.4                                                                         │
> │  ^Unexpected '0'                                                             │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123e4"
> |> parserEqual (Success (JNumber 1230000.0))
> 
> ╭─[ 24.93ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber 1230000.0, { lines = [          │
> │ |&quot;123e4&quot;|]<br />                              position = { line =  │
> │ 1<br />                                           column = 0 }               │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber 1230000.0, { lines = [                  │
> │ |&quot;123e4&quot;|]<br />  position = { line = 1<br />               column │
> │ = 0 }                                                                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 1230000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody> │
> │ <tr><td>Item</td><td><div class="dni-plaintext"><pre>1230000.0               │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;123e4&quot;|]<br />  position  │
> │ = { line = 1<br />               column = 0 }                                │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ 123e4                        │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 1<br />  column = 0                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>1                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 28.02ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber 1230000.0                                                            │
> │ JNumber 1230000.0                                                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123.4e5"
> |> parserEqual (Success (JNumber 12340000.0))
> 
> ╭─[ 22.85ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber 12340000.0, { lines = [         │
> │ |&quot;123.4e5&quot;|]<br />                               position = { line │
> │ = 1<br />                                            column = 0 }            │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber 12340000.0, { lines = [                 │
> │ |&quot;123.4e5&quot;|]<br />  position = { line = 1<br />                    │
> │ column = 0 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 12340000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody │
> │ ><tr><td>Item</td><td><div class="dni-plaintext"><pre>12340000.0             │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;123.4e5&quot;|]<br />          │
> │ position = { line = 1<br />               column = 0 }                       │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ 123.4e5                      │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 1<br />  column = 0                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>1                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 26.14ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber 12340000.0                                                           │
> │ JNumber 12340000.0                                                           │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jNumber_ "123.4e-5"
> |> parserEqual (Success (JNumber 0.001234))
> 
> ╭─[ 21.89ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JNumber 0.001234, { lines = [           │
> │ |&quot;123.4e-5&quot;|]<br />                             position = { line  │
> │ = 1<br />                                          column = 0 }              │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JNumber 0.001234, { lines = [                   │
> │ |&quot;123.4e-5&quot;|]<br />  position = { line = 1<br />                   │
> │ column = 0 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 0.001234</code></span></summary><div><table><thead><tr></tr></thead><tbody>< │
> │ tr><td>Item</td><td><div class="dni-plaintext"><pre>0.001234                 │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJObject</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJArray</td><td><div                          │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │
> │ 2</td><td><details class="dni-treeview"><summary><span                       │
> │ class="dni-code-hint"><code>{ lines = [|&quot;123.4e-5&quot;|]<br />         │
> │ position = { line = 1<br />               column = 0 }                       │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ 123.4e-5                     │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 1<br />  column = 0                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>1                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 25.01ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JNumber 0.001234                                                             │
> │ JNumber 0.001234                                                             │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jArray                                                                   │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jArray =
>     let left = pchar '[[' .>> spaces
>     let right = pchar ']]' .>> spaces
>     let comma = pchar ',' .>> spaces
>     let value = jValue .>> spaces
> 
>     let values = sepBy value comma
> 
>     between left values right
>     |>> JArray
>     <?> "array"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>             jString
>             jNumber
>             jArray
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jArray "[[ 1, 2 ]]"
> |> parserEqual (Success (JArray [[ JNumber 1.0; JNumber 2.0 ]]))
> 
> ╭─[ 59.38ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success (JArray [JNumber 1.0; JNumber 2.0], {    │
> │ lines = [|&quot;[ 1, 2 ]&quot;|]<br />                                       │
> │ position = { line = 1<br />                                                  │
> │ column = 0 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JArray [JNumber 1.0; JNumber 2.0], { lines = [  │
> │ |&quot;[ 1, 2 ]&quot;|]<br />  position = { line = 1<br />                   │
> │ column = 0 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JArray [JNumber 1.0; JNumber                     │
> │ 2.0]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< │
> │ td>Item</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></ │
> │ thead><tbody><tr><td>0</td><td><details class="dni-treeview"><summary><span  │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │
> │ d>Item</td><td><div class="dni-plaintext"><pre>1.0                           │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr><tr><td>IsJBool</td><td><div                           │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNull</td><td><div...td><details             │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [  │
> │ |&quot;[ 1, 2 ]&quot;|]<br />  position = { line = 1<br />                   │
> │ column = 0 }                                                                 │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ [ 1, 2 ]                     │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 1<br />  column = 0                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>1                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 62.76ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JArray [JNumber 1.0; JNumber 2.0]                                            │
> │ JArray [JNumber 1.0; JNumber 2.0]                                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jArray "[[ 1, 2, ]]"
> |> parserEqual (
>     Failure (
>         "array",
>         "Unexpected ','",
>         { currentLine = "[[ 1, 2, ]]"; line = 0; column = 6 }
>     )
> )
> 
> ╭─[ 24.08ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Failure (&quot;array&quot;, &quot;Unexpected     │
> │ &#39;,&#39;&quot;, { currentLine = &quot;[ 1, 2, ]&quot;<br />               │
> │ line = 0<br />                                      column = 6               │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&quot;array&quot;             │
> │ </pre></div></td></tr><tr><td>Item2</td><td><div                             │
> │ class="dni-plaintext"><pre>&quot;Unexpected &#39;,&#39;&quot;                │
> │ </pre></div></td></tr><tr><td>Item3</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
> │ currentLine = &quot;[ 1, 2, ]&quot;<br />  line = 0<br />  column = 6        │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ currentLine</td><td><div class="dni-plaintext"><pre>&quot;[ 1, 2, ]&quot;    │
> │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>6                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │
> │ ccess</td><td><div class="dni-plaintext"><pre>false                          │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 26.40ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Line:0 Col:6 Error parsing array                                             │
> │ [ 1, 2, ]                                                                    │
> │       ^Unexpected ','                                                        │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jObject                                                                  │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let jObject =
>     let left = spaces >>. pchar '{' .>> spaces
>     let right = pchar '}' .>> spaces
>     let colon = pchar ':' .>> spaces
>     let comma = pchar ',' .>> spaces
>     let key = quotedString .>> spaces
>     let value = jValue .>> spaces
> 
>     let keyValue = (key .>> colon) .>>. value
>     let keyValues = sepBy keyValue comma
> 
>     between left keyValues right
>     |>> Map.ofList
>     |>> JObject
>     <?> "object"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> jValueRef <|
>     choice
>         [[
>             jNull
>             jBool
>             jString
>             jNumber
>             jArray
>             jObject
>         ]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jObject """{ "a":1, "b"  :  2 }"""
> |> parserEqual (
>     Success (
>         JObject (
>             Map.ofList [[
>                 "a", JNumber 1.0
>                 "b", JNumber 2.0
>             ]]
>         )
>     )
> )
> 
> ╭─[ 62.31ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success<br />  (JObject (map [(&quot;a&quot;,    │
> │ JNumber 1.0); (&quot;b&quot;, JNumber 2.0)]),<br />   { lines = [|&quot;{    │
> │ &quot;a&quot;:1, &quot;b&quot;  :  2 }&quot;|]<br />     position = { line = │
> │ 1<br />                  column = 0 }                                        │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item</td><td><details class="dni-treeview"><summary><span                   │
> │ class="dni-code-hint"><code>(JObject (map [(&quot;a&quot;, JNumber 1.0);     │
> │ (&quot;b&quot;, JNumber 2.0)]), { lines = [|&quot;{ &quot;a&quot;:1,         │
> │ &quot;b&quot;  :  2 }&quot;|]<br />  position = { line = 1<br />             │
> │ column = 0 }                                                                 │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>JObject (map [(&quot;a&quot;, JNumber 1.0);      │
> │ (&quot;b&quot;, JNumber                                                      │
> │ 2.0)])</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr │
> │ ><td>Item</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></ │
> │ thead><tbody><tr><td><div class="dni-plaintext"><pre>&quot;a&quot;           │
> │ </pre></div></td><td><details class="dni-treeview"><summary><span            │
> │ class="dni-code-hint"><code>JNumber                                          │
> │ 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │
> │ d>Item</td><td><div class="dni-plaintext"><pre>1.0                           │
> │ </pre></div></td></tr><tr><td>IsJString</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr><tr><td>IsJNumber</td>...hint"><code>{ lines = [       │
> │ |&quot;{ &quot;a&quot;:1, &quot;b&quot;  :  2 }&quot;|]<br />  position = {  │
> │ line = 1<br />               column = 0 }                                    │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ lines</td><td><div class="dni-plaintext"><pre>[ { &quot;a&quot;:1,           │
> │ &quot;b&quot;  :  2 }                                                        │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 1<br />  column = 0                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>1                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 65.82ms - stdout ]─────────────────────────────────────────────────────────╮
> │ JObject (map [("a", JNumber 1.0); ("b", JNumber 2.0)])                       │
> │ JObject (map [("a", JNumber 1.0); ("b", JNumber 2.0)])                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run jObject """{ "a":1, "b"  :  2, }"""
> |> parserEqual (
>     Failure (
>         "object",
>         "Unexpected ','",
>         { currentLine = """{ "a":1, "b"  :  2, }"""; line = 0; column = 18 }
>     )
> )
> 
> ╭─[ 25.66ms - return value ]───────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Failure (&quot;object&quot;, &quot;Unexpected    │
> │ &#39;,&#39;&quot;, { currentLine = &quot;{ &quot;a&quot;:1, &quot;b&quot;  : │
> │ 2, }&quot;<br />                                       line = 0<br />        │
> │ column = 18                                                                  │
> │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │
> │ >Item1</td><td><div class="dni-plaintext"><pre>&quot;object&quot;            │
> │ </pre></div></td></tr><tr><td>Item2</td><td><div                             │
> │ class="dni-plaintext"><pre>&quot;Unexpected &#39;,&#39;&quot;                │
> │ </pre></div></td></tr><tr><td>Item3</td><td><details                         │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{            │
> │ currentLine = &quot;{ &quot;a&quot;:1, &quot;b&quot;  :  2, }&quot;<br />    │
> │ line = 0<br />  column = 18                                                  │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ currentLine</td><td><div class="dni-plaintext"><pre>&quot;{ &quot;a&quot;:1, │
> │ &quot;b&quot;  :  2, }&quot;                                                 │
> │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>18                                                │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │
> │ ccess</td><td><div class="dni-plaintext"><pre>false                          │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>true                                              │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 28.09ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Line:0 Col:18 Error parsing object                                           │
> │ { "a":1, "b"  :  2, }                                                        │
> │                   ^Unexpected ','                                            │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### jValue                                                                   │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let example1 = """{
>     "name" : "Scott",
>     "isMale" : true,
>     "bday" : {"year":2001, "month":12, "day":25 },
>     "favouriteColors" : [["blue", "green"]],
>     "emptyArray" : [[]],
>     "emptyObject" : {}
> }"""
> run jValue example1
> |> parserEqual (
>     Success (
>         JObject (
>             Map.ofList [[
>                 "name", JString "Scott"
>                 "isMale", JBool true
>                 "bday", JObject (
>                     Map.ofList [[
>                         "year", JNumber 2001.0
>                         "month", JNumber 12.0
>                         "day", JNumber 25.0
>                     ]]
>                 )
>                 "favouriteColors", JArray [[ JString "blue"; JString "green" ]]
>                 "emptyArray", JArray [[]]
>                 "emptyObject", JObject Map.empty
>             ]]
>         )
>     )
> )
> 
> ╭─[ 107.78ms - return value ]──────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success<br />  (JObject<br />     (map<br />     │
> │ [(&quot;bday&quot;,<br />          JObject<br />            (map<br />       │
> │ [(&quot;day&quot;, JNumber 25.0); (&quot;month&quot;, JNumber 12.0);<br />   │
> │ (&quot;year&quot;, JNumber 2001.0)])); (&quot;emptyArray&quot;, JArray [     │
> │ ]);<br />         (&quot;emptyObject&quot;, JObject (map []));<br />         │
> │ (&quot;favouriteColors&quot;,                                                │
> │ ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │
> │ d>Item</td><td><details class="dni-treeview"><summary><span                  │
> │ class="dni-code-hint"><code>(JObject<br />  (map<br />     [                 │
> │ (&quot;bday&quot;,<br />       JObject<br />         (map<br />            [ │
> │ (&quot;day&quot;, JNumber 25.0); (&quot;month&quot;, JNumber 12.0);<br />    │
> │ (&quot;year&quot;, JNumber 2001.0)])); (&quot;emptyArray&quot;, JArray [     │
> │ ]);<br />      (&quot;emptyObject&quot;, JObject (map []));<br />            │
> │ (&quot;favouriteColors&quot;, JArray [JString &quot;blue&quot;; JString      │
> │ &quot;gr...</code></span></summary><div><table><thead><tr></tr></thead><tbod │
> │ y><tr><td>Item1</td><td><details class="dni-treeview"><summary><span         │
> │ class="dni-code-hint"><code>JObject<br />  (map<br />     [                  │
> │ (&quot;bday&quot;,<br />       JObject<br />         (map<br />            [ │
> │ (&quot;day&quot;, JNumber 25.0); (&quot;month&quot;, JNumber 12.0);<br />    │
> │ (&quot;year&quot;, JNumber 2001.0)])); (&quot;emptyArray&quot;,              │
> │ JArra...quot;name&quot; : &quot;Scott&quot;,,     &quot;isMale&quot; :       │
> │ true,,     &quot;bday&quot; : {&quot;year&quot;:2001, &quot;month&quot;:12,  │
> │ &quot;day&quot;:25 },,     &quot;favouriteColors&quot; : [&quot;blue&quot;,  │
> │ &quot;green&quot;],,     &quot;emptyArray&quot; : [],,                       │
> │ &quot;emptyObject&quot; : {}, }                                              │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 8<br />  column = 0                                                          │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>8                               │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 111.58ms - stdout ]────────────────────────────────────────────────────────╮
> │ JObject                                                                      │
> │   (map                                                                       │
> │      [("bday",                                                               │
> │        JObject                                                               │
> │          (map                                                                │
> │             [("day", JNumber 25.0); ("month", JNumber 12.0);                 │
> │              ("year", JNumber 2001.0)])); ("emptyArray", JArray []);         │
> │       ("emptyObject", JObject (map []));                                     │
> │       ("favouriteColors", JArray [JString "blue"; JString "green"]);         │
> │       ("isMale", JBool true); ("name", JString "Scott")])                    │
> │ JObject                                                                      │
> │   (map                                                                       │
> │      [("bday", JObject (map [("day", JNumber 25.0); ("month", JNumber 12.0); │
> │ ("year", JNumber 2001.0)]));                                                 │
> │       ("emptyArray", JArray []); ("emptyObject", JObject (map []));          │
> │       ("favouriteColors", JArray [JString "blue"; JString "green"]);         │
> │ ("isMale", JBool true); ("name", JString "Scott")])                          │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let example2 = """{"widget": {
>     "debug": "on",
>     "window": {
>         "title": "Sample Konfabulator Widget",
>         "name": "main_window",
>         "width": 500,
>         "height": 500
>     },
>     "image": {
>         "src": "Images/Sun.png",
>         "name": "sun1",
>         "hOffset": 250,
>         "vOffset": 250,
>         "alignment": "center"
>     },
>     "text": {
>         "data": "Click Here",
>         "size": 36,
>         "style": "bold",
>         "name": "text1",
>         "hOffset": 250,
>         "vOffset": 100,
>         "alignment": "center",
>         "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
>     }
> }}"""
> 
> run jValue example2
> |> parserEqual (
>     Success (
>         JObject (
>             Map.ofList [[
>                 "widget", JObject (
>                     Map.ofList [[
>                         "debug", JString "on"
>                         "window", JObject (
>                             Map.ofList [[
>                                 "title", JString "Sample Konfabulator Widget"
>                                 "name", JString "main_window"
>                                 "width", JNumber 500.0
>                                 "height", JNumber 500.0
>                             ]]
>                         )
>                         "image", JObject (
>                             Map.ofList [[
>                                 "src", JString "Images/Sun.png"
>                                 "name", JString "sun1"
>                                 "hOffset", JNumber 250.0
>                                 "vOffset", JNumber 250.0
>                                 "alignment", JString "center"
>                             ]]
>                         )
>                         "text", JObject (
>                             Map.ofList [[
>                                 "data", JString "Click Here"
>                                 "size", JNumber 36.0
>                                 "style", JString "bold"
>                                 "name", JString "text1"
>                                 "hOffset", JNumber 250.0
>                                 "vOffset", JNumber 100.0
>                                 "alignment", JString "center"
>                                 "onMouseUp", JString "sun1.opacity = 
> (sun1.opacity / 100) * 90;"
>                             ]]
>                         )
>                     ]]
>                 )
>             ]]
>         )
>     )
> )
> 
> ╭─[ 235.99ms - return value ]──────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success<br />  (JObject<br />     (map<br />     │
> │ [(&quot;widget&quot;,<br />          JObject<br />            (map<br />     │
> │ [(&quot;debug&quot;, JString &quot;on&quot;);<br />                          │
> │ (&quot;image&quot;,<br />                 JObject<br />                      │
> │ (map<br />                      [(&quot;alignment&quot;, JString             │
> │ &quot;center&quot;);<br />                                                   │
> │ (&quot;hOffset&quot;...</code></span></summary><div><table><thead><tr></tr>< │
> │ /thead><tbody><tr><td>Item</td><td><details                                  │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>(JObject<br  │
> │ />  (map<br />     [(&quot;widget&quot;,<br />       JObject<br />           │
> │ (map<br />            [(&quot;debug&quot;, JString &quot;on&quot;);<br />    │
> │ (&quot;image&quot;,<br />              JObject<br />                (map<br  │
> │ />                   [(&quot;alignment&quot;, JString &quot;center&quot;);   │
> │ (&quot;hOffset&quot;, JNumber 250.0);<br />                                  │
> │ (&quot;name&quot;, JString                                                   │
> │ &quot;sun1&quot;...</code></span></summary><div><table><thead><tr></tr></the │
> │ ad><tbody><tr><td>Item1</td><td><details class="dni-treeview"><summary><span │
> │ class="dni-code-hint"><code>JObject<br />  (map<br />     [                  │
> │ (&quot;widget&quot;,<br />       JObject<br />         (map<br />            │
> │ [(&quot;debug&quot;, JString &quot;on&quot;);<br />                          │
> │ (&quot;image&quot;,<br />              JObject<br />                (...     │
> │ &quot;style&quot;: &quot;bold&quot;,,         &quot;name&quot;:              │
> │ &quot;text1&quot;,,         &quot;hOffset&quot;: 250,,                       │
> │ &quot;vOffset&quot;: 100,,         &quot;alignment&quot;:                    │
> │ &quot;center&quot;,,         &quot;onMouseUp&quot;: &quot;sun1.opacity =     │
> │ (sun1.opacity / 100) * 90;&quot;,     }, }}                                  │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 26<br />  column = 0                                                         │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>26                              │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 240.03ms - stdout ]────────────────────────────────────────────────────────╮
> │ JObject                                                                      │
> │   (map                                                                       │
> │      [("widget",                                                             │
> │        JObject                                                               │
> │          (map                                                                │
> │             [("debug", JString "on");                                        │
> │              ("image",                                                       │
> │               JObject                                                        │
> │                 (map                                                         │
> │                    [("alignment", JString "center"); ("hOffset", JNumber     │
> │ 250.0);                                                                      │
> │                     ("name", JString "sun1"); ("src", JString                │
> │ "Images/Sun.png");                                                           │
> │                     ("vOffset", JNumber 250.0)]));                           │
> │              ("text",                                                        │
> │               JObject                                                        │
> │                 (map                                                         │
> │                    [("alignment", JString "center");                         │
> │                     ("data", JString "Click Here"); ("hOffset", JNumber      │
> │ 250.0);                                                                      │
> │                     ("name", JString "text1");                               │
> │                     ("onMouseUp",                                            │
> │                      JString "sun1.opacity = (sun1.opacity / 100) * 90;");   │
> │                     ("size", JNumber 36.0); ("style", JString "bold");       │
> │                     ("vOffset", JNumber 100.0)]));                           │
> │              ("window",                                                      │
> │               JObject                                                        │
> │                 (map                                                         │
> │                    [("height", JNumber 500.0); ("name", JString              │
> │ "main_window");                                                              │
> │                     ("title", JString "Sample Konfabulator Widget");         │
> │                     ("width", JNumber 500.0)]))]))])                         │
> │ JObject                                                                      │
> │   (map                                                                       │
> │      [("widget",                                                             │
> │        JObject                                                               │
> │          (map                                                                │
> │             [("debug", JString "on");                                        │
> │              ("image",                                                       │
> │               JObject                                                        │
> │                 (map                                                         │
> │                    [("alignment", JString "center"); ("hOffset", JNumber     │
> │ 250.0); ("name", JString "sun1");                                            │
> │                     ("src", JString "Images/Sun.png"); ("vOffset", JNumber   │
> │ 250.0)]));                                                                   │
> │              ("text",                                                        │
> │               JObject                                                        │
> │                 (map                                                         │
> │                    [("alignment", JString "center"); ("data", JString "Click │
> │ Here"); ("hOffset", JNumber 250.0);                                          │
> │                     ("name", JString "text1"); ("onMouseUp", JString         │
> │ "sun1.opacity = (sun1.opacity / 100) * 90;");                                │
> │                     ("size", JNumber 36.0); ("style", JString "bold");       │
> │ ("vOffset", JNumber 100.0)]));                                               │
> │              ("window",                                                      │
> │               JObject                                                        │
> │                 (map                                                         │
> │                    [("height", JNumber 500.0); ("name", JString              │
> │ "main_window");                                                              │
> │                     ("title", JString "Sample Konfabulator Widget");         │
> │ ("width", JNumber 500.0)]))]))])                                             │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let example3 = """{
>   "string": "Hello, \"World\"!",
>   "escapedString": "This string contains \\/\\\\\\b\\f\\n\\r\\t\\\"\\'",
>   "number": 42,
>   "scientificNumber": 3.14e-10,
>   "boolean": true,
>   "nullValue": null,
>   "array": [[1, 2, 3, 4, 5]],
>   "unicodeString1": "프리마",
>   "unicodeString2": "\u0048\u0065\u006C\u006C\u006F, 
> \u0022\u0057\u006F\u0072\u006C\u0064\u0022!",
>   "specialCharacters": "!@#$%^&*()",
>   "emptyArray": [[]],
>   "emptyObject": {},
>   "nestedArrays": [[[[1, 2, 3]], [[4, 5, 6]]]],
>   "object": {
>     "nestedString": "Nested Value",
>     "nestedNumber": 3.14,
>     "nestedBoolean": false,
>     "nestedNull": null,
>     "nestedArray": [["a", "b", "c"]],
>     "nestedObject": {
>       "nestedProperty": "Nested Object Value"
>     }
>   },
>   "nestedObjects": [[
>     {"name": "Alice", "age": 25},
>     {"name": "Bob", "age": 30}
>   ]]
> }"""
> run jValue example3
> |> parserEqual (
>     Success (
>         JObject (
>             Map.ofList [[
>                 "string", JString @"Hello, ""World""!"
>                 "escapedString", JString @"This string contains 
> \/\\\b\f\n\r\t\""\'"
>                 "number", JNumber 42.0
>                 "scientificNumber", JNumber 3.14e-10
>                 "boolean", JBool true
>                 "nullValue", JNull
>                 "array", JArray [[
>                     JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 
> 5.0
>                 ]]
>                 "unicodeString1", JString "프리마"
>                 "unicodeString2", JString @"Hello, ""World""!"
>                 "specialCharacters", JString "!@#$%^&*()"
>                 "emptyArray", JArray [[]]
>                 "emptyObject", JObject Map.empty
>                 "nestedArrays", JArray [[
>                     JArray [[ JNumber 1.0; JNumber 2.0; JNumber 3.0 ]]
>                     JArray [[ JNumber 4.0; JNumber 5.0; JNumber 6.0 ]]
>                 ]]
>                 "object", JObject (
>                     Map.ofList [[
>                         "nestedString", JString "Nested Value"
>                         "nestedNumber", JNumber 3.14
>                         "nestedBoolean", JBool false
>                         "nestedNull", JNull
>                         "nestedArray", JArray [[JString "a"; JString "b"; 
> JString "c"]]
>                         "nestedObject", JObject (
>                             Map.ofList [[
>                                 "nestedProperty", JString "Nested Object Value"
>                             ]]
>                         )
>                     ]]
>                 )
>                 "nestedObjects", JArray [[
>                   JObject (Map.ofList [[ "name", JString "Alice"; "age", JNumber
> 25.0 ]])
>                   JObject (Map.ofList [[ "name", JString "Bob"; "age", JNumber 
> 30.0 ]])
>                 ]]
>             ]]
>         )
>     )
> )
> 
> ╭─[ 297.17ms - return value ]──────────────────────────────────────────────────╮
> │ <details open="open" class="dni-treeview"><summary><span                     │
> │ class="dni-code-hint"><code>Success<br />  (JObject<br />     (map<br />     │
> │ [(&quot;array&quot;,<br />          JArray<br />            [JNumber 1.0;    │
> │ JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 5.0]);<br />                  │
> │ (&quot;boolean&quot;, JBool true); (&quot;emptyArray&quot;, JArray []);<br   │
> │ />         (&quot;emptyObject&quot;, JObject (map []));<br />                │
> │ (&quot;escapedString&quot;, JString &quot;This                               │
> │ s...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< │
> │ td>Item</td><td><details class="dni-treeview"><summary><span                 │
> │ class="dni-code-hint"><code>(JObject<br />  (map<br />     [                 │
> │ (&quot;array&quot;,<br />       JArray [JNumber 1.0; JNumber 2.0; JNumber    │
> │ 3.0; JNumber 4.0; JNumber 5.0]);<br />      (&quot;boolean&quot;, JBool      │
> │ true); (&quot;emptyArray&quot;, JArray []);<br />                            │
> │ (&quot;emptyObject&quot;, JObject (map []));<br />                           │
> │ (&quot;escapedString&quot;, JString &quot;This string contains \/\\\b\f<br   │
> │ />\r\t\&quot;\&#39;&quot;);<br />                                            │
> │ ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │
> │ d>Item1</td><td><details class="dni-treeview"><summary><span                 │
> │ class="dni-code-hint"><code>JObject<br />  (map<br />     [                  │
> │ (&quot;array&quot;,<br />       JArray [JNumber 1.0; JNumber 2.0; JNumber    │
> │ 3.0; JNumber 4.0; JNumber 5.0]);<br />      (&quot;boolean&quot;, JBool      │
> │ true); (&quot;emptyArray&quot;, JArray []);<br />                            │
> │ (&quot;emptyObject&quot;, JObject (map []));<br />      (&quot;es...&quot;,  │
> │ &quot;c&quot;],,     &quot;nestedObject&quot;: {,                            │
> │ &quot;nestedProperty&quot;: &quot;Nested Object Value&quot;,     },   },,    │
> │ &quot;nestedObjects&quot;: [,     {&quot;name&quot;: &quot;Alice&quot;,      │
> │ &quot;age&quot;: 25},,     {&quot;name&quot;: &quot;Bob&quot;,               │
> │ &quot;age&quot;: 30},   ], }                                                 │
> │ ]</pre></div></td></tr><tr><td>position</td><td><details                     │
> │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line =     │
> │ 29<br />  column = 0                                                         │
> │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
> │ line</td><td><div class="dni-plaintext"><pre>29                              │
> │ </pre></div></td></tr><tr><td>column</td><td><div                            │
> │ class="dni-plaintext"><pre>0                                                 │
> │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │
> │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │
> │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true                   │
> │ </pre></div></td></tr><tr><td>IsFailure</td><td><div                         │
> │ class="dni-plaintext"><pre>false                                             │
> │ </pre></div></td></tr></tbody></table></div></details><style>                │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 301.45ms - stdout ]────────────────────────────────────────────────────────╮
> │ JObject                                                                      │
> │   (map                                                                       │
> │      [("array",                                                              │
> │        JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber   │
> │ 5.0]);                                                                       │
> │       ("boolean", JBool true); ("emptyArray", JArray []);                    │
> │       ("emptyObject", JObject (map []));                                     │
> │       ("escapedString", JString "This string contains \/\\\b\f\n\r\t\"\'");  │
> │       ("nestedArrays",                                                       │
> │        JArray                                                                │
> │          [JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0];                    │
> │           JArray [JNumber 4.0; JNumber 5.0; JNumber 6.0]]);                  │
> │       ("nestedObjects",                                                      │
> │        JArray                                                                │
> │          [JObject (map [("age", JNumber 25.0); ("name", JString "Alice")]);  │
> │           JObject (map [("age", JNumber 30.0); ("name", JString "Bob")])]);  │
> │       ("nullValue", JNull); ("number", JNumber 42.0); ...])                  │
> │ JObject                                                                      │
> │   (map                                                                       │
> │      [("array", JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0;  │
> │ JNumber 5.0]); ("boolean", JBool true);                                      │
> │       ("emptyArray", JArray []); ("emptyObject", JObject (map []));          │
> │       ("escapedString", JString "This string contains \/\\\b\f\n\r\t\"\'");  │
> │       ("nestedArrays",                                                       │
> │        JArray [JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0]; JArray [      │
> │ JNumber 4.0; JNumber 5.0; JNumber 6.0]]);                                    │
> │       ("nestedObjects",                                                      │
> │        JArray                                                                │
> │          [JObject (map [("age", JNumber 25.0); ("name", JString "Alice")]);  │
> │           JObject (map [("age", JNumber 30.0); ("name", JString "Bob")])]);  │
> │ ("nullValue", JNull);                                                        │
> │       ("number", JNumber 42.0); ...])                                        │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 344876 }
00:00:18   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
    "nbconvert",
    "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb",
    "--to",
    "html",
    "--HTMLExporter.theme=dark",
]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:18 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb to html
00:00:18 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:18 verbose #7 !   validate(nb)
00:00:19 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:19 verbose #9 !   return _pygments_highlight(
00:00:19 verbose #10 ! [NbConvertApp] Writing 532431 bytes to /home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.html
00:00:19 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 906 }
00:00:19   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 906 }
00:00:19   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
    "-c",
    "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:20 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:20   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:20   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 345841 }
00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Parser.dib"])) }
00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
    "repl",
    "--exit-after-run",
    "--run",
    "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib",
    "--output-path",
    "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb",
]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ # Parser (Polyglot)                                                          │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### TextInput                                                                │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Position =
>     {
>         line : int
>         column : int
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let initialPos = { line = 0; column = 0 }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline incrCol (pos : Position) =
>     { pos with column = pos.column + 1 }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline incrLine pos =
>     { line = pos.line + 1; column = 0 }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type InputState =
>     {
>         lines : string[[]]
>         position : Position
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline fromStr str =
>     {
>         lines =
>             if str |> String.IsNullOrEmpty
>             then [[||]]
>             else str |> SpiralSm.split_string [[| "\r\n"; "\n" |]]
>         position = initialPos
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> fromStr "" |> _assertEqual {
>     lines = [[||]]
>     position = { line = 0; column = 0 }
> }
> 
> ╭─[ 37.90ms - stdout ]─────────────────────────────────────────────────────────╮
> │ { lines = [||]                                                               │
> │   position = { line = 0                                                      │
> │                column = 0 } }                                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> fromStr "Hello \n World" |> _assertEqual {
>     lines = [[| "Hello "; " World" |]]
>     position = { line = 0; column = 0 }
> }
> 
> ╭─[ 53.28ms - stdout ]─────────────────────────────────────────────────────────╮
> │ { lines = [|"Hello "; " World"|]                                             │
> │   position = { line = 0                                                      │
> │                column = 0 } }                                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline currentLine inputState =
>     let linePos = inputState.position.line
>     if linePos < inputState.lines.Length
>     then inputState.lines.[[linePos]]
>     else "end of file"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline nextChar input =
>     let linePos = input.position.line
>     let colPos = input.position.column
> 
>     if linePos >= input.lines.Length
>     then input, None
>     else
>         let currentLine = currentLine input
>         if colPos < currentLine.Length then
>             let char = currentLine.[[colPos]]
>             let newPos = incrCol input.position
>             let newState = { input with position = newPos }
>             newState, Some char
>         else
>             let char = '\n'
>             let newPos = incrLine input.position
>             let newState = { input with position = newPos }
>             newState, Some char
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let newInput, charOpt = fromStr "Hello World" |> nextChar
> 
> newInput |> _assertEqual {
>     lines = [[| "Hello World" |]]
>     position = { line = 0; column = 1 }
> }
> charOpt |> _assertEqual (Some 'H')
> 
> ╭─[ 27.31ms - stdout ]─────────────────────────────────────────────────────────╮
> │ { lines = [|"Hello World"|]                                                  │
> │   position = { line = 0                                                      │
> │                column = 1 } }                                                │
> │                                                                              │
> │ Some 'H'                                                                     │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let newInput, charOpt = fromStr "Hello\n\nWorld" |> nextChar
> 
> newInput |> _assertEqual {
>     lines = [[| "Hello"; ""; "World" |]]
>     position = { line = 0; column = 1 }
> }
> charOpt |> _assertEqual (Some 'H')
> 
> ╭─[ 19.13ms - stdout ]─────────────────────────────────────────────────────────╮
> │ { lines = [|"Hello"; ""; "World"|]                                           │
> │   position = { line = 0                                                      │
> │                column = 1 } }                                                │
> │                                                                              │
> │ Some 'H'                                                                     │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### Parser                                                                   │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Input = InputState
> type ParserLabel = string
> type ParserError = string
> 
> type ParserPosition =
>     {
>         currentLine : string
>         line : int
>         column : int
>     }
> 
> type ParseResult<'a> =
>     | Success of 'a
>     | Failure of ParserLabel * ParserError * ParserPosition
> 
> type Parser<'a> =
>     {
>         label : ParserLabel
>         parseFn : Input -> ParseResult<'a * Input>
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline printResult result =
>     match result with
>     | Success (value, input) ->
>         printfn $"%A{value}"
>     | Failure (label, error, parserPos) ->
>         let errorLine = parserPos.currentLine
>         let colPos = parserPos.column
>         let linePos = parserPos.line
>         let failureCaret = $"{' ' |> string |> String.replicate colPos}^{error}"
>         printfn $"Line:%i{linePos} Col:%i{colPos} Error parsing 
> %s{label}\n%s{errorLine}\n%s{failureCaret}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline runOnInput parser input =
>     parser.parseFn input
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline run parser inputStr =
>     runOnInput parser (fromStr inputStr)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline parserPositionFromInputState (inputState : Input) =
>     {
>         currentLine = currentLine inputState
>         line = inputState.position.line
>         column = inputState.position.column
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline getLabel parser =
>     parser.label
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline setLabel parser newLabel =
>     {
>         label = newLabel
>         parseFn = fun input ->
>             match parser.parseFn input with
>             | Success s -> Success s
>             | Failure (oldLabel, err, pos) -> Failure (newLabel, err, pos)
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (<?>) = setLabel
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline satisfy predicate label =
>     {
>         label = label
>         parseFn = fun input ->
>             let remainingInput, charOpt = nextChar input
>             match charOpt with
>             | None ->
>                 let err = "No more input"
>                 let pos = parserPositionFromInputState input
>                 Failure (label, err, pos)
>             | Some first ->
>                 if predicate first
>                 then Success (first, remainingInput)
>                 else
>                     let err = $"Unexpected '%c{first}'"
>                     let pos = parserPositionFromInputState input
>                     Failure (label, err, pos)
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> runOnInput parser input |> _assertEqual (
>     Success (
>         'H',
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 1 }
>         }
>     )
> )
> 
> ╭─[ 24.26ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ('H', { lines = [|"Hello"|]                                          │
> │                 position = { line = 0                                        │
> │                              column = 1 } })                                 │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "World"
> let parser = satisfy (fun c -> c = 'H') "H"
> runOnInput parser input |> _assertEqual (
>     Failure (
>         "H",
>         "Unexpected 'W'",
>         {
>             currentLine = "World"
>             line = 0
>             column = 0
>         }
>     )
> )
> 
> ╭─[ 19.59ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Failure ("H", "Unexpected 'W'", { currentLine = "World"                      │
> │                                   line = 0                                   │
> │                                   column = 0 })                              │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline bindP f p =
>     {
>         label = "unknown"
>         parseFn = fun input ->
>             match runOnInput p input with
>             | Failure (label, err, pos) -> Failure (label, err, pos)
>             | Success (value1, remainingInput) -> runOnInput (f value1) 
> remainingInput
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (>>=) p f = bindP f p
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e"
> runOnInput parser2 input |> _assertEqual (
>     Success (
>         'e',
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 2 }
>         }
>     )
> )
> 
> ╭─[ 26.25ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ('e', { lines = [|"Hello"|]                                          │
> │                 position = { line = 0                                        │
> │                              column = 2 } })                                 │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "World"
> let parser = satisfy (fun c -> c = 'W') "W"
> let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e"
> runOnInput parser2 input |> _assertEqual (
>     Failure (
>         "e",
>         "Unexpected 'o'",
>         {
>             currentLine = "World"
>             line = 0
>             column = 1
>         }
>     )
> )
> 
> ╭─[ 26.57ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Failure ("e", "Unexpected 'o'", { currentLine = "World"                      │
> │                                   line = 0                                   │
> │                                   column = 1 })                              │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline returnP x =
>     {
>         label = $"%A{x}"
>         parseFn = fun input -> Success (x, input)
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = returnP "Hello"
> runOnInput parser input |> _assertEqual (
>     Success (
>         "Hello",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 0 }
>         }
>     )
> )
> 
> ╭─[ 16.12ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ("Hello", { lines = [|"Hello"|]                                      │
> │                     position = { line = 0                                    │
> │                                  column = 0 } })                             │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline mapP f =
>     bindP (f >> returnP)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (<!>) = mapP
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (|>>) x f = f <!> x
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = parser |>> string
> runOnInput parser2 input |> _assertEqual (
>     Success (
>         "H",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 1 }
>         }
>     )
> )
> 
> ╭─[ 22.99ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ("H", { lines = [|"Hello"|]                                          │
> │                 position = { line = 0                                        │
> │                              column = 1 } })                                 │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline applyP fP xP =
>     fP >>=
>         fun f ->
>             xP >>=
>                 fun x ->
>                     returnP (f x)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (<*>) = applyP
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline lift2 f xP yP =
>     returnP f <*> xP <*> yP
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'e') "e"
> let parser3 = lift2 (fun c1 c2 -> string c1 + string c2) parser parser2
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         "He",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 2 }
>         }
>     )
> )
> 
> ╭─[ 34.18ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ("He", { lines = [|"Hello"|]                                         │
> │                  position = { line = 0                                       │
> │                               column = 2 } })                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline andThen p1 p2 =
>     p1 >>=
>         fun p1Result ->
>             p2 >>=
>                 fun p2Result ->
>                     returnP (p1Result, p2Result)
>     <?> $"{getLabel p1} andThen {getLabel p2}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (.>>.) = andThen
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'e') "e"
> let parser3 = parser .>>. parser2
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         ('H', 'e'),
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 2 }
>         }
>     )
> )
> 
> ╭─[ 28.78ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success (('H', 'e'), { lines = [|"Hello"|]                                   │
> │                        position = { line = 0                                 │
> │                                     column = 2 } })                          │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline orElse p1 p2 =
>     {
>         label = $"{getLabel p1} orElse {getLabel p2}"
>         parseFn = fun input ->
>             match runOnInput p1 input with
>             | Success _ as result -> result
>             | Failure _ -> runOnInput p2 input
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let (<|>) = orElse
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'h') "h"
> let parser3 = parser <|> parser2
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         'h',
>         {
>             lines = [[| "hello" |]]
>             position = { line = 0; column = 1 }
>         }
>     )
> )
> 
> ╭─[ 23.78ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ('h', { lines = [|"hello"|]                                          │
> │                 position = { line = 0                                        │
> │                              column = 1 } })                                 │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline choice listOfParsers =
>     listOfParsers |> List.reduce (<|>)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'h') "h"
> let parser3 = choice [[ parser; parser2 ]]
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         'h',
>         {
>             lines = [[| "hello" |]]
>             position = { line = 0; column = 1 }
>         }
>     )
> )
> 
> ╭─[ 24.65ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ('h', { lines = [|"hello"|]                                          │
> │                 position = { line = 0                                        │
> │                              column = 1 } })                                 │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec sequence parserList =
>     match parserList with
>     | [[]] -> returnP [[]]
>     | head :: tail -> (lift2 cons) head (sequence tail)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = satisfy (fun c -> c = 'e') "e"
> let parser3 = sequence [[ parser; parser2 ]]
> runOnInput parser3 input |> _assertEqual (
>     Success (
>         [[ 'H'; 'e' ]],
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 2 }
>         }
>     )
> )
> 
> ╭─[ 31.68ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success (['H'; 'e'], { lines = [|"Hello"|]                                   │
> │                        position = { line = 0                                 │
> │                                     column = 2 } })                          │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let rec parseZeroOrMore parser input =
>     match runOnInput parser input with
>     | Failure (_, _, _) ->
>         [[]], input
>     | Success (firstValue, inputAfterFirstParse) ->
>         let subsequentValues, remainingInput = parseZeroOrMore parser 
> inputAfterFirstParse
>         firstValue :: subsequentValues, remainingInput
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline many parser =
>     {
>         label = $"many {getLabel parser}"
>         parseFn = fun input -> Success (parseZeroOrMore parser input)
>     }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = many parser
> runOnInput parser2 input |> _assertEqual (
>     Success (
>         [[]],
>         {
>             lines = [[| "hello" |]]
>             position = { line = 0; column = 0 }
>         }
>     )
> )
> 
> ╭─[ 21.25ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ([], { lines = [|"hello"|]                                           │
> │                position = { line = 0                                         │
> │                             column = 0 } })                                  │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline many1 p =
>     p >>=
>         fun head ->
>             many p >>=
>                 fun tail ->
>                     returnP (head :: tail)
>     <?> $"many1 {getLabel p}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = many1 parser
> runOnInput parser2 input |> _assertEqual (
>     Failure (
>         "many1 H",
>         "Unexpected 'h'",
>         {
>             currentLine = "hello"
>             line = 0
>             column = 0
>         }
>     )
> )
> 
> ╭─[ 29.58ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Failure ("many1 H", "Unexpected 'h'", { currentLine = "hello"                │
> │                                         line = 0                             │
> │                                         column = 0 })                        │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline opt p =
>     let some = p |>> Some
>     let none = returnP None
>     (some <|> none)
>     <?> $"opt {getLabel p}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "hello"
> let parser = satisfy (fun c -> c = 'H') "H"
> let parser2 = opt parser
> runOnInput parser2 input |> _assertEqual (
>     Success (
>         None,
>         {
>             lines = [[| "hello" |]]
>             position = { line = 0; column = 0 }
>         }
>     )
> )
> 
> ╭─[ 25.26ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success (None, { lines = [|"hello"|]                                         │
> │                  position = { line = 0                                       │
> │                               column = 0 } })                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (.>>) p1 p2 =
>     p1 .>>. p2
>     |> mapP fst
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (>>.) p1 p2 =
>     p1 .>>. p2
>     |> mapP snd
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline between p1 p2 p3 =
>     p1 >>. p2 .>> p3
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "[[Hello]]"
> let parser =
>     between
>         (satisfy (fun c -> c = '[[') "[[")
>         (many (satisfy (fun c -> [[ 'a' .. 'z' ]] @ [[ 'A' .. 'Z' ]] |> 
> List.contains c) "letter"))
>         (satisfy (fun c -> c = ']]') "]]")
> runOnInput parser input |> _assertEqual (
>     Success (
>         [[ 'H'; 'e'; 'l'; 'l'; 'o' ]],
>         {
>             lines = [[| "[[Hello]]" |]]
>             position = { line = 0; column = 7 }
>         }
>     )
> )
> 
> ╭─[ 77.46ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { lines = [|"[Hello]"|]                  │
> │                                       position = { line = 0                  │
> │                                                    column = 7 } })           │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline sepBy1 p sep =
>     let sepThenP = sep >>. p
>     p .>>. many sepThenP
>     |>> fun (p, pList) -> p :: pList
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline sepBy p sep =
>     sepBy1 p sep <|> returnP [[]]
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello,World"
> let parser = sepBy (many (satisfy (fun c -> c <> ',') "not comma")) (satisfy 
> (fun c -> c = ',') "comma")
> runOnInput parser input |> _assertEqual (
>     Success (
>         [[ [[ 'H'; 'e'; 'l'; 'l'; 'o' ]]; [[ 'W'; 'o'; 'r'; 'l'; 'd'; '\n' ]] 
> ]],
>         {
>             lines = [[| "Hello,World" |]]
>             position = { line = 1; column = 0 }
>         }
>     )
> )
> 
> ╭─[ 53.48ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ([['H'; 'e'; 'l'; 'l'; 'o']; ['W'; 'o'; 'r'; 'l'; 'd'; '\010']], {   │
> │ lines = [|"Hello,World"|]                                                    │
> │                                                                              │
> │ position = { line = 1                                                        │
> │                                                                              │
> │ column = 0 } })                                                              │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline pchar charToMatch =
>     satisfy ((=) charToMatch) $"%c{charToMatch}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline anyOf listOfChars =
>     listOfChars
>     |> List.map pchar
>     |> choice
>     <?> $"anyOf %A{listOfChars}"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = anyOf [[ 'H'; 'e'; 'l'; 'o' ]] |> many
> runOnInput parser input |> _assertEqual (
>     Success (
>         [[ 'H'; 'e'; 'l'; 'l'; 'o' ]],
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 5 }
>         }
>     )
> )
> 
> ╭─[ 57.23ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { lines = [|"Hello"|]                    │
> │                                       position = { line = 0                  │
> │                                                    column = 5 } })           │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline charListToStr charList =
>     charList |> List.toArray |> String
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline manyChars cp =
>     many cp
>     |>> charListToStr
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline manyChars1 cp =
>     many1 cp
>     |>> charListToStr
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = manyChars1 (anyOf [[ 'H'; 'e'; 'l'; 'o' ]])
> runOnInput parser input |> _assertEqual (
>     Success (
>         "Hello",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 5 }
>         }
>     )
> )
> 
> ╭─[ 36.50ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ("Hello", { lines = [|"Hello"|]                                      │
> │                     position = { line = 0                                    │
> │                                  column = 5 } })                             │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline pstring str =
>     str
>     |> List.ofSeq
>     |> List.map pchar
>     |> sequence
>     |> mapP charListToStr
>     <?> str
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = pstring "Hello"
> runOnInput parser input |> _assertEqual (
>     Success (
>         "Hello",
>         {
>             lines = [[| "Hello" |]]
>             position = { line = 0; column = 5 }
>         }
>     )
> )
> 
> ╭─[ 29.68ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success ("Hello", { lines = [|"Hello"|]                                      │
> │                     position = { line = 0                                    │
> │                                  column = 5 } })                             │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let whitespaceChar =
>     satisfy Char.IsWhiteSpace "whitespace"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let spaces = many whitespaceChar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let spaces1 = many1 whitespaceChar
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "  Hello"
> let parser = spaces1 .>>. pstring "Hello"
> runOnInput parser input |> _assertEqual (
>     Success (
>         ([[ ' '; ' ' ]], "Hello"),
>         {
>             lines = [[| "  Hello" |]]
>             position = { line = 0; column = 7 }
>         }
>     )
> )
> 
> ╭─[ 33.11ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success (([' '; ' '], "Hello"), { lines = [|"  Hello"|]                      │
> │                                   position = { line = 0                      │
> │                                                column = 7 } })               │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let digitChar =
>     satisfy Char.IsDigit "digit"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let input = fromStr "Hello"
> let parser = digitChar
> runOnInput parser input |> _assertEqual (
>     Failure (
>         "digit",
>         "Unexpected 'H'",
>         {
>             currentLine = "Hello"
>             line = 0
>             column = 0
>         }
>     )
> )
> 
> ╭─[ 13.31ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Failure ("digit", "Unexpected 'H'", { currentLine = "Hello"                  │
> │                                       line = 0                               │
> │                                       column = 0 })                          │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let pint =
>     let inline resultToInt (sign, digits) =
>         let i = int digits
>         match sign with
>         | Some ch -> -i
>         | None -> i
> 
>     let digits = manyChars1 digitChar
> 
>     opt (pchar '-') .>>. digits
>     |> mapP resultToInt
>     <?> "integer"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run pint "-123"
> |> _assertEqual (
>     Success (
>         -123,
>         {
>             lines = [[| "-123" |]]
>             position = { line = 0; column = 4 }
>         }
>     )
> )
> 
> ╭─[ 17.51ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success (-123, { lines = [|"-123"|]                                          │
> │                  position = { line = 0                                       │
> │                               column = 4 } })                                │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let pfloat =
>     let inline resultToFloat (((sign, digits1), point), digits2) =
>         let fl = float $"{digits1}.{digits2}"
>         match sign with
>         | Some ch -> -fl
>         | None -> fl
> 
>     let digits = manyChars1 digitChar
> 
>     opt (pchar '-') .>>. digits .>>. pchar '.' .>>. digits
>     |> mapP resultToFloat
>     <?> "float"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> run pfloat "-123.45"
> |> _assertEqual (
>     Success (
>         -123.45,
>         {
>             lines = [[| "-123.45" |]]
>             position = { line = 0; column = 7 }
>         }
>     )
> )
> 
> ╭─[ 19.34ms - stdout ]─────────────────────────────────────────────────────────╮
> │ Success (-123.45, { lines = [|"-123.45"|]                                    │
> │                     position = { line = 0                                    │
> │                                  column = 7 } })                             │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline createParserForwardedToRef<'a> () =
>     let mutable parserRef : Parser<'a> =
>         {
>             label = "unknown"
>             parseFn = fun _ -> failwith "unfixed forwarded parser"
>         }
> 
>     let wrapperParser =
>         { parserRef with
>             parseFn = fun input -> runOnInput parserRef input
>         }
> 
>     wrapperParser, (fun v -> parserRef <- v)
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline (>>%) p x =
>     p
>     |>> fun _ -> x
00:00:15 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 45178 }
00:00:15   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
    "nbconvert",
    "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb",
    "--to",
    "html",
    "--HTMLExporter.theme=dark",
]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:16 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb to html
00:00:16 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:16 verbose #7 !   validate(nb)
00:00:16 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:16 verbose #9 !   return _pygments_highlight(
00:00:17 verbose #10 ! [NbConvertApp] Writing 413689 bytes to /home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.html
00:00:17 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 }
00:00:17   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 }
00:00:17   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
    "-c",
    "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:17 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:17   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:17   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 46135 }
00:00:00   debug #1 writeDibCode / output: Fs / path: Parser.dib
00:00:00   debug #1 writeDibCode / output: Fs / path: JsonParser.dib
00:00:00   debug #3 parseDibCode / output: Fs / file: Parser.dib
00:00:00   debug #3 parseDibCode / output: Fs / file: JsonParser.dib
In [ ]:
{ pwsh ../apps/spiral/build.ps1 } | Invoke-Block
00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Supervisor.dib", "--retries", "3"])) }
00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
    "repl",
    "--exit-after-run",
    "--run",
    "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib",
    "--output-path",
    "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb",
]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ # Supervisor (Polyglot)                                                      │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com
> mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli
> ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/
> 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll"
> #r 
> @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha
> rp.Json.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open SpiralFileSystem.Operators
> open Microsoft.AspNetCore.SignalR.Client
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### sendJson                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline sendJson (port : int) (json : string) = async {
>     let host = "127.0.0.1"
>     let! portOpen = SpiralNetworking.test_port_open host port
>     if portOpen then
>         try
>             let connection = 
> HubConnectionBuilder().WithUrl($"http://{host}:{port}").Build()
>             do! connection.StartAsync () |> Async.AwaitTask
>             let! result = connection.InvokeAsync<string>("ClientToServerMsg", 
> json) |> Async.AwaitTask
>             do! connection.StopAsync () |> Async.AwaitTask
>             trace Verbose (fun () -> $"Supervisor.sendJson / port: {port} / 
> json: {json |> SpiralSm.ellipsis_end 200} / result: {result |> Option.ofObj |> 
> Option.map (SpiralSm.ellipsis_end 200)}") _locals
>             return Some result
>         with ex ->
>             trace Critical (fun () -> $"Supervisor.sendJson / port: {port} / 
> json: {json |> SpiralSm.ellipsis_end 200} / ex: {ex |> 
> SpiralSm.format_exception}") _locals
>             return None
>     else
>         trace Debug (fun () -> "Supervisor.sendJson / port: {port} / error: port
> not open") _locals
>         return None
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### sendObj                                                                  │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline sendObj port obj =
>     obj
>     |> System.Text.Json.JsonSerializer.Serialize
>     |> sendJson port
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### VSCPos                                                                   │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type VSCPos = {| line : int; character : int |}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### VSCRange                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type VSCRange = VSCPos * VSCPos
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### RString                                                                  │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type RString = VSCRange * string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### TracedError                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TracedError = {| trace : string list; message : string |}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### ClientErrorsRes                                                          │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ClientErrorsRes =
>     | FatalError of string
>     | TracedError of TracedError
>     | PackageErrors of {| uri : string; errors : RString list |}
>     | TokenizerErrors of {| uri : string; errors : RString list |}
>     | ParserErrors of {| uri : string; errors : RString list |}
>     | TypeErrors of {| uri : string; errors : RString list |}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### workspaceRoot                                                            │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let workspaceRoot = SpiralFileSystem.get_workspace_root ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### awaitCompiler                                                            │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline awaitCompiler port cancellationToken = async {
>     let host = "127.0.0.1"
>     let struct (ct, disposable) = cancellationToken |> 
> SpiralThreading.new_disposable_token
>     let! ct = ct |> SpiralAsync.merge_cancellation_token_with_default_async
> 
>     let compiler = MailboxProcessor.Start (fun inbox -> async {
>         let! availablePort = SpiralNetworking.get_available_port (Some 180) host
> port
>         if availablePort <> port then
>             inbox.Post (port, false)
>         else
>             let compilerPath =
>                 workspaceRoot </> "deps/The-Spiral-Language/The Spiral Language 
> 2/artifacts/bin/The Spiral Language 2/release"
>                 |> System.IO.Path.GetFullPath
> 
>             let dllPath = compilerPath </> "Spiral.dll"
> 
>             let! exitCode, result =
>                 SpiralRuntime.execution_options (fun x ->
>                     { x with
>                         l0 = $@"dotnet ""{dllPath}"" --port {availablePort} 
> --default-int i32 --default-float f64"
>                         l1 = Some ct
>                         l3 = Some (fun struct (_, line, _) -> async {
>                             if line |> SpiralSm.contains 
> $"System.IO.IOException: Failed to bind to address http://{host}:{port}: address
> already in use." then
>                                 inbox.Post (port, false)
> 
>                             if line |> SpiralSm.contains $"Server bound to: 
> http://localhost:{availablePort}" then
>                                 let rec loop retry = async {
>                                     do!
>                                         SpiralNetworking.wait_for_port_access 
> (Some 100) true host availablePort
>                                         |> Async.runWithTimeoutAsync 500
>                                         |> Async.Ignore
> 
>                                     let _locals () = $"port: {availablePort} / 
> retry: {retry} / {_locals ()}"
>                                     try
>                                         let pingObj = {| Ping = true |}
>                                         let! pingResult = pingObj |> sendObj 
> availablePort
>                                         trace Verbose (fun () -> $"awaitCompiler
> / Ping / result: '{pingResult}'") _locals
> 
>                                         inbox.Post (availablePort, true)
>                                     with ex ->
>                                         trace Verbose (fun () -> $"awaitCompiler
> / Ping / ex: {ex |> SpiralSm.format_exception}") _locals
>                                         do! Async.Sleep 10
>                                         do! loop (retry + 1)
>                                 }
>                                 do! loop 0
>                         })
>                         l6 = Some workspaceRoot
>                     }
>                 )
>                 |> SpiralRuntime.execute_with_options_async
> 
>             trace Debug (fun () -> $"awaitCompiler / exitCode: {exitCode} / 
> result: {result}") _locals
>             disposable.Dispose ()
>     }, ct)
> 
>     let! serverPort, managed = compiler.Receive ()
> 
>     let connection = 
> HubConnectionBuilder().WithUrl($"http://{host}:{serverPort}").Build ()
>     do! connection.StartAsync () |> Async.AwaitTask
> 
>     let event = Event<_> ()
>     let disposable' = connection.On<string> ("ServerToClientMsg", event.Trigger)
>     let stream =
>         FSharp.Control.AsyncSeq.unfoldAsync
>             (fun () -> async {
>                 let! msg = event.Publish |> Async.AwaitEvent
>                 return Some (msg |> 
> FSharp.Json.Json.deserialize<ClientErrorsRes>, ())
>             })
>             ()
> 
>     let disposable' =
>         new_disposable (fun () ->
>             async {
>                 disposable'.Dispose ()
>                 do! connection.StopAsync () |> Async.AwaitTask
>                 disposable.Dispose ()
>                 if managed
>                 then do!
>                     SpiralNetworking.wait_for_port_access (Some 100) false host 
> serverPort
>                     |> Async.runWithTimeoutAsync 1500
>                     |> Async.Ignore
>             }
>             |> Async.RunSynchronously
>         )
> 
>     return
>         serverPort,
>         stream,
>         ct,
>         disposable'
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### getFilePathFromUri                                                       │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline getFilePathFromUri uri =
>     match System.Uri.TryCreate (uri, System.UriKind.Absolute) with
>     | true, uri -> uri.AbsolutePath |> System.IO.Path.GetFullPath
>     | _ -> failwith "invalid uri"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### getCompilerPort                                                          │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline getCompilerPort () =
>     13805
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### serialize_obj                                                            │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
>     let serializeObj obj =
>         try
>             obj
>             |> FSharp.Json.Json.serialize
>             |> SpiralSm.replace "\\\\" "\\"
>             |> SpiralSm.replace "\\r\\n" "\n"
>             |> SpiralSm.replace "\\n" "\n"
>         with ex ->
>             trace Critical (fun () -> "Supervisor.serialize_obj / obj: %A{obj}")
> _locals
>             ""
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### Backend                                                                  │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Backend =
>     | Fsharp
>     | Cuda
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### buildFile                                                                │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline buildFile backend timeout port cancellationToken path =
>     let rec loop retry = async {
>         let fullPath = path |> System.IO.Path.GetFullPath
>         let fileDir = fullPath |> System.IO.Path.GetDirectoryName
>         let fileName = fullPath |> System.IO.Path.GetFileNameWithoutExtension
>         let! code = fullPath |> SpiralFileSystem.read_all_text_async
> 
>         let stream, disposable = fileDir |> FileSystem.watchDirectory (fun _ -> 
> true)
>         use _ = disposable
> 
>         let struct (token, disposable) = SpiralThreading.new_disposable_token 
> cancellationToken
>         use _ = disposable
> 
>         let port = port |> Option.defaultWith getCompilerPort
>         let! serverPort, errors, ct, disposable = awaitCompiler port (Some 
> token)
>         use _ = disposable
> 
>         let outputFileName =
>             match backend with
>             | Fsharp -> $"{fileName}.fsx"
>             | Cuda -> $"{fileName}.py"
> 
>         let outputContentSeq =
>             stream
>             |> FSharp.Control.AsyncSeq.chooseAsync (function
>                 | _, (FileSystem.FileSystemChange.Changed (path, Some text))
>                     when (path |> System.IO.Path.GetFileName) = outputFileName
>                     ->
>                         // fileDir </> path |> 
> SpiralFileSystem.read_all_text_retry_async
>                         text |> Some |> Async.init
>                 | _ -> None |> Async.init
>             )
>             |> FSharp.Control.AsyncSeq.map (fun content ->
>                 Some (content |> SpiralSm.replace "\r\n" "\n"), None
>             )
> 
>         let inline printErrorData (data : {| uri : string; errors : RString list
> |}) =
>             let fileName = data.uri |> System.IO.Path.GetFileName
>             let errors =
>                 data.errors
>                 |> List.map snd
>                 |> SpiralSm.concat "\n"
>             $"{fileName}:\n{errors}"
> 
>         let errorsSeq =
>             errors
>             |> FSharp.Control.AsyncSeq.choose (fun error ->
>                 match error with
>                 | FatalError message ->
>                     Some (message, error)
>                 | TracedError data ->
>                     Some (data.message, error)
>                 | PackageErrors data when data.errors |> List.isEmpty |> not ->
>                     Some (data |> printErrorData, error)
>                 | TokenizerErrors data when data.errors |> List.isEmpty |> not 
> ->
>                     Some (data |> printErrorData, error)
>                 | ParserErrors data when data.errors |> List.isEmpty |> not ->
>                     Some (data |> printErrorData, error)
>                 | TypeErrors data when data.errors |> List.isEmpty |> not ->
>                     Some (data |> printErrorData, error)
>                 | _ -> None
>             )
>             |> FSharp.Control.AsyncSeq.map (fun (message, error) ->
>                 None, Some (message, error)
>             )
> 
>         let timerSeq =
>             500
>             |> FSharp.Control.AsyncSeq.intervalMs
>             |> FSharp.Control.AsyncSeq.map (fun _ -> None, None)
> 
>         let outputSeq =
>             [[ outputContentSeq; errorsSeq; timerSeq ]]
>             |> FSharp.Control.AsyncSeq.mergeAll
> 
>         let! outputChild =
>             ((None, [[]], 0), outputSeq)
>             ||> FSharp.Control.AsyncSeq.scan (
>                 fun (outputContentResult, errors, typeErrorCount) 
> (outputContent, error) ->
>                     trace Debug (fun () -> $"Supervisor.buildFile / 
> AsyncSeq.scan / outputContent:\n{outputContent |> Option.defaultValue 
> System.String.Empty |> SpiralSm.ellipsis_end 300} / errors: {errors |> 
> serializeObj} / outputContentResult: {outputContentResult} / typeErrorCount: 
> {typeErrorCount} / retry: {retry} / error: {error} / path: {path}") _locals
>                     match outputContent, error with
>                     | Some outputContent, None -> Some outputContent, errors, 
> typeErrorCount
>                     | None, Some (_, FatalError "File main has a type error 
> somewhere in its path.") ->
>                         outputContentResult, errors, typeErrorCount + 1
>                     | None, Some error -> outputContentResult, error :: errors, 
> typeErrorCount
>                     | None, None when typeErrorCount >= 1 ->
>                         outputContentResult, errors, typeErrorCount + 1
>                     | _ -> outputContentResult, errors, typeErrorCount
>             )
>             |> FSharp.Control.AsyncSeq.takeWhileInclusive (fun (outputContent, 
> errors, typeErrorCount) ->
>                 trace Debug (fun () -> $"Supervisor.buildFile / 
> takeWhileInclusive / outputContent:\n{outputContent |> Option.defaultValue 
> System.String.Empty |> SpiralSm.ellipsis_end 300} / errors: {errors |> 
> serializeObj} / typeErrorCount: {typeErrorCount} / retry: {retry} / path: 
> {path}") _locals
>     #if INTERACTIVE
>                 let errorWait = 2
>     #else
>                 let errorWait = 2
>     #endif
>                 match outputContent, errors with
>                 | None, [[]] when typeErrorCount > errorWait -> false
>                 | None, [[]] -> true
>                 | _ -> false
>             )
>             |> FSharp.Control.AsyncSeq.tryLast
>             |> Async.withCancellationToken ct
>             |> Async.catch
>             |> Async.runWithTimeoutAsync timeout
>             |> Async.StartChild
> 
>         // do! Async.Sleep 60
> 
>         let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
> 
>         let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} 
> |}
>         let! _fileOpenResult = fileOpenObj |> sendObj serverPort
> 
>         // do! Async.Sleep 60
> 
>         let backendId =
>             match backend with
>             | Fsharp -> "Fsharp"
>             | Cuda -> "Python + Cuda"
>         let buildFileObj = {| BuildFile = {| uri = fullPathUri; backend = 
> backendId |} |}
>         let! _buildFileResult = buildFileObj |> sendObj serverPort
> 
>         let! result, typeErrorCount =
>             outputChild
>             |> Async.map (function
>                 | Some (Ok (Some (outputCode, errors, typeErrorCount))) ->
>                     (outputCode, errors |> List.distinct |> List.rev), 
> typeErrorCount
>                 | Some (Error ex) ->
>                     trace Critical (fun () -> $"Supervisor.buildFile / error: 
> {ex |> SpiralSm.format_exception} / retry: {retry}") _locals
>                     (None, [[]]), 0
>                 | _ -> (None, [[]]), 0
>             )
>         
>         match result with
>         | None, _ when typeErrorCount > 0 && retry = 0 ->
>             return! loop (retry + 1)
>         | _ ->
>             if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then
>                 let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
>                 let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]]
> |} |}
>                 let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort
>                 ()
> 
>             let outputPath = fileDir </> outputFileName
>             return outputPath, result
>     }
>     loop 0
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### SpiralInput                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type SpiralInput =
>     | Spi of string * string option
>     | Spir of string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### persistCode                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline persistCode backend input = async {
>     let targetDir = workspaceRoot </> "target/spiral_Eval"
> 
>     let packagesDir = targetDir </> "packages"
> 
>     let hashHex = $"%A{backend}%A{input}" |> SpiralCrypto.hash_text
> 
>     let codeDir = packagesDir </> hashHex
>     codeDir |> System.IO.Directory.CreateDirectory |> ignore
> 
>     let moduleName = "main"
> 
>     let spirModule, spiModule =
>         match input with
>         | Spi (spi, Some spir) -> true, true
>         | Spi (spi, None) -> false, true
>         | Spir spir -> true, false
>         |> fun (spir, spi) ->
>             (if spir then $"real_{moduleName}*-" else ""),
>             if spi then moduleName else ""
> 
>     let spiprojPath = codeDir </> "package.spiproj"
>     let spiprojCode =
>         $"""packageDir: {workspaceRoot </> "lib"}
> packages:
>     |core-
>     spiral-
> modules:
>     {spirModule}
>     {spiModule}
> """
>     do! spiprojCode |> SpiralFileSystem.write_all_text_exists spiprojPath
> 
>     let spirPath = codeDir </> $"real_{moduleName}.spir"
>     let spiPath = codeDir </> $"{moduleName}.spi"
> 
>     let spirCode, spiCode =
>         match input with
>         | Spi (spi, Some spir) -> Some spir, Some spi
>         | Spi (spi, None) -> None, Some spi
>         | Spir spir -> Some spir, None
> 
>     match spirCode with
>     | Some spir -> do! spir |> SpiralFileSystem.write_all_text_exists spirPath
>     | None -> ()
>     match spiCode with
>     | Some spi -> do! spi |> SpiralFileSystem.write_all_text_exists spiPath
>     | None -> ()
> 
>     let spiralPath =
>         match input with
>         | Spi _ -> spiPath
>         | Spir _ -> spirPath
>     match backend with
>     | None -> return spiralPath, None
>     | Some backend ->
>         let outputFileName =
>             let fileName =
>                 match input with
>                 | Spi _ -> moduleName
>                 | Spir _ -> $"real_{moduleName}"
>             match backend with
>             | Fsharp -> $"{fileName}.fsx"
>             | Cuda -> $"{fileName}.py"
>         let outputPath = codeDir </> outputFileName
>         if outputPath |> System.IO.File.Exists |> not
>         then return spiralPath, None
>         else
>             let! oldCode = spiralPath |> SpiralFileSystem.read_all_text_async
>             if oldCode <> (spiCode |> Option.defaultValue (spirCode |> 
> Option.defaultValue ""))
>             then return spiralPath, None
>             else
>                 let! outputCode = outputPath |> 
> SpiralFileSystem.read_all_text_async
>                 return spiralPath, Some (outputPath, outputCode |> 
> SpiralSm.replace "\r\n" "\n")
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### buildCode                                                                │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let buildCode backend isCache timeout cancellationToken input = async {
>     let! mainPath, outputCache = input |> persistCode (Some backend)
>     match outputCache with
>     | Some (outputPath, outputCode) when isCache -> return mainPath, 
> (outputPath, Some outputCode), [[]]
>     | _ ->
>         let! outputPath, (outputCode, errors) = mainPath |> buildFile backend 
> timeout None cancellationToken
>         return mainPath, (outputPath, outputCode), errors
> }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl app () =
>     console.write_line "text"
>     1i32
> 
> inl main () =
>     app
>     |> dyn
>     |> ignore
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp false 15000 None
> |> Async.runWithTimeout 15000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some """let rec closure1 () () : unit =
>     let v0 : (string -> unit) = System.Console.WriteLine
>     let v1 : string = "text"
>     v0 v1
> and closure0 () () : int32 =
>     let v0 : unit = ()
>     let v1 : (unit -> unit) = closure1()
>     let v2 : unit = (fun () -> v1 (); v0) ()
>     1
> let v0 : (unit -> int32) = closure0()
> ()
> """,
>         [[]]
>     )
> )
> 
> ╭─[ 4.01s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:00:09 verbose #1 networking.test_port_open / { port = 13805; ex =    │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:07   debug #1 runtime.execute_with_options_async / { options = {  │
> │ command = dotnet                                                             │
> │ "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral     │
> │ Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port    │
> │ 13805 --default-int i32 --default-float f64; cancellation_token = Some       │
> │ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
> │ Some <fun:buildCode@6-92>; stdin = None; trace = true; working_directory =   │
> │ Some "/home/runner/work/polyglot/polyglot" } }                               │
> │ 00:00:10 verbose #2 networking.test_port_open / { port = 13805; ex =    │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #3 networking.wait_for_port_access / { port = 13805;   │
> │ retry = 0; timeout = Some 100; status = true }                               │
> │ 00:00:10 verbose #4 networking.test_port_open / { port = 13805; ex =    │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:07 verbose #2 > 00:00:00   debug #1 pwd:                     │
> │ /home/runner/work/polyglot/polyglot                                          │
> │ 00:00:07 verbose #3 > 00:00:00   debug #2 dllPath:                 │
> │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
> │ Language 2/artifacts/bin/The Spiral Language 2/release                       │
> │ 00:00:07 verbose #4 > 00:00:00   debug #3 targetDir:               │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval                       │
> │ 00:00:10 verbose #5 networking.test_port_open / { port = 13805; ex =    │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #6 networking.test_port_open / { port = 13805; ex =    │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #7 networking.test_port_open / { port = 13805; ex =    │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #8 networking.test_port_open / { port = 13805; ex =    │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #9 networking.test_port_open / { port = 13805; ex =    │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #10 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #11 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #12 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #13 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #14 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #15 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #16 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #17 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #18 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #19 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #20 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #21 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #22 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #23 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #24 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #25 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #26 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #27 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:07 verbose #5 > Starting the Spiral Server. It is bound to:       │
> │ http://localhost:13805                                                       │
> │ 00:00:10 verbose #28 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #29 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #30 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:10 verbose #31 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:05 verbose #1 Supervisor.sendJson / port: 13805 / json:           │
> │ {"Ping":true} / result:                                                      │
> │ 00:00:05 verbose #2 awaitCompiler / Ping / result: 'Some(null)' / port: │
> │ 13805 / retry: 0                                                             │
> │ 00:00:08 verbose #6 > Server bound to: http://localhost:13805           │
> │ 00:00:05   debug #3 Supervisor.buildFile / takeWhileInclusive /         │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:05   debug #4 Supervisor.buildFile / AsyncSeq.scan /              │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:05   debug #5 Supervisor.buildFile / takeWhileInclusive /         │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:05 verbose #6 Supervisor.sendJson / port: 13805 / json:           │
> │ {"FileOpen":{"spiText":"inl app () =\n    console.write_line                 │
> │ \u0022text\u0022\n    1i32\n\ninl main                                       │
> │ ...et/spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69f2d6d04b │
> │ 9dc60aebd08a0d6/main.spi"}} / result:                                        │
> │ 00:00:05 verbose #7 Supervisor.sendJson / port: 13805 / json:           │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
> │ lyglot/target/spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69 │
> │ f2d6d04b9dc60aebd08a0d6/main.spi"}} / result:                                │
> │ 00:00:08 verbose #7 > 00:00:01   debug #4                          │
> │ Supervisor.supervisor_server.BuildFile / file:                               │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:05   debug #8 Supervisor.buildFile / AsyncSeq.scan /              │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:05   debug #9 Supervisor.buildFile / takeWhileInclusive /         │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:06   debug #10 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:06   debug #11 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:06   debug #12 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:06   debug #13 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:07   debug #14 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:07   debug #15 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:07   debug #16 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:07   debug #17 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:07   debug #18 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │ let rec closure1 () () : unit =                                              │
> │     let v0 : (string -> unit) = System.Console.WriteLine                     │
> │     let v1 : string = "text"                                                 │
> │     v0 v1                                                                    │
> │ and closure0 () () : i...t v0 : unit = ()                                    │
> │     let v1 : (unit -> unit) = closure1()                                     │
> │     let v2 : unit = (fun () -> v1 (); v0) ()                                 │
> │     1                                                                        │
> │ let v0 : (unit -> int32) = closure0()                                        │
> │ ()                                                                           │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:07   debug #19 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │ let rec closure1 () () : unit =                                              │
> │     let v0 : (string -> unit) = System.Console.WriteLine                     │
> │     let v1 : string = "text"                                                 │
> │     v0 v1                                                                    │
> │ and closure0 () () : i...t v0 : unit = ()                                    │
> │     let v1 : (unit -> unit) = closure1()                                     │
> │     let v2 : unit = (fun () -> v1 (); v0) ()                                 │
> │     1                                                                        │
> │ let v0 : (unit -> int32) = closure0()                                        │
> │ ()                                                                           │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:07 verbose #20 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22cc │
> │ d04317d5605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6"]}} / result:   │
> │ 00:00:13 verbose #32 networking.wait_for_port_access / { port = 13805;  │
> │ retry = 0; timeout = Some 100; status = false }                              │
> │ 00:00:13 verbose #33 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:08   debug #21 FileSystem.watchWithFilter / Disposing watch       │
> │ stream / filter: FileName, LastWrite                                         │
> │ Some                                                                         │
> │   (Some                                                                      │
> │      "let rec closure1 () () : unit =                                        │
> │     let v0 : (string -> unit) = System.Console.WriteLine                     │
> │     let v1 : string = "text"                                                 │
> │     v0 v1                                                                    │
> │ and closure0 () () : int32 =                                                 │
> │     let v0 : unit = ()                                                       │
> │     let v1 : (unit -> unit) = closure1()                                     │
> │     let v2 : unit = (fun () -> v1 (); v0) ()                                 │
> │     1                                                                        │
> │ let v0 : (unit -> int32) = closure0()                                        │
> │ ()                                                                           │
> │ ",                                                                           │
> │    [])                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> ""
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "Cannot find `main` in file main." ]]
>     )
> )
> 
> ╭─[ 3.35s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:00:13 verbose #34 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:11   debug #8 runtime.execute_with_options_async / { options = {  │
> │ command = dotnet                                                             │
> │ "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral     │
> │ Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port    │
> │ 13805 --default-int i32 --default-float f64; cancellation_token = Some       │
> │ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
> │ Some <fun:buildCode@6-92>; stdin = None; trace = true; working_directory =   │
> │ Some "/home/runner/work/polyglot/polyglot" } }                               │
> │ 00:00:14 verbose #35 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #36 networking.wait_for_port_access / { port = 13805;  │
> │ retry = 0; timeout = Some 100; status = true }                               │
> │ 00:00:14 verbose #37 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #38 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:11 verbose #9 > 00:00:00   debug #1 pwd:                     │
> │ /home/runner/work/polyglot/polyglot                                          │
> │ 00:00:11 verbose #10 > 00:00:00   debug #2 dllPath:                │
> │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
> │ Language 2/artifacts/bin/The Spiral Language 2/release                       │
> │ 00:00:11 verbose #11 > 00:00:00   debug #3 targetDir:              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval                       │
> │ 00:00:14 verbose #39 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #40 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #41 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #42 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #43 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #44 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #45 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #46 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #47 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #48 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #49 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #50 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #51 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #52 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #53 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #54 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #55 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #56 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #57 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #58 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:11 verbose #12 > Starting the Spiral Server. It is bound to:      │
> │ http://localhost:13805                                                       │
> │ 00:00:14 verbose #59 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #60 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #61 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:08 verbose #22 Supervisor.sendJson / port: 13805 / json:          │
> │ {"Ping":true} / result:                                                      │
> │ 00:00:08 verbose #23 awaitCompiler / Ping / result: 'Some(null)' /      │
> │ port: 13805 / retry: 0                                                       │
> │ 00:00:11 verbose #13 > Server bound to: http://localhost:13805          │
> │ 00:00:08   debug #24 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:08   debug #25 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:08   debug #26 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:08 verbose #27 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileOpen":{"spiText":"","uri":"file:///home/runner/work/polyglot/polyglot/ │
> │ target/spiral_Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e68c0feb │
> │ 33db55c4d28170aa/main.spi"}} / result:                                       │
> │ 00:00:08 verbose #28 Supervisor.sendJson / port: 13805 / json:          │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
> │ lyglot/target/spiral_Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e │
> │ 68c0feb33db55c4d28170aa/main.spi"}} / result:                                │
> │ 00:00:12 verbose #14 > 00:00:00   debug #4                         │
> │ Supervisor.supervisor_server.BuildFile / file:                               │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:09   debug #29 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:09   debug #30 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:09   debug #31 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:09   debug #32 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:10   debug #33 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:10   debug #34 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:10   debug #35 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:10   debug #36 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:11   debug #37 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:11   debug #38 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:11   debug #39 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error: Some((Cannot find `main` in file main., FatalError "Cannot find       │
> │ `main` in file main.")) / path:                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:11   debug #40 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [                                                                 │
> │   [                                                                          │
> │     "Cannot find `main` in file main.",                                      │
> │     {                                                                        │
> │       "FatalError": "Cannot find `main` in file main."                       │
> │     }                                                                        │
> │   ]                                                                          │
> │ ] / typeErrorCount: 0 / retry: 0 / path:                                     │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:11 verbose #41 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a653 │
> │ 42ccc7da0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa"]}} / result:   │
> │ 00:00:17 verbose #62 networking.wait_for_port_access / { port = 13805;  │
> │ retry = 0; timeout = Some 100; status = false }                              │
> │ 00:00:17 verbose #63 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:11   debug #42 FileSystem.watchWithFilter / Disposing watch       │
> │ stream / filter: FileName, LastWrite                                         │
> │ Some (None, ["Cannot find `main` in file main."])                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () =
>     1i32 / 0i32
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "An attempt to divide by zero has been detected at compile time." ]]
>     )
> )
> 
> ╭─[ 3.15s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:00:17 verbose #64 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14   debug #15 runtime.execute_with_options_async / { options = { │
> │ command = dotnet                                                             │
> │ "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral     │
> │ Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port    │
> │ 13805 --default-int i32 --default-float f64; cancellation_token = Some       │
> │ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
> │ Some <fun:buildCode@6-92>; stdin = None; trace = true; working_directory =   │
> │ Some "/home/runner/work/polyglot/polyglot" } }                               │
> │ 00:00:17 verbose #65 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #66 networking.wait_for_port_access / { port = 13805;  │
> │ retry = 0; timeout = Some 100; status = true }                               │
> │ 00:00:17 verbose #67 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #68 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #16 > 00:00:00   debug #1 pwd:                    │
> │ /home/runner/work/polyglot/polyglot                                          │
> │ 00:00:14 verbose #17 > 00:00:00   debug #2 dllPath:                │
> │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
> │ Language 2/artifacts/bin/The Spiral Language 2/release                       │
> │ 00:00:14 verbose #18 > 00:00:00   debug #3 targetDir:              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval                       │
> │ 00:00:17 verbose #69 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #70 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #71 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #72 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #73 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #74 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #75 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #76 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #77 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #78 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #79 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #80 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #81 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #82 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #83 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #84 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #85 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #86 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #87 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #88 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14 verbose #19 > Starting the Spiral Server. It is bound to:      │
> │ http://localhost:13805                                                       │
> │ 00:00:17 verbose #89 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #90 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #91 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #92 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:12 verbose #43 Supervisor.sendJson / port: 13805 / json:          │
> │ {"Ping":true} / result:                                                      │
> │ 00:00:12 verbose #44 awaitCompiler / Ping / result: 'Some(null)' /      │
> │ port: 13805 / retry: 0                                                       │
> │ 00:00:15 verbose #20 > Server bound to: http://localhost:13805          │
> │ 00:00:12   debug #45 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:12   debug #46 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:12   debug #47 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:12 verbose #48 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileOpen":{"spiText":"inl main () =\n    1i32 /                            │
> │ 0i32\n","uri":"file:///home/runner/work/polyglot/p...et/spiral_Eval/packages │
> │ /fef9812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi"} │
> │ } / result:                                                                  │
> │ 00:00:12 verbose #49 Supervisor.sendJson / port: 13805 / json:          │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
> │ lyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6ff05910b73 │
> │ ead9e8c4f27f88d2a5cdfb2/main.spi"}} / result:                                │
> │ 00:00:15 verbose #21 > 00:00:00   debug #4                         │
> │ Supervisor.supervisor_server.BuildFile / file:                               │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:12   debug #50 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:12   debug #51 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:13   debug #52 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:13   debug #53 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:13   debug #54 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:13   debug #55 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:14   debug #56 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:14   debug #57 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:14   debug #58 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error: Some((An attempt to divide by zero has been detected at compile       │
> │ time., TracedError                                                           │
> │   { message = "An attempt to divide by zero has been detected at compile     │
> │ time."                                                                       │
> │     trace =                                                                  │
> │      ["Error trace on line: 1, column: 10 in module:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.               │
> │ inl main () =                                                                │
> │          ^                                                                   │
> │ ";                                                                           │
> │       "Error trace on line: 2, column: 5 in module:                          │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.               │
> │     1i32 / 0i32                                                              │
> │     ^                                                                        │
> │ "] })) / path:                                                               │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:14   debug #59 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [                                                                 │
> │   [                                                                          │
> │     "An attempt to divide by zero has been detected at compile time.",       │
> │     {                                                                        │
> │       "TracedError": {                                                       │
> │         "message": "An attempt to divide by zero has been detected at        │
> │ compile time.",                                                              │
> │         "trace": [                                                           │
> │           "Error trace on line: 1, column: 10 in module:                     │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.               │
> │ inl main () =                                                                │
> │          ^                                                                   │
> │ ",                                                                           │
> │           "Error trace on line: 2, column: 5 in module:                      │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.               │
> │     1i32 / 0i32                                                              │
> │     ^                                                                        │
> │ "                                                                            │
> │         ]                                                                    │
> │       }                                                                      │
> │     }                                                                        │
> │   ]                                                                          │
> │ ] / typeErrorCount: 0 / retry: 0 / path:                                     │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:14 verbose #60 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9 │
> │ 812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2"]}} / result:   │
> │ 00:00:20 verbose #93 networking.wait_for_port_access / { port = 13805;  │
> │ retry = 0; timeout = Some 100; status = false }                              │
> │ 00:00:20 verbose #94 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:14   debug #61 FileSystem.watchWithFilter / Disposing watch       │
> │ stream / filter: FileName, LastWrite                                         │
> │ Some (None, ["An attempt to divide by zero has been detected at compile      │
> │ time."])                                                                     │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () =
>     1 + ""
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[
>             "main.spi:
> Constraint satisfaction error.
> Got: string
> Fails to satisfy: number"
>         ]]
>     )
> )
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ Expecto.AssertException: Testing.__expect.<br/>                              │
> │ <span style="color: green;">expected</span>:<br/>                            │
> │ Some<span style="color: green;"><br/>                                        │
> │   (None,<br/>                                                                │
> │    ["main.spi:<br/>                                                          │
> │ Constraint satisfaction error.<br/>                                          │
> │ Got: string<br/>                                                             │
> │ Fails to satisfy: number"])</span><br/>                                      │
> │ <span style="color: red;">  actual</span>:<br/>                              │
> │ Some<span style="color: red;"> (None, [])</span><br/>                        │
> │    at Expecto.Expect.equalWithDiffPrinter@401-15.Invoke(String msg)<br/>     │
> │    at Expecto.Expect.equalWithDiffPrinter$cont@383[a](FSharpFunc`2           │
> │ diffPrinter, a actual, a expected, String message, Object e, Object a, Unit  │
> │ unitVar) in C:\workspaces\dotnet\expecto\Expecto\Expect.fs:line 401<br/>     │
> │    at Expecto.Expect.equalWithDiffPrinter[a](FSharpFunc`2 diffPrinter, a     │
> │ actual, a expected, String message)<br/>                                     │
> │    at <StartupCode$FSI_0049>.$FSI_0049.main@()                               │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ╭─[ 4.02s - stderr ]───────────────────────────────────────────────────────────╮
> │ 00:00:20 verbose #95 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17   debug #22 runtime.execute_with_options_async / { options = { │
> │ command = dotnet                                                             │
> │ "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral     │
> │ Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port    │
> │ 13805 --default-int i32 --default-float f64; cancellation_token = Some       │
> │ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
> │ Some <fun:buildCode@6-92>; stdin = None; trace = true; working_directory =   │
> │ Some "/home/runner/work/polyglot/polyglot" } }                               │
> │ 00:00:20 verbose #96 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #97 networking.wait_for_port_access / { port = 13805;  │
> │ retry = 0; timeout = Some 100; status = true }                               │
> │ 00:00:20 verbose #98 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #99 networking.test_port_open / { port = 13805; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17 verbose #23 > 00:00:00   debug #1 pwd:                    │
> │ /home/runner/work/polyglot/polyglot                                          │
> │ 00:00:17 verbose #24 > 00:00:00   debug #2 dllPath:                │
> │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
> │ Language 2/artifacts/bin/The Spiral Language 2/release                       │
> │ 00:00:17 verbose #25 > 00:00:00   debug #3 targetDir:              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval                       │
> │ 00:00:20 verbose #100 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #101 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #102 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #103 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #104 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #105 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #106 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #107 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #108 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #109 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #110 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #111 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #112 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #113 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #114 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #115 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #116 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #117 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #118 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #119 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:18 verbose #26 > Starting the Spiral Server. It is bound to:      │
> │ http://localhost:13805                                                       │
> │ 00:00:20 verbose #120 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #121 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:20 verbose #122 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:15 verbose #62 Supervisor.sendJson / port: 13805 / json:          │
> │ {"Ping":true} / result:                                                      │
> │ 00:00:15 verbose #63 awaitCompiler / Ping / result: 'Some(null)' /      │
> │ port: 13805 / retry: 0                                                       │
> │ 00:00:18 verbose #27 > Server bound to: http://localhost:13805          │
> │ 00:00:15   debug #64 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:15   debug #65 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:15   debug #66 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:15 verbose #67 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileOpen":{"spiText":"inl main () =\n    1 \u002B                          │
> │ \u0022\u0022\n","uri":"file:///home/runner/work/...et/spiral_Eval/packages/c │
> │ 030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}}  │
> │ / result:                                                                    │
> │ 00:00:15 verbose #68 Supervisor.sendJson / port: 13805 / json:          │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
> │ lyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a4 │
> │ 6e3655199e42df713504aa0/main.spi"}} / result:                                │
> │ 00:00:18 verbose #28 > 00:00:00   debug #4                         │
> │ Supervisor.supervisor_server.BuildFile / file:                               │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:15   debug #69 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:15   debug #70 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:16   debug #71 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:16   debug #72 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:16   debug #73 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:16   debug #74 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:17   debug #75 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:17   debug #76 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:17   debug #77 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error: Some((File main has a type error somewhere in its path., FatalError   │
> │ "File main has a type error somewhere in its path.")) / path:                │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:17   debug #78 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 1 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:17   debug #79 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 1 / retry: 0 /       │
> │ error: Some((main.spi:                                                       │
> │ Constraint satisfaction error.                                               │
> │ Got: string                                                                  │
> │ Fails to satisfy: number, TypeErrors                                         │
> │   { errors =                                                                 │
> │      [(({ character = 8                                                      │
> │           line = 1 }, { character = 10                                       │
> │                         line = 1 }),                                         │
> │        "Constraint satisfaction error.                                       │
> │ Got: string                                                                  │
> │ Fails to satisfy: number")]                                                  │
> │     uri =                                                                    │
> │                                                                              │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │
> │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / │
> │ path:                                                                        │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:17   debug #80 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [                                                                 │
> │   [                                                                          │
> │     "main.spi:                                                               │
> │ Constraint satisfaction error.                                               │
> │ Got: string                                                                  │
> │ Fails to satisfy: number",                                                   │
> │     {                                                                        │
> │       "TypeErrors": {                                                        │
> │         "errors": [                                                          │
> │           [                                                                  │
> │             [                                                                │
> │               {                                                              │
> │                 "character": 8,                                              │
> │                 "line": 1                                                    │
> │               },                                                             │
> │               {                                                              │
> │                 "character": 10,                                             │
> │                 "line": 1                                                    │
> │               }                                                              │
> │             ],                                                               │
> │             "Constraint satisfaction error.                                  │
> │ Got: string                                                                  │
> │ Fails to satisfy: number"                                                    │
> │           ]                                                                  │
> │         ],                                                                   │
> │         "uri":                                                               │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │
> │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"       │
> │       }                                                                      │
> │     }                                                                        │
> │   ]                                                                          │
> │ ] / typeErrorCount: 1 / retry: 0 / path:                                     │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:23 verbose #123 networking.test_port_open / { port = 13806; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:17   debug #81 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 1 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:17   debug #82 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 1 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:17   debug #83 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 1 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:17 verbose #84 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileOpen":{"spiText":"inl main () =\n    1 \u002B                          │
> │ \u0022\u0022\n","uri":"file:///home/runner/work/...et/spiral_Eval/packages/c │
> │ 030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}}  │
> │ / result:                                                                    │
> │ 00:00:17 verbose #85 Supervisor.sendJson / port: 13805 / json:          │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
> │ lyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a4 │
> │ 6e3655199e42df713504aa0/main.spi"}} / result:                                │
> │ 00:00:20 verbose #29 > 00:00:02   debug #5                         │
> │ Supervisor.supervisor_server.BuildFile / file:                               │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:17   debug #86 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 1 /       │
> │ error: Some((File main has a type error somewhere in its path., FatalError   │
> │ "File main has a type error somewhere in its path.")) / path:                │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:17   debug #87 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 1 / retry: 1 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:17   debug #88 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 1 / retry: 1 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:17   debug #89 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 2 / retry: 1 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:18   debug #90 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 2 / retry: 1 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:18   debug #91 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 3 / retry: 1 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:18 verbose #92 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │
> │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0"]}} / result:   │
> │ 00:00:18   debug #93 FileSystem.watchWithFilter / Disposing watch       │
> │ stream / filter: FileName, LastWrite                                         │
> │ 00:00:24 verbose #124 networking.wait_for_port_access / { port = 13805; │
> │ retry = 0; timeout = Some 100; status = false }                              │
> │ 00:00:24 verbose #125 networking.test_port_open / { port = 13805; ex =  │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:18   debug #94 FileSystem.watchWithFilter / Disposing watch       │
> │ stream / filter: FileName, LastWrite                                         │
> │ Some (None, [])                                                              │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> NotebookRunner.RunNotebookAsync / exiting... 3
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () =
>     x + y
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[
>             "main.spi:
> Unbound variable: x.
> Unbound variable: y."
>         ]]
>     )
> )
> NotebookRunner.RunNotebookAsync / exiting... 2
> NotebookRunner.RunNotebookAsync / exiting... 1
00:00:33 verbose #3 runtime.execute_with_options / result / { exit_code = 137; std_trace_length = 146785 }
00:00:33   debug #4 spiral_builder.run / repl error / { exit_code = 137; repl_result = 
── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ # Supervisor (Polyglot)                                                      │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
#r 
@"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
dard2.1/FSharp.Control.AsyncSeq.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
0/System.Reactive.dll"
#r 
@"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
netstandard2.0/System.Reactive.Linq.dll"
#r 
@"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
#r 
@"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com
mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll"
#r 
@"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli
ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll"
#r 
@"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0
/lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll"
#r 
@"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0
/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll"
#r 
@"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/
7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll"
#r 
@"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha
rp.Json.dll"

── fsharp ──────────────────────────────────────────────────────────────────────
#if !INTERACTIVE
open Lib
#endif

── fsharp ──────────────────────────────────────────────────────────────────────
open Common
open SpiralFileSystem.Operators
open Microsoft.AspNetCore.SignalR.Client

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### sendJson                                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline sendJson (port : int) (json : string) = async {
    let host = "127.0.0.1"
    let! portOpen = SpiralNetworking.test_port_open host port
    if portOpen then
        try
            let connection = 
HubConnectionBuilder().WithUrl($"http://{host}:{port}").Build()
            do! connection.StartAsync () |> Async.AwaitTask
            let! result = connection.InvokeAsync<string>("ClientToServerMsg", 
json) |> Async.AwaitTask
            do! connection.StopAsync () |> Async.AwaitTask
            trace Verbose (fun () -> $"Supervisor.sendJson / port: {port} / 
json: {json |> SpiralSm.ellipsis_end 200} / result: {result |> Option.ofObj |> 
Option.map (SpiralSm.ellipsis_end 200)}") _locals
            return Some result
        with ex ->
            trace Critical (fun () -> $"Supervisor.sendJson / port: {port} / 
json: {json |> SpiralSm.ellipsis_end 200} / ex: {ex |> 
SpiralSm.format_exception}") _locals
            return None
    else
        trace Debug (fun () -> "Supervisor.sendJson / port: {port} / error: port
not open") _locals
        return None
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### sendObj                                                                  │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline sendObj port obj =
    obj
    |> System.Text.Json.JsonSerializer.Serialize
    |> sendJson port

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### VSCPos                                                                   │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type VSCPos = {| line : int; character : int |}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### VSCRange                                                                 │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type VSCRange = VSCPos * VSCPos

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### RString                                                                  │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type RString = VSCRange * string

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### TracedError                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type TracedError = {| trace : string list; message : string |}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### ClientErrorsRes                                                          │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type ClientErrorsRes =
    | FatalError of string
    | TracedError of TracedError
    | PackageErrors of {| uri : string; errors : RString list |}
    | TokenizerErrors of {| uri : string; errors : RString list |}
    | ParserErrors of {| uri : string; errors : RString list |}
    | TypeErrors of {| uri : string; errors : RString list |}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### workspaceRoot                                                            │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let workspaceRoot = SpiralFileSystem.get_workspace_root ()

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### awaitCompiler                                                            │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline awaitCompiler port cancellationToken = async {
    let host = "127.0.0.1"
    let struct (ct, disposable) = cancellationToken |> 
SpiralThreading.new_disposable_token
    let! ct = ct |> SpiralAsync.merge_cancellation_token_with_default_async

    let compiler = MailboxProcessor.Start (fun inbox -> async {
        let! availablePort = SpiralNetworking.get_available_port (Some 180) host
port
        if availablePort <> port then
            inbox.Post (port, false)
        else
            let compilerPath =
                workspaceRoot </> "deps/The-Spiral-Language/The Spiral Language 
2/artifacts/bin/The Spiral Language 2/release"
                |> System.IO.Path.GetFullPath

            let dllPath = compilerPath </> "Spiral.dll"

            let! exitCode, result =
                SpiralRuntime.execution_options (fun x ->
                    { x with
                        l0 = $@"dotnet ""{dllPath}"" --port {availablePort} 
--default-int i32 --default-float f64"
                        l1 = Some ct
                        l3 = Some (fun struct (_, line, _) -> async {
                            if line |> SpiralSm.contains 
$"System.IO.IOException: Failed to bind to address http://{host}:{port}: address
already in use." then
                                inbox.Post (port, false)

                            if line |> SpiralSm.contains $"Server bound to: 
http://localhost:{availablePort}" then
                                let rec loop retry = async {
                                    do!
                                        SpiralNetworking.wait_for_port_access 
(Some 100) true host availablePort
                                        |> Async.runWithTimeoutAsync 500
                                        |> Async.Ignore

                                    let _locals () = $"port: {availablePort} / 
retry: {retry} / {_locals ()}"
                                    try
                                        let pingObj = {| Ping = true |}
                                        let! pingResult = pingObj |> sendObj 
availablePort
                                        trace Verbose (fun () -> $"awaitCompiler
/ Ping / result: '{pingResult}'") _locals

                                        inbox.Post (availablePort, true)
                                    with ex ->
                                        trace Verbose (fun () -> $"awaitCompiler
/ Ping / ex: {ex |> SpiralSm.format_exception}") _locals
                                        do! Async.Sleep 10
                                        do! loop (retry + 1)
                                }
                                do! loop 0
                        })
                        l6 = Some workspaceRoot
                    }
                )
                |> SpiralRuntime.execute_with_options_async

            trace Debug (fun () -> $"awaitCompiler / exitCode: {exitCode} / 
result: {result}") _locals
            disposable.Dispose ()
    }, ct)

    let! serverPort, managed = compiler.Receive ()

    let connection = 
HubConnectionBuilder().WithUrl($"http://{host}:{serverPort}").Build ()
    do! connection.StartAsync () |> Async.AwaitTask

    let event = Event<_> ()
    let disposable' = connection.On<string> ("ServerToClientMsg", event.Trigger)
    let stream =
        FSharp.Control.AsyncSeq.unfoldAsync
            (fun () -> async {
                let! msg = event.Publish |> Async.AwaitEvent
                return Some (msg |> 
FSharp.Json.Json.deserialize<ClientErrorsRes>, ())
            })
            ()

    let disposable' =
        new_disposable (fun () ->
            async {
                disposable'.Dispose ()
                do! connection.StopAsync () |> Async.AwaitTask
                disposable.Dispose ()
                if managed
                then do!
                    SpiralNetworking.wait_for_port_access (Some 100) false host 
serverPort
                    |> Async.runWithTimeoutAsync 1500
                    |> Async.Ignore
            }
            |> Async.RunSynchronously
        )

    return
        serverPort,
        stream,
        ct,
        disposable'
}

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### getFilePathFromUri                                                       │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline getFilePathFromUri uri =
    match System.Uri.TryCreate (uri, System.UriKind.Absolute) with
    | true, uri -> uri.AbsolutePath |> System.IO.Path.GetFullPath
    | _ -> failwith "invalid uri"

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### getCompilerPort                                                          │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline getCompilerPort () =
    13805

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### serialize_obj                                                            │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
    let serializeObj obj =
        try
            obj
            |> FSharp.Json.Json.serialize
            |> SpiralSm.replace "\\\\" "\\"
            |> SpiralSm.replace "\\r\\n" "\n"
            |> SpiralSm.replace "\\n" "\n"
        with ex ->
            trace Critical (fun () -> "Supervisor.serialize_obj / obj: %A{obj}")
_locals
            ""

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### Backend                                                                  │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type Backend =
    | Fsharp
    | Cuda

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### buildFile                                                                │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline buildFile backend timeout port cancellationToken path =
    let rec loop retry = async {
        let fullPath = path |> System.IO.Path.GetFullPath
        let fileDir = fullPath |> System.IO.Path.GetDirectoryName
        let fileName = fullPath |> System.IO.Path.GetFileNameWithoutExtension
        let! code = fullPath |> SpiralFileSystem.read_all_text_async

        let stream, disposable = fileDir |> FileSystem.watchDirectory (fun _ -> 
true)
        use _ = disposable

        let struct (token, disposable) = SpiralThreading.new_disposable_token 
cancellationToken
        use _ = disposable

        let port = port |> Option.defaultWith getCompilerPort
        let! serverPort, errors, ct, disposable = awaitCompiler port (Some 
token)
        use _ = disposable

        let outputFileName =
            match backend with
            | Fsharp -> $"{fileName}.fsx"
            | Cuda -> $"{fileName}.py"

        let outputContentSeq =
            stream
            |> FSharp.Control.AsyncSeq.chooseAsync (function
                | _, (FileSystem.FileSystemChange.Changed (path, Some text))
                    when (path |> System.IO.Path.GetFileName) = outputFileName
                    ->
                        // fileDir </> path |> 
SpiralFileSystem.read_all_text_retry_async
                        text |> Some |> Async.init
                | _ -> None |> Async.init
            )
            |> FSharp.Control.AsyncSeq.map (fun content ->
                Some (content |> SpiralSm.replace "\r\n" "\n"), None
            )

        let inline printErrorData (data : {| uri : string; errors : RString list
|}) =
            let fileName = data.uri |> System.IO.Path.GetFileName
            let errors =
                data.errors
                |> List.map snd
                |> SpiralSm.concat "\n"
            $"{fileName}:\n{errors}"

        let errorsSeq =
            errors
            |> FSharp.Control.AsyncSeq.choose (fun error ->
                match error with
                | FatalError message ->
                    Some (message, error)
                | TracedError data ->
                    Some (data.message, error)
                | PackageErrors data when data.errors |> List.isEmpty |> not ->
                    Some (data |> printErrorData, error)
                | TokenizerErrors data when data.errors |> List.isEmpty |> not 
->
                    Some (data |> printErrorData, error)
                | ParserErrors data when data.errors |> List.isEmpty |> not ->
                    Some (data |> printErrorData, error)
                | TypeErrors data when data.errors |> List.isEmpty |> not ->
                    Some (data |> printErrorData, error)
                | _ -> None
            )
            |> FSharp.Control.AsyncSeq.map (fun (message, error) ->
                None, Some (message, error)
            )

        let timerSeq =
            500
            |> FSharp.Control.AsyncSeq.intervalMs
            |> FSharp.Control.AsyncSeq.map (fun _ -> None, None)

        let outputSeq =
            [[ outputContentSeq; errorsSeq; timerSeq ]]
            |> FSharp.Control.AsyncSeq.mergeAll

        let! outputChild =
            ((None, [[]], 0), outputSeq)
            ||> FSharp.Control.AsyncSeq.scan (
                fun (outputContentResult, errors, typeErrorCount) 
(outputContent, error) ->
                    trace Debug (fun () -> $"Supervisor.buildFile / 
AsyncSeq.scan / outputContent:\n{outputContent |> Option.defaultValue 
System.String.Empty |> SpiralSm.ellipsis_end 300} / errors: {errors |> 
serializeObj} / outputContentResult: {outputContentResult} / typeErrorCount: 
{typeErrorCount} / retry: {retry} / error: {error} / path: {path}") _locals
                    match outputContent, error with
                    | Some outputContent, None -> Some outputContent, errors, 
typeErrorCount
                    | None, Some (_, FatalError "File main has a type error 
somewhere in its path.") ->
                        outputContentResult, errors, typeErrorCount + 1
                    | None, Some error -> outputContentResult, error :: errors, 
typeErrorCount
                    | None, None when typeErrorCount >= 1 ->
                        outputContentResult, errors, typeErrorCount + 1
                    | _ -> outputContentResult, errors, typeErrorCount
            )
            |> FSharp.Control.AsyncSeq.takeWhileInclusive (fun (outputContent, 
errors, typeErrorCount) ->
                trace Debug (fun () -> $"Supervisor.buildFile / 
takeWhileInclusive / outputContent:\n{outputContent |> Option.defaultValue 
System.String.Empty |> SpiralSm.ellipsis_end 300} / errors: {errors |> 
serializeObj} / typeErrorCount: {typeErrorCount} / retry: {retry} / path: 
{path}") _locals
    #if INTERACTIVE
                let errorWait = 2
    #else
                let errorWait = 2
    #endif
                match outputContent, errors with
                | None, [[]] when typeErrorCount > errorWait -> false
                | None, [[]] -> true
                | _ -> false
            )
            |> FSharp.Control.AsyncSeq.tryLast
            |> Async.withCancellationToken ct
            |> Async.catch
            |> Async.runWithTimeoutAsync timeout
            |> Async.StartChild

        // do! Async.Sleep 60

        let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> 
SpiralFileSystem.new_file_uri

        let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} 
|}
        let! _fileOpenResult = fileOpenObj |> sendObj serverPort

        // do! Async.Sleep 60

        let backendId =
            match backend with
            | Fsharp -> "Fsharp"
            | Cuda -> "Python + Cuda"
        let buildFileObj = {| BuildFile = {| uri = fullPathUri; backend = 
backendId |} |}
        let! _buildFileResult = buildFileObj |> sendObj serverPort

        let! result, typeErrorCount =
            outputChild
            |> Async.map (function
                | Some (Ok (Some (outputCode, errors, typeErrorCount))) ->
                    (outputCode, errors |> List.distinct |> List.rev), 
typeErrorCount
                | Some (Error ex) ->
                    trace Critical (fun () -> $"Supervisor.buildFile / error: 
{ex |> SpiralSm.format_exception} / retry: {retry}") _locals
                    (None, [[]]), 0
                | _ -> (None, [[]]), 0
            )
        
        match result with
        | None, _ when typeErrorCount > 0 && retry = 0 ->
            return! loop (retry + 1)
        | _ ->
            if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then
                let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> 
SpiralFileSystem.new_file_uri
                let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]]
|} |}
                let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort
                ()

            let outputPath = fileDir </> outputFileName
            return outputPath, result
    }
    loop 0

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### SpiralInput                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
type SpiralInput =
    | Spi of string * string option
    | Spir of string

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### persistCode                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let inline persistCode backend input = async {
    let targetDir = workspaceRoot </> "target/spiral_Eval"

    let packagesDir = targetDir </> "packages"

    let hashHex = $"%A{backend}%A{input}" |> SpiralCrypto.hash_text

    let codeDir = packagesDir </> hashHex
    codeDir |> System.IO.Directory.CreateDirectory |> ignore

    let moduleName = "main"

    let spirModule, spiModule =
        match input with
        | Spi (spi, Some spir) -> true, true
        | Spi (spi, None) -> false, true
        | Spir spir -> true, false
        |> fun (spir, spi) ->
            (if spir then $"real_{moduleName}*-" else ""),
            if spi then moduleName else ""

    let spiprojPath = codeDir </> "package.spiproj"
    let spiprojCode =
        $"""packageDir: {workspaceRoot </> "lib"}
packages:
    |core-
    spiral-
modules:
    {spirModule}
    {spiModule}
"""
    do! spiprojCode |> SpiralFileSystem.write_all_text_exists spiprojPath

    let spirPath = codeDir </> $"real_{moduleName}.spir"
    let spiPath = codeDir </> $"{moduleName}.spi"

    let spirCode, spiCode =
        match input with
        | Spi (spi, Some spir) -> Some spir, Some spi
        | Spi (spi, None) -> None, Some spi
        | Spir spir -> Some spir, None

    match spirCode with
    | Some spir -> do! spir |> SpiralFileSystem.write_all_text_exists spirPath
    | None -> ()
    match spiCode with
    | Some spi -> do! spi |> SpiralFileSystem.write_all_text_exists spiPath
    | None -> ()

    let spiralPath =
        match input with
        | Spi _ -> spiPath
        | Spir _ -> spirPath
    match backend with
    | None -> return spiralPath, None
    | Some backend ->
        let outputFileName =
            let fileName =
                match input with
                | Spi _ -> moduleName
                | Spir _ -> $"real_{moduleName}"
            match backend with
            | Fsharp -> $"{fileName}.fsx"
            | Cuda -> $"{fileName}.py"
        let outputPath = codeDir </> outputFileName
        if outputPath |> System.IO.File.Exists |> not
        then return spiralPath, None
        else
            let! oldCode = spiralPath |> SpiralFileSystem.read_all_text_async
            if oldCode <> (spiCode |> Option.defaultValue (spirCode |> 
Option.defaultValue ""))
            then return spiralPath, None
            else
                let! outputCode = outputPath |> 
SpiralFileSystem.read_all_text_async
                return spiralPath, Some (outputPath, outputCode |> 
SpiralSm.replace "\r\n" "\n")
    }

── markdown ────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ ### buildCode                                                                │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
let buildCode backend isCache timeout cancellationToken input = async {
    let! mainPath, outputCache = input |> persistCode (Some backend)
    match outputCache with
    | Some (outputPath, outputCode) when isCache -> return mainPath, 
(outputPath, Some outputCode), [[]]
    | _ ->
        let! outputPath, (outputCode, errors) = mainPath |> buildFile backend 
timeout None cancellationToken
        return mainPath, (outputPath, outputCode), errors
}

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"""inl app () =
    console.write_line "text"
    1i32

inl main () =
    app
    |> dyn
    |> ignore
"""
|> fun code -> Spi (code, None)
|> buildCode Fsharp false 15000 None
|> Async.runWithTimeout 15000
|> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
List.map fst)
|> _assertEqual (
    Some (
        Some """let rec closure1 () () : unit =
    let v0 : (string -> unit) = System.Console.WriteLine
    let v1 : string = "text"
    v0 v1
and closure0 () () : int32 =
    let v0 : unit = ()
    let v1 : (unit -> unit) = closure1()
    let v2 : unit = (fun () -> v1 (); v0) ()
    1
let v0 : (unit -> int32) = closure0()
()
""",
        [[]]
    )
)

╭─[ 4.01s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:09 verbose #1 networking.test_port_open / { port = 13805; ex =    │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:07   debug #1 runtime.execute_with_options_async / { options = {  │
│ command = dotnet                                                             │
│ "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral     │
│ Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port    │
│ 13805 --default-int i32 --default-float f64; cancellation_token = Some       │
│ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
│ Some <fun:buildCode@6-92>; stdin = None; trace = true; working_directory =   │
│ Some "/home/runner/work/polyglot/polyglot" } }                               │
│ 00:00:10 verbose #2 networking.test_port_open / { port = 13805; ex =    │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #3 networking.wait_for_port_access / { port = 13805;   │
│ retry = 0; timeout = Some 100; status = true }                               │
│ 00:00:10 verbose #4 networking.test_port_open / { port = 13805; ex =    │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:07 verbose #2 > 00:00:00   debug #1 pwd:                     │
│ /home/runner/work/polyglot/polyglot                                          │
│ 00:00:07 verbose #3 > 00:00:00   debug #2 dllPath:                 │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:07 verbose #4 > 00:00:00   debug #3 targetDir:               │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval                       │
│ 00:00:10 verbose #5 networking.test_port_open / { port = 13805; ex =    │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #6 networking.test_port_open / { port = 13805; ex =    │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #7 networking.test_port_open / { port = 13805; ex =    │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #8 networking.test_port_open / { port = 13805; ex =    │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #9 networking.test_port_open / { port = 13805; ex =    │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #10 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #11 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #12 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #13 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #14 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #15 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #16 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #17 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #18 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #19 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #20 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #21 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #22 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #23 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #24 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #25 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #26 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #27 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:07 verbose #5 > Starting the Spiral Server. It is bound to:       │
│ http://localhost:13805                                                       │
│ 00:00:10 verbose #28 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #29 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #30 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:10 verbose #31 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:05 verbose #1 Supervisor.sendJson / port: 13805 / json:           │
│ {"Ping":true} / result:                                                      │
│ 00:00:05 verbose #2 awaitCompiler / Ping / result: 'Some(null)' / port: │
│ 13805 / retry: 0                                                             │
│ 00:00:08 verbose #6 > Server bound to: http://localhost:13805           │
│ 00:00:05   debug #3 Supervisor.buildFile / takeWhileInclusive /         │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
│ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
│ 00:00:05   debug #4 Supervisor.buildFile / AsyncSeq.scan /              │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
│ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
│ 00:00:05   debug #5 Supervisor.buildFile / takeWhileInclusive /         │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
│ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
│ 00:00:05 verbose #6 Supervisor.sendJson / port: 13805 / json:           │
│ {"FileOpen":{"spiText":"inl app () =\n    console.write_line                 │
│ \u0022text\u0022\n    1i32\n\ninl main                                       │
│ ...et/spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69f2d6d04b │
│ 9dc60aebd08a0d6/main.spi"}} / result:                                        │
│ 00:00:05 verbose #7 Supervisor.sendJson / port: 13805 / json:           │
│ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
│ lyglot/target/spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69 │
│ f2d6d04b9dc60aebd08a0d6/main.spi"}} / result:                                │
│ 00:00:08 verbose #7 > 00:00:01   debug #4                          │
│ Supervisor.supervisor_server.BuildFile / file:                               │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
│ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
│ 00:00:05   debug #8 Supervisor.buildFile / AsyncSeq.scan /              │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
│ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
│ 00:00:05   debug #9 Supervisor.buildFile / takeWhileInclusive /         │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
│ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
│ 00:00:06   debug #10 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
│ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
│ 00:00:06   debug #11 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
│ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
│ 00:00:06   debug #12 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
│ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
│ 00:00:06   debug #13 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
│ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
│ 00:00:07   debug #14 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
│ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
│ 00:00:07   debug #15 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
│ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
│ 00:00:07   debug #16 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
│ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
│ 00:00:07   debug #17 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
│ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
│ 00:00:07   debug #18 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│ let rec closure1 () () : unit =                                              │
│     let v0 : (string -> unit) = System.Console.WriteLine                     │
│     let v1 : string = "text"                                                 │
│     v0 v1                                                                    │
│ and closure0 () () : i...t v0 : unit = ()                                    │
│     let v1 : (unit -> unit) = closure1()                                     │
│     let v2 : unit = (fun () -> v1 (); v0) ()                                 │
│     1                                                                        │
│ let v0 : (unit -> int32) = closure0()                                        │
│ ()                                                                           │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
│ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
│ 00:00:07   debug #19 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│ let rec closure1 () () : unit =                                              │
│     let v0 : (string -> unit) = System.Console.WriteLine                     │
│     let v1 : string = "text"                                                 │
│     v0 v1                                                                    │
│ and closure0 () () : i...t v0 : unit = ()                                    │
│     let v1 : (unit -> unit) = closure1()                                     │
│     let v2 : unit = (fun () -> v1 (); v0) ()                                 │
│     1                                                                        │
│ let v0 : (unit -> int32) = closure0()                                        │
│ ()                                                                           │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
│ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
│ 00:00:07 verbose #20 Supervisor.sendJson / port: 13805 / json:          │
│ {"FileDelete":{"uris":[                                                      │
│ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22cc │
│ d04317d5605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6"]}} / result:   │
│ 00:00:13 verbose #32 networking.wait_for_port_access / { port = 13805;  │
│ retry = 0; timeout = Some 100; status = false }                              │
│ 00:00:13 verbose #33 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:08   debug #21 FileSystem.watchWithFilter / Disposing watch       │
│ stream / filter: FileName, LastWrite                                         │
│ Some                                                                         │
│   (Some                                                                      │
│      "let rec closure1 () () : unit =                                        │
│     let v0 : (string -> unit) = System.Console.WriteLine                     │
│     let v1 : string = "text"                                                 │
│     v0 v1                                                                    │
│ and closure0 () () : int32 =                                                 │
│     let v0 : unit = ()                                                       │
│     let v1 : (unit -> unit) = closure1()                                     │
│     let v2 : unit = (fun () -> v1 (); v0) ()                                 │
│     1                                                                        │
│ let v0 : (unit -> int32) = closure0()                                        │
│ ()                                                                           │
│ ",                                                                           │
│    [])                                                                       │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

""
|> fun code -> Spi (code, None)
|> buildCode Fsharp false 10000 None
|> Async.runWithTimeout 10000
|> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
List.map fst)
|> _assertEqual (
    Some (
        None,
        [[ "Cannot find `main` in file main." ]]
    )
)

╭─[ 3.35s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:13 verbose #34 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:11   debug #8 runtime.execute_with_options_async / { options = {  │
│ command = dotnet                                                             │
│ "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral     │
│ Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port    │
│ 13805 --default-int i32 --default-float f64; cancellation_token = Some       │
│ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
│ Some <fun:buildCode@6-92>; stdin = None; trace = true; working_directory =   │
│ Some "/home/runner/work/polyglot/polyglot" } }                               │
│ 00:00:14 verbose #35 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #36 networking.wait_for_port_access / { port = 13805;  │
│ retry = 0; timeout = Some 100; status = true }                               │
│ 00:00:14 verbose #37 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #38 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:11 verbose #9 > 00:00:00   debug #1 pwd:                     │
│ /home/runner/work/polyglot/polyglot                                          │
│ 00:00:11 verbose #10 > 00:00:00   debug #2 dllPath:                │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:11 verbose #11 > 00:00:00   debug #3 targetDir:              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval                       │
│ 00:00:14 verbose #39 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #40 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #41 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #42 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #43 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #44 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #45 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #46 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #47 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #48 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #49 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #50 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #51 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #52 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #53 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #54 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #55 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #56 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #57 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #58 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:11 verbose #12 > Starting the Spiral Server. It is bound to:      │
│ http://localhost:13805                                                       │
│ 00:00:14 verbose #59 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #60 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #61 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:08 verbose #22 Supervisor.sendJson / port: 13805 / json:          │
│ {"Ping":true} / result:                                                      │
│ 00:00:08 verbose #23 awaitCompiler / Ping / result: 'Some(null)' /      │
│ port: 13805 / retry: 0                                                       │
│ 00:00:11 verbose #13 > Server bound to: http://localhost:13805          │
│ 00:00:08   debug #24 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
│ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
│ 00:00:08   debug #25 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
│ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
│ 00:00:08   debug #26 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
│ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
│ 00:00:08 verbose #27 Supervisor.sendJson / port: 13805 / json:          │
│ {"FileOpen":{"spiText":"","uri":"file:///home/runner/work/polyglot/polyglot/ │
│ target/spiral_Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e68c0feb │
│ 33db55c4d28170aa/main.spi"}} / result:                                       │
│ 00:00:08 verbose #28 Supervisor.sendJson / port: 13805 / json:          │
│ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
│ lyglot/target/spiral_Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e │
│ 68c0feb33db55c4d28170aa/main.spi"}} / result:                                │
│ 00:00:12 verbose #14 > 00:00:00   debug #4                         │
│ Supervisor.supervisor_server.BuildFile / file:                               │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
│ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
│ 00:00:09   debug #29 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
│ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
│ 00:00:09   debug #30 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
│ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
│ 00:00:09   debug #31 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
│ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
│ 00:00:09   debug #32 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
│ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
│ 00:00:10   debug #33 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
│ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
│ 00:00:10   debug #34 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
│ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
│ 00:00:10   debug #35 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
│ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
│ 00:00:10   debug #36 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
│ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
│ 00:00:11   debug #37 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
│ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
│ 00:00:11   debug #38 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
│ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
│ 00:00:11   debug #39 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error: Some((Cannot find `main` in file main., FatalError "Cannot find       │
│ `main` in file main.")) / path:                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
│ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
│ 00:00:11   debug #40 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [                                                                 │
│   [                                                                          │
│     "Cannot find `main` in file main.",                                      │
│     {                                                                        │
│       "FatalError": "Cannot find `main` in file main."                       │
│     }                                                                        │
│   ]                                                                          │
│ ] / typeErrorCount: 0 / retry: 0 / path:                                     │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
│ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
│ 00:00:11 verbose #41 Supervisor.sendJson / port: 13805 / json:          │
│ {"FileDelete":{"uris":[                                                      │
│ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a653 │
│ 42ccc7da0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa"]}} / result:   │
│ 00:00:17 verbose #62 networking.wait_for_port_access / { port = 13805;  │
│ retry = 0; timeout = Some 100; status = false }                              │
│ 00:00:17 verbose #63 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:11   debug #42 FileSystem.watchWithFilter / Disposing watch       │
│ stream / filter: FileName, LastWrite                                         │
│ Some (None, ["Cannot find `main` in file main."])                            │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"""inl main () =
    1i32 / 0i32
"""
|> fun code -> Spi (code, None)
|> buildCode Fsharp false 10000 None
|> Async.runWithTimeout 10000
|> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
List.map fst)
|> _assertEqual (
    Some (
        None,
        [[ "An attempt to divide by zero has been detected at compile time." ]]
    )
)

╭─[ 3.15s - stdout ]───────────────────────────────────────────────────────────╮
│ 00:00:17 verbose #64 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14   debug #15 runtime.execute_with_options_async / { options = { │
│ command = dotnet                                                             │
│ "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral     │
│ Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port    │
│ 13805 --default-int i32 --default-float f64; cancellation_token = Some       │
│ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
│ Some <fun:buildCode@6-92>; stdin = None; trace = true; working_directory =   │
│ Some "/home/runner/work/polyglot/polyglot" } }                               │
│ 00:00:17 verbose #65 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #66 networking.wait_for_port_access / { port = 13805;  │
│ retry = 0; timeout = Some 100; status = true }                               │
│ 00:00:17 verbose #67 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #68 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #16 > 00:00:00   debug #1 pwd:                    │
│ /home/runner/work/polyglot/polyglot                                          │
│ 00:00:14 verbose #17 > 00:00:00   debug #2 dllPath:                │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:14 verbose #18 > 00:00:00   debug #3 targetDir:              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval                       │
│ 00:00:17 verbose #69 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #70 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #71 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #72 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #73 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #74 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #75 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #76 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #77 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #78 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #79 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #80 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #81 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #82 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #83 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #84 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #85 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #86 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #87 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #88 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14 verbose #19 > Starting the Spiral Server. It is bound to:      │
│ http://localhost:13805                                                       │
│ 00:00:17 verbose #89 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #90 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #91 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #92 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:12 verbose #43 Supervisor.sendJson / port: 13805 / json:          │
│ {"Ping":true} / result:                                                      │
│ 00:00:12 verbose #44 awaitCompiler / Ping / result: 'Some(null)' /      │
│ port: 13805 / retry: 0                                                       │
│ 00:00:15 verbose #20 > Server bound to: http://localhost:13805          │
│ 00:00:12   debug #45 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
│ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
│ 00:00:12   debug #46 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
│ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
│ 00:00:12   debug #47 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
│ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
│ 00:00:12 verbose #48 Supervisor.sendJson / port: 13805 / json:          │
│ {"FileOpen":{"spiText":"inl main () =\n    1i32 /                            │
│ 0i32\n","uri":"file:///home/runner/work/polyglot/p...et/spiral_Eval/packages │
│ /fef9812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi"} │
│ } / result:                                                                  │
│ 00:00:12 verbose #49 Supervisor.sendJson / port: 13805 / json:          │
│ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
│ lyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6ff05910b73 │
│ ead9e8c4f27f88d2a5cdfb2/main.spi"}} / result:                                │
│ 00:00:15 verbose #21 > 00:00:00   debug #4                         │
│ Supervisor.supervisor_server.BuildFile / file:                               │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
│ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
│ 00:00:12   debug #50 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
│ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
│ 00:00:12   debug #51 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
│ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
│ 00:00:13   debug #52 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
│ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
│ 00:00:13   debug #53 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
│ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
│ 00:00:13   debug #54 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
│ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
│ 00:00:13   debug #55 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
│ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
│ 00:00:14   debug #56 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
│ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
│ 00:00:14   debug #57 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
│ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
│ 00:00:14   debug #58 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error: Some((An attempt to divide by zero has been detected at compile       │
│ time., TracedError                                                           │
│   { message = "An attempt to divide by zero has been detected at compile     │
│ time."                                                                       │
│     trace =                                                                  │
│      ["Error trace on line: 1, column: 10 in module:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
│ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.               │
│ inl main () =                                                                │
│          ^                                                                   │
│ ";                                                                           │
│       "Error trace on line: 2, column: 5 in module:                          │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
│ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.               │
│     1i32 / 0i32                                                              │
│     ^                                                                        │
│ "] })) / path:                                                               │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
│ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
│ 00:00:14   debug #59 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [                                                                 │
│   [                                                                          │
│     "An attempt to divide by zero has been detected at compile time.",       │
│     {                                                                        │
│       "TracedError": {                                                       │
│         "message": "An attempt to divide by zero has been detected at        │
│ compile time.",                                                              │
│         "trace": [                                                           │
│           "Error trace on line: 1, column: 10 in module:                     │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
│ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.               │
│ inl main () =                                                                │
│          ^                                                                   │
│ ",                                                                           │
│           "Error trace on line: 2, column: 5 in module:                      │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
│ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.               │
│     1i32 / 0i32                                                              │
│     ^                                                                        │
│ "                                                                            │
│         ]                                                                    │
│       }                                                                      │
│     }                                                                        │
│   ]                                                                          │
│ ] / typeErrorCount: 0 / retry: 0 / path:                                     │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
│ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
│ 00:00:14 verbose #60 Supervisor.sendJson / port: 13805 / json:          │
│ {"FileDelete":{"uris":[                                                      │
│ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9 │
│ 812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2"]}} / result:   │
│ 00:00:20 verbose #93 networking.wait_for_port_access / { port = 13805;  │
│ retry = 0; timeout = Some 100; status = false }                              │
│ 00:00:20 verbose #94 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:14   debug #61 FileSystem.watchWithFilter / Disposing watch       │
│ stream / filter: FileName, LastWrite                                         │
│ Some (None, ["An attempt to divide by zero has been detected at compile      │
│ time."])                                                                     │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"""inl main () =
    1 + ""
"""
|> fun code -> Spi (code, None)
|> buildCode Fsharp false 10000 None
|> Async.runWithTimeout 10000
|> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
List.map fst)
|> _assertEqual (
    Some (
        None,
        [[
            "main.spi:
Constraint satisfaction error.
Got: string
Fails to satisfy: number"
        ]]
    )
)

── fsharp ──────────────────────────────────────────────────────────────────────
╭──────────────────────────────────────────────────────────────────────────────╮
│ Expecto.AssertException: Testing.__expect.<br/>                              │
│ <span style="color: green;">expected</span>:<br/>                            │
│ Some<span style="color: green;"><br/>                                        │
│   (None,<br/>                                                                │
│    ["main.spi:<br/>                                                          │
│ Constraint satisfaction error.<br/>                                          │
│ Got: string<br/>                                                             │
│ Fails to satisfy: number"])</span><br/>                                      │
│ <span style="color: red;">  actual</span>:<br/>                              │
│ Some<span style="color: red;"> (None, [])</span><br/>                        │
│    at Expecto.Expect.equalWithDiffPrinter@401-15.Invoke(String msg)<br/>     │
│    at Expecto.Expect.equalWithDiffPrinter$cont@383[a](FSharpFunc`2           │
│ diffPrinter, a actual, a expected, String message, Object e, Object a, Unit  │
│ unitVar) in C:\workspaces\dotnet\expecto\Expecto\Expect.fs:line 401<br/>     │
│    at Expecto.Expect.equalWithDiffPrinter[a](FSharpFunc`2 diffPrinter, a     │
│ actual, a expected, String message)<br/>                                     │
│    at <StartupCode$FSI_0049>.$FSI_0049.main@()                               │
╰──────────────────────────────────────────────────────────────────────────────╯

╭─[ 4.02s - stderr ]───────────────────────────────────────────────────────────╮
│ 00:00:20 verbose #95 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17   debug #22 runtime.execute_with_options_async / { options = { │
│ command = dotnet                                                             │
│ "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral     │
│ Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port    │
│ 13805 --default-int i32 --default-float f64; cancellation_token = Some       │
│ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
│ Some <fun:buildCode@6-92>; stdin = None; trace = true; working_directory =   │
│ Some "/home/runner/work/polyglot/polyglot" } }                               │
│ 00:00:20 verbose #96 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #97 networking.wait_for_port_access / { port = 13805;  │
│ retry = 0; timeout = Some 100; status = true }                               │
│ 00:00:20 verbose #98 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #99 networking.test_port_open / { port = 13805; ex =   │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17 verbose #23 > 00:00:00   debug #1 pwd:                    │
│ /home/runner/work/polyglot/polyglot                                          │
│ 00:00:17 verbose #24 > 00:00:00   debug #2 dllPath:                │
│ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral      │
│ Language 2/artifacts/bin/The Spiral Language 2/release                       │
│ 00:00:17 verbose #25 > 00:00:00   debug #3 targetDir:              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval                       │
│ 00:00:20 verbose #100 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #101 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #102 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #103 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #104 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #105 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #106 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #107 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #108 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #109 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #110 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #111 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #112 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #113 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #114 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #115 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #116 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #117 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #118 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #119 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:18 verbose #26 > Starting the Spiral Server. It is bound to:      │
│ http://localhost:13805                                                       │
│ 00:00:20 verbose #120 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #121 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:20 verbose #122 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:15 verbose #62 Supervisor.sendJson / port: 13805 / json:          │
│ {"Ping":true} / result:                                                      │
│ 00:00:15 verbose #63 awaitCompiler / Ping / result: 'Some(null)' /      │
│ port: 13805 / retry: 0                                                       │
│ 00:00:18 verbose #27 > Server bound to: http://localhost:13805          │
│ 00:00:15   debug #64 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:15   debug #65 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:15   debug #66 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:15 verbose #67 Supervisor.sendJson / port: 13805 / json:          │
│ {"FileOpen":{"spiText":"inl main () =\n    1 \u002B                          │
│ \u0022\u0022\n","uri":"file:///home/runner/work/...et/spiral_Eval/packages/c │
│ 030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}}  │
│ / result:                                                                    │
│ 00:00:15 verbose #68 Supervisor.sendJson / port: 13805 / json:          │
│ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
│ lyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a4 │
│ 6e3655199e42df713504aa0/main.spi"}} / result:                                │
│ 00:00:18 verbose #28 > 00:00:00   debug #4                         │
│ Supervisor.supervisor_server.BuildFile / file:                               │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:15   debug #69 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:15   debug #70 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:16   debug #71 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:16   debug #72 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:16   debug #73 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:16   debug #74 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:17   debug #75 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:17   debug #76 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:17   debug #77 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
│ error: Some((File main has a type error somewhere in its path., FatalError   │
│ "File main has a type error somewhere in its path.")) / path:                │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:17   debug #78 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 1 / retry: 0 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:17   debug #79 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 1 / retry: 0 /       │
│ error: Some((main.spi:                                                       │
│ Constraint satisfaction error.                                               │
│ Got: string                                                                  │
│ Fails to satisfy: number, TypeErrors                                         │
│   { errors =                                                                 │
│      [(({ character = 8                                                      │
│           line = 1 }, { character = 10                                       │
│                         line = 1 }),                                         │
│        "Constraint satisfaction error.                                       │
│ Got: string                                                                  │
│ Fails to satisfy: number")]                                                  │
│     uri =                                                                    │
│                                                                              │
│ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │
│ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / │
│ path:                                                                        │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:17   debug #80 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [                                                                 │
│   [                                                                          │
│     "main.spi:                                                               │
│ Constraint satisfaction error.                                               │
│ Got: string                                                                  │
│ Fails to satisfy: number",                                                   │
│     {                                                                        │
│       "TypeErrors": {                                                        │
│         "errors": [                                                          │
│           [                                                                  │
│             [                                                                │
│               {                                                              │
│                 "character": 8,                                              │
│                 "line": 1                                                    │
│               },                                                             │
│               {                                                              │
│                 "character": 10,                                             │
│                 "line": 1                                                    │
│               }                                                              │
│             ],                                                               │
│             "Constraint satisfaction error.                                  │
│ Got: string                                                                  │
│ Fails to satisfy: number"                                                    │
│           ]                                                                  │
│         ],                                                                   │
│         "uri":                                                               │
│ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │
│ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"       │
│       }                                                                      │
│     }                                                                        │
│   ]                                                                          │
│ ] / typeErrorCount: 1 / retry: 0 / path:                                     │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:23 verbose #123 networking.test_port_open / { port = 13806; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:17   debug #81 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 1 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:17   debug #82 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 1 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:17   debug #83 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 0 / retry: 1 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:17 verbose #84 Supervisor.sendJson / port: 13805 / json:          │
│ {"FileOpen":{"spiText":"inl main () =\n    1 \u002B                          │
│ \u0022\u0022\n","uri":"file:///home/runner/work/...et/spiral_Eval/packages/c │
│ 030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}}  │
│ / result:                                                                    │
│ 00:00:17 verbose #85 Supervisor.sendJson / port: 13805 / json:          │
│ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
│ lyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a4 │
│ 6e3655199e42df713504aa0/main.spi"}} / result:                                │
│ 00:00:20 verbose #29 > 00:00:02   debug #5                         │
│ Supervisor.supervisor_server.BuildFile / file:                               │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:17   debug #86 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 1 /       │
│ error: Some((File main has a type error somewhere in its path., FatalError   │
│ "File main has a type error somewhere in its path.")) / path:                │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:17   debug #87 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 1 / retry: 1 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:17   debug #88 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 1 / retry: 1 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:17   debug #89 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 2 / retry: 1 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:18   debug #90 Supervisor.buildFile / AsyncSeq.scan /             │
│ outputContent:                                                               │
│  / errors: [] / outputContentResult:  / typeErrorCount: 2 / retry: 1 /       │
│ error:  / path:                                                              │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:18   debug #91 Supervisor.buildFile / takeWhileInclusive /        │
│ outputContent:                                                               │
│  / errors: [] / typeErrorCount: 3 / retry: 1 / path:                         │
│ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
│ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
│ 00:00:18 verbose #92 Supervisor.sendJson / port: 13805 / json:          │
│ {"FileDelete":{"uris":[                                                      │
│ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │
│ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0"]}} / result:   │
│ 00:00:18   debug #93 FileSystem.watchWithFilter / Disposing watch       │
│ stream / filter: FileName, LastWrite                                         │
│ 00:00:24 verbose #124 networking.wait_for_port_access / { port = 13805; │
│ retry = 0; timeout = Some 100; status = false }                              │
│ 00:00:24 verbose #125 networking.test_port_open / { port = 13805; ex =  │
│ System.AggregateException: One or more errors occurred. (Connection refused) │
│ }                                                                            │
│ 00:00:18   debug #94 FileSystem.watchWithFilter / Disposing watch       │
│ stream / filter: FileName, LastWrite                                         │
│ Some (None, [])                                                              │
│                                                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
NotebookRunner.RunNotebookAsync / exiting... 3

── fsharp ──────────────────────────────────────────────────────────────────────
//// test

"""inl main () =
    x + y
"""
|> fun code -> Spi (code, None)
|> buildCode Fsharp false 10000 None
|> Async.runWithTimeout 10000
|> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
List.map fst)
|> _assertEqual (
    Some (
        None,
        [[
            "main.spi:
Unbound variable: x.
Unbound variable: y."
        ]]
    )
)
NotebookRunner.RunNotebookAsync / exiting... 2
NotebookRunner.RunNotebookAsync / exiting... 1; retry = 1/3 }
00:00:33   debug #5 runtime.execute_with_options / { file_name = dotnet; arguments = [
    "repl",
    "--exit-after-run",
    "--run",
    "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib",
    "--output-path",
    "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb",
]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ # Supervisor (Polyglot)                                                      │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com
> mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli
> ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/
> 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll"
> #r 
> @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha
> rp.Json.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open SpiralFileSystem.Operators
> open Microsoft.AspNetCore.SignalR.Client
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### sendJson                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline sendJson (port : int) (json : string) = async {
>     let host = "127.0.0.1"
>     let! portOpen = SpiralNetworking.test_port_open host port
>     if portOpen then
>         try
>             let connection = 
> HubConnectionBuilder().WithUrl($"http://{host}:{port}").Build()
>             do! connection.StartAsync () |> Async.AwaitTask
>             let! result = connection.InvokeAsync<string>("ClientToServerMsg", 
> json) |> Async.AwaitTask
>             do! connection.StopAsync () |> Async.AwaitTask
>             trace Verbose (fun () -> $"Supervisor.sendJson / port: {port} / 
> json: {json |> SpiralSm.ellipsis_end 200} / result: {result |> Option.ofObj |> 
> Option.map (SpiralSm.ellipsis_end 200)}") _locals
>             return Some result
>         with ex ->
>             trace Critical (fun () -> $"Supervisor.sendJson / port: {port} / 
> json: {json |> SpiralSm.ellipsis_end 200} / ex: {ex |> 
> SpiralSm.format_exception}") _locals
>             return None
>     else
>         trace Debug (fun () -> "Supervisor.sendJson / port: {port} / error: port
> not open") _locals
>         return None
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### sendObj                                                                  │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline sendObj port obj =
>     obj
>     |> System.Text.Json.JsonSerializer.Serialize
>     |> sendJson port
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### VSCPos                                                                   │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type VSCPos = {| line : int; character : int |}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### VSCRange                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type VSCRange = VSCPos * VSCPos
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### RString                                                                  │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type RString = VSCRange * string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### TracedError                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type TracedError = {| trace : string list; message : string |}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### ClientErrorsRes                                                          │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type ClientErrorsRes =
>     | FatalError of string
>     | TracedError of TracedError
>     | PackageErrors of {| uri : string; errors : RString list |}
>     | TokenizerErrors of {| uri : string; errors : RString list |}
>     | ParserErrors of {| uri : string; errors : RString list |}
>     | TypeErrors of {| uri : string; errors : RString list |}
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### workspaceRoot                                                            │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let workspaceRoot = SpiralFileSystem.get_workspace_root ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### awaitCompiler                                                            │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline awaitCompiler port cancellationToken = async {
>     let host = "127.0.0.1"
>     let struct (ct, disposable) = cancellationToken |> 
> SpiralThreading.new_disposable_token
>     let! ct = ct |> SpiralAsync.merge_cancellation_token_with_default_async
> 
>     let compiler = MailboxProcessor.Start (fun inbox -> async {
>         let! availablePort = SpiralNetworking.get_available_port (Some 180) host
> port
>         if availablePort <> port then
>             inbox.Post (port, false)
>         else
>             let compilerPath =
>                 workspaceRoot </> "deps/The-Spiral-Language/The Spiral Language 
> 2/artifacts/bin/The Spiral Language 2/release"
>                 |> System.IO.Path.GetFullPath
> 
>             let dllPath = compilerPath </> "Spiral.dll"
> 
>             let! exitCode, result =
>                 SpiralRuntime.execution_options (fun x ->
>                     { x with
>                         l0 = $@"dotnet ""{dllPath}"" --port {availablePort} 
> --default-int i32 --default-float f64"
>                         l1 = Some ct
>                         l3 = Some (fun struct (_, line, _) -> async {
>                             if line |> SpiralSm.contains 
> $"System.IO.IOException: Failed to bind to address http://{host}:{port}: address
> already in use." then
>                                 inbox.Post (port, false)
> 
>                             if line |> SpiralSm.contains $"Server bound to: 
> http://localhost:{availablePort}" then
>                                 let rec loop retry = async {
>                                     do!
>                                         SpiralNetworking.wait_for_port_access 
> (Some 100) true host availablePort
>                                         |> Async.runWithTimeoutAsync 500
>                                         |> Async.Ignore
> 
>                                     let _locals () = $"port: {availablePort} / 
> retry: {retry} / {_locals ()}"
>                                     try
>                                         let pingObj = {| Ping = true |}
>                                         let! pingResult = pingObj |> sendObj 
> availablePort
>                                         trace Verbose (fun () -> $"awaitCompiler
> / Ping / result: '{pingResult}'") _locals
> 
>                                         inbox.Post (availablePort, true)
>                                     with ex ->
>                                         trace Verbose (fun () -> $"awaitCompiler
> / Ping / ex: {ex |> SpiralSm.format_exception}") _locals
>                                         do! Async.Sleep 10
>                                         do! loop (retry + 1)
>                                 }
>                                 do! loop 0
>                         })
>                         l6 = Some workspaceRoot
>                     }
>                 )
>                 |> SpiralRuntime.execute_with_options_async
> 
>             trace Debug (fun () -> $"awaitCompiler / exitCode: {exitCode} / 
> result: {result}") _locals
>             disposable.Dispose ()
>     }, ct)
> 
>     let! serverPort, managed = compiler.Receive ()
> 
>     let connection = 
> HubConnectionBuilder().WithUrl($"http://{host}:{serverPort}").Build ()
>     do! connection.StartAsync () |> Async.AwaitTask
> 
>     let event = Event<_> ()
>     let disposable' = connection.On<string> ("ServerToClientMsg", event.Trigger)
>     let stream =
>         FSharp.Control.AsyncSeq.unfoldAsync
>             (fun () -> async {
>                 let! msg = event.Publish |> Async.AwaitEvent
>                 return Some (msg |> 
> FSharp.Json.Json.deserialize<ClientErrorsRes>, ())
>             })
>             ()
> 
>     let disposable' =
>         new_disposable (fun () ->
>             async {
>                 disposable'.Dispose ()
>                 do! connection.StopAsync () |> Async.AwaitTask
>                 disposable.Dispose ()
>                 if managed
>                 then do!
>                     SpiralNetworking.wait_for_port_access (Some 100) false host 
> serverPort
>                     |> Async.runWithTimeoutAsync 1500
>                     |> Async.Ignore
>             }
>             |> Async.RunSynchronously
>         )
> 
>     return
>         serverPort,
>         stream,
>         ct,
>         disposable'
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### getFilePathFromUri                                                       │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline getFilePathFromUri uri =
>     match System.Uri.TryCreate (uri, System.UriKind.Absolute) with
>     | true, uri -> uri.AbsolutePath |> System.IO.Path.GetFullPath
>     | _ -> failwith "invalid uri"
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### getCompilerPort                                                          │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline getCompilerPort () =
>     13805
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### serialize_obj                                                            │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
>     let serializeObj obj =
>         try
>             obj
>             |> FSharp.Json.Json.serialize
>             |> SpiralSm.replace "\\\\" "\\"
>             |> SpiralSm.replace "\\r\\n" "\n"
>             |> SpiralSm.replace "\\n" "\n"
>         with ex ->
>             trace Critical (fun () -> "Supervisor.serialize_obj / obj: %A{obj}")
> _locals
>             ""
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### Backend                                                                  │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type Backend =
>     | Fsharp
>     | Cuda
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### buildFile                                                                │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline buildFile backend timeout port cancellationToken path =
>     let rec loop retry = async {
>         let fullPath = path |> System.IO.Path.GetFullPath
>         let fileDir = fullPath |> System.IO.Path.GetDirectoryName
>         let fileName = fullPath |> System.IO.Path.GetFileNameWithoutExtension
>         let! code = fullPath |> SpiralFileSystem.read_all_text_async
> 
>         let stream, disposable = fileDir |> FileSystem.watchDirectory (fun _ -> 
> true)
>         use _ = disposable
> 
>         let struct (token, disposable) = SpiralThreading.new_disposable_token 
> cancellationToken
>         use _ = disposable
> 
>         let port = port |> Option.defaultWith getCompilerPort
>         let! serverPort, errors, ct, disposable = awaitCompiler port (Some 
> token)
>         use _ = disposable
> 
>         let outputFileName =
>             match backend with
>             | Fsharp -> $"{fileName}.fsx"
>             | Cuda -> $"{fileName}.py"
> 
>         let outputContentSeq =
>             stream
>             |> FSharp.Control.AsyncSeq.chooseAsync (function
>                 | _, (FileSystem.FileSystemChange.Changed (path, Some text))
>                     when (path |> System.IO.Path.GetFileName) = outputFileName
>                     ->
>                         // fileDir </> path |> 
> SpiralFileSystem.read_all_text_retry_async
>                         text |> Some |> Async.init
>                 | _ -> None |> Async.init
>             )
>             |> FSharp.Control.AsyncSeq.map (fun content ->
>                 Some (content |> SpiralSm.replace "\r\n" "\n"), None
>             )
> 
>         let inline printErrorData (data : {| uri : string; errors : RString list
> |}) =
>             let fileName = data.uri |> System.IO.Path.GetFileName
>             let errors =
>                 data.errors
>                 |> List.map snd
>                 |> SpiralSm.concat "\n"
>             $"{fileName}:\n{errors}"
> 
>         let errorsSeq =
>             errors
>             |> FSharp.Control.AsyncSeq.choose (fun error ->
>                 match error with
>                 | FatalError message ->
>                     Some (message, error)
>                 | TracedError data ->
>                     Some (data.message, error)
>                 | PackageErrors data when data.errors |> List.isEmpty |> not ->
>                     Some (data |> printErrorData, error)
>                 | TokenizerErrors data when data.errors |> List.isEmpty |> not 
> ->
>                     Some (data |> printErrorData, error)
>                 | ParserErrors data when data.errors |> List.isEmpty |> not ->
>                     Some (data |> printErrorData, error)
>                 | TypeErrors data when data.errors |> List.isEmpty |> not ->
>                     Some (data |> printErrorData, error)
>                 | _ -> None
>             )
>             |> FSharp.Control.AsyncSeq.map (fun (message, error) ->
>                 None, Some (message, error)
>             )
> 
>         let timerSeq =
>             500
>             |> FSharp.Control.AsyncSeq.intervalMs
>             |> FSharp.Control.AsyncSeq.map (fun _ -> None, None)
> 
>         let outputSeq =
>             [[ outputContentSeq; errorsSeq; timerSeq ]]
>             |> FSharp.Control.AsyncSeq.mergeAll
> 
>         let! outputChild =
>             ((None, [[]], 0), outputSeq)
>             ||> FSharp.Control.AsyncSeq.scan (
>                 fun (outputContentResult, errors, typeErrorCount) 
> (outputContent, error) ->
>                     trace Debug (fun () -> $"Supervisor.buildFile / 
> AsyncSeq.scan / outputContent:\n{outputContent |> Option.defaultValue 
> System.String.Empty |> SpiralSm.ellipsis_end 300} / errors: {errors |> 
> serializeObj} / outputContentResult: {outputContentResult} / typeErrorCount: 
> {typeErrorCount} / retry: {retry} / error: {error} / path: {path}") _locals
>                     match outputContent, error with
>                     | Some outputContent, None -> Some outputContent, errors, 
> typeErrorCount
>                     | None, Some (_, FatalError "File main has a type error 
> somewhere in its path.") ->
>                         outputContentResult, errors, typeErrorCount + 1
>                     | None, Some error -> outputContentResult, error :: errors, 
> typeErrorCount
>                     | None, None when typeErrorCount >= 1 ->
>                         outputContentResult, errors, typeErrorCount + 1
>                     | _ -> outputContentResult, errors, typeErrorCount
>             )
>             |> FSharp.Control.AsyncSeq.takeWhileInclusive (fun (outputContent, 
> errors, typeErrorCount) ->
>                 trace Debug (fun () -> $"Supervisor.buildFile / 
> takeWhileInclusive / outputContent:\n{outputContent |> Option.defaultValue 
> System.String.Empty |> SpiralSm.ellipsis_end 300} / errors: {errors |> 
> serializeObj} / typeErrorCount: {typeErrorCount} / retry: {retry} / path: 
> {path}") _locals
>     #if INTERACTIVE
>                 let errorWait = 2
>     #else
>                 let errorWait = 2
>     #endif
>                 match outputContent, errors with
>                 | None, [[]] when typeErrorCount > errorWait -> false
>                 | None, [[]] -> true
>                 | _ -> false
>             )
>             |> FSharp.Control.AsyncSeq.tryLast
>             |> Async.withCancellationToken ct
>             |> Async.catch
>             |> Async.runWithTimeoutAsync timeout
>             |> Async.StartChild
> 
>         // do! Async.Sleep 60
> 
>         let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
> 
>         let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} 
> |}
>         let! _fileOpenResult = fileOpenObj |> sendObj serverPort
> 
>         // do! Async.Sleep 60
> 
>         let backendId =
>             match backend with
>             | Fsharp -> "Fsharp"
>             | Cuda -> "Python + Cuda"
>         let buildFileObj = {| BuildFile = {| uri = fullPathUri; backend = 
> backendId |} |}
>         let! _buildFileResult = buildFileObj |> sendObj serverPort
> 
>         let! result, typeErrorCount =
>             outputChild
>             |> Async.map (function
>                 | Some (Ok (Some (outputCode, errors, typeErrorCount))) ->
>                     (outputCode, errors |> List.distinct |> List.rev), 
> typeErrorCount
>                 | Some (Error ex) ->
>                     trace Critical (fun () -> $"Supervisor.buildFile / error: 
> {ex |> SpiralSm.format_exception} / retry: {retry}") _locals
>                     (None, [[]]), 0
>                 | _ -> (None, [[]]), 0
>             )
>         
>         match result with
>         | None, _ when typeErrorCount > 0 && retry = 0 ->
>             return! loop (retry + 1)
>         | _ ->
>             if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then
>                 let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
>                 let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]]
> |} |}
>                 let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort
>                 ()
> 
>             let outputPath = fileDir </> outputFileName
>             return outputPath, result
>     }
>     loop 0
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### SpiralInput                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> type SpiralInput =
>     | Spi of string * string option
>     | Spir of string
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### persistCode                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline persistCode backend input = async {
>     let targetDir = workspaceRoot </> "target/spiral_Eval"
> 
>     let packagesDir = targetDir </> "packages"
> 
>     let hashHex = $"%A{backend}%A{input}" |> SpiralCrypto.hash_text
> 
>     let codeDir = packagesDir </> hashHex
>     codeDir |> System.IO.Directory.CreateDirectory |> ignore
> 
>     let moduleName = "main"
> 
>     let spirModule, spiModule =
>         match input with
>         | Spi (spi, Some spir) -> true, true
>         | Spi (spi, None) -> false, true
>         | Spir spir -> true, false
>         |> fun (spir, spi) ->
>             (if spir then $"real_{moduleName}*-" else ""),
>             if spi then moduleName else ""
> 
>     let spiprojPath = codeDir </> "package.spiproj"
>     let spiprojCode =
>         $"""packageDir: {workspaceRoot </> "lib"}
> packages:
>     |core-
>     spiral-
> modules:
>     {spirModule}
>     {spiModule}
> """
>     do! spiprojCode |> SpiralFileSystem.write_all_text_exists spiprojPath
> 
>     let spirPath = codeDir </> $"real_{moduleName}.spir"
>     let spiPath = codeDir </> $"{moduleName}.spi"
> 
>     let spirCode, spiCode =
>         match input with
>         | Spi (spi, Some spir) -> Some spir, Some spi
>         | Spi (spi, None) -> None, Some spi
>         | Spir spir -> Some spir, None
> 
>     match spirCode with
>     | Some spir -> do! spir |> SpiralFileSystem.write_all_text_exists spirPath
>     | None -> ()
>     match spiCode with
>     | Some spi -> do! spi |> SpiralFileSystem.write_all_text_exists spiPath
>     | None -> ()
> 
>     let spiralPath =
>         match input with
>         | Spi _ -> spiPath
>         | Spir _ -> spirPath
>     match backend with
>     | None -> return spiralPath, None
>     | Some backend ->
>         let outputFileName =
>             let fileName =
>                 match input with
>                 | Spi _ -> moduleName
>                 | Spir _ -> $"real_{moduleName}"
>             match backend with
>             | Fsharp -> $"{fileName}.fsx"
>             | Cuda -> $"{fileName}.py"
>         let outputPath = codeDir </> outputFileName
>         if outputPath |> System.IO.File.Exists |> not
>         then return spiralPath, None
>         else
>             let! oldCode = spiralPath |> SpiralFileSystem.read_all_text_async
>             if oldCode <> (spiCode |> Option.defaultValue (spirCode |> 
> Option.defaultValue ""))
>             then return spiralPath, None
>             else
>                 let! outputCode = outputPath |> 
> SpiralFileSystem.read_all_text_async
>                 return spiralPath, Some (outputPath, outputCode |> 
> SpiralSm.replace "\r\n" "\n")
>     }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### buildCode                                                                │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let buildCode backend isCache timeout cancellationToken input = async {
>     let! mainPath, outputCache = input |> persistCode (Some backend)
>     match outputCache with
>     | Some (outputPath, outputCode) when isCache -> return mainPath, 
> (outputPath, Some outputCode), [[]]
>     | _ ->
>         let! outputPath, (outputCode, errors) = mainPath |> buildFile backend 
> timeout None cancellationToken
>         return mainPath, (outputPath, outputCode), errors
> }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl app () =
>     console.write_line "text"
>     1i32
> 
> inl main () =
>     app
>     |> dyn
>     |> ignore
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp false 15000 None
> |> Async.runWithTimeout 15000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some """let rec closure1 () () : unit =
>     let v0 : (string -> unit) = System.Console.WriteLine
>     let v1 : string = "text"
>     v0 v1
> and closure0 () () : int32 =
>     let v0 : unit = ()
>     let v1 : (unit -> unit) = closure1()
>     let v2 : unit = (fun () -> v1 (); v0) ()
>     1
> let v0 : (unit -> int32) = closure0()
> ()
> """,
>         [[]]
>     )
> )
> 
> ╭─[ 3.35s - stdout ]───────────────────────────────────────────────────────────╮
> │ 00:00:10 verbose #1 networking.test_port_open / { port = 13806; ex =    │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:04   debug #1 Supervisor.buildFile / takeWhileInclusive /         │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:04   debug #2 Supervisor.buildFile / AsyncSeq.scan /              │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:04   debug #3 Supervisor.buildFile / takeWhileInclusive /         │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:04 verbose #4 Supervisor.sendJson / port: 13805 / json:           │
> │ {"FileOpen":{"spiText":"inl app () =\n    console.write_line                 │
> │ \u0022text\u0022\n    1i32\n\ninl main                                       │
> │ ...et/spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69f2d6d04b │
> │ 9dc60aebd08a0d6/main.spi"}} / result:                                        │
> │ 00:00:04 verbose #5 Supervisor.sendJson / port: 13805 / json:           │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
> │ lyglot/target/spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69 │
> │ f2d6d04b9dc60aebd08a0d6/main.spi"}} / result:                                │
> │ 00:00:05   debug #6 Supervisor.buildFile / AsyncSeq.scan /              │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:05   debug #7 Supervisor.buildFile / takeWhileInclusive /         │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:05   debug #8 Supervisor.buildFile / AsyncSeq.scan /              │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:05   debug #9 Supervisor.buildFile / takeWhileInclusive /         │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:06   debug #10 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:06   debug #11 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:06   debug #12 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:06   debug #13 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:07   debug #14 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:07   debug #15 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:07   debug #16 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │ let rec closure1 () () : unit =                                              │
> │     let v0 : (string -> unit) = System.Console.WriteLine                     │
> │     let v1 : string = "text"                                                 │
> │     v0 v1                                                                    │
> │ and closure0 () () : i...t v0 : unit = ()                                    │
> │     let v1 : (unit -> unit) = closure1()                                     │
> │     let v2 : unit = (fun () -> v1 (); v0) ()                                 │
> │     1                                                                        │
> │ let v0 : (unit -> int32) = closure0()                                        │
> │ ()                                                                           │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:07   debug #17 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │ let rec closure1 () () : unit =                                              │
> │     let v0 : (string -> unit) = System.Console.WriteLine                     │
> │     let v1 : string = "text"                                                 │
> │     v0 v1                                                                    │
> │ and closure0 () () : i...t v0 : unit = ()                                    │
> │     let v1 : (unit -> unit) = closure1()                                     │
> │     let v2 : unit = (fun () -> v1 (); v0) ()                                 │
> │     1                                                                        │
> │ let v0 : (unit -> int32) = closure0()                                        │
> │ ()                                                                           │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │
> │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi                │
> │ 00:00:07 verbose #18 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22cc │
> │ d04317d5605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6"]}} / result:   │
> │ 00:00:07   debug #19 FileSystem.watchWithFilter / Disposing watch       │
> │ stream / filter: FileName, LastWrite                                         │
> │ Some                                                                         │
> │   (Some                                                                      │
> │      "let rec closure1 () () : unit =                                        │
> │     let v0 : (string -> unit) = System.Console.WriteLine                     │
> │     let v1 : string = "text"                                                 │
> │     v0 v1                                                                    │
> │ and closure0 () () : int32 =                                                 │
> │     let v0 : unit = ()                                                       │
> │     let v1 : (unit -> unit) = closure1()                                     │
> │     let v2 : unit = (fun () -> v1 (); v0) ()                                 │
> │     1                                                                        │
> │ let v0 : (unit -> int32) = closure0()                                        │
> │ ()                                                                           │
> │ ",                                                                           │
> │    [])                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> ""
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "Cannot find `main` in file main." ]]
>     )
> )
> 
> ╭─[ 240.88ms - stdout ]────────────────────────────────────────────────────────╮
> │ 00:00:13 verbose #2 networking.test_port_open / { port = 13806; ex =    │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:07   debug #20 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:07   debug #21 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:07   debug #22 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:07 verbose #23 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileOpen":{"spiText":"","uri":"file:///home/runner/work/polyglot/polyglot/ │
> │ target/spiral_Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e68c0feb │
> │ 33db55c4d28170aa/main.spi"}} / result:                                       │
> │ 00:00:07 verbose #24 Supervisor.sendJson / port: 13805 / json:          │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
> │ lyglot/target/spiral_Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e │
> │ 68c0feb33db55c4d28170aa/main.spi"}} / result:                                │
> │ 00:00:07   debug #25 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error: Some((Cannot find `main` in file main., FatalError "Cannot find       │
> │ `main` in file main.")) / path:                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:07   debug #26 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [                                                                 │
> │   [                                                                          │
> │     "Cannot find `main` in file main.",                                      │
> │     {                                                                        │
> │       "FatalError": "Cannot find `main` in file main."                       │
> │     }                                                                        │
> │   ]                                                                          │
> │ ] / typeErrorCount: 0 / retry: 0 / path:                                     │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │
> │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi                │
> │ 00:00:07 verbose #27 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a653 │
> │ 42ccc7da0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa"]}} / result:   │
> │ 00:00:07   debug #28 FileSystem.watchWithFilter / Disposing watch       │
> │ stream / filter: FileName, LastWrite                                         │
> │ Some (None, ["Cannot find `main` in file main."])                            │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () =
>     1i32 / 0i32
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "An attempt to divide by zero has been detected at compile time." ]]
>     )
> )
> 
> ╭─[ 269.02ms - stdout ]────────────────────────────────────────────────────────╮
> │ 00:00:13 verbose #3 networking.test_port_open / { port = 13806; ex =    │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:07   debug #29 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:07   debug #30 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:07   debug #31 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:07 verbose #32 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileOpen":{"spiText":"inl main () =\n    1i32 /                            │
> │ 0i32\n","uri":"file:///home/runner/work/polyglot/p...et/spiral_Eval/packages │
> │ /fef9812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi"} │
> │ } / result:                                                                  │
> │ 00:00:07 verbose #33 Supervisor.sendJson / port: 13805 / json:          │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
> │ lyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6ff05910b73 │
> │ ead9e8c4f27f88d2a5cdfb2/main.spi"}} / result:                                │
> │ 00:00:07   debug #34 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error: Some((An attempt to divide by zero has been detected at compile       │
> │ time., TracedError                                                           │
> │   { message = "An attempt to divide by zero has been detected at compile     │
> │ time."                                                                       │
> │     trace =                                                                  │
> │      ["Error trace on line: 1, column: 10 in module:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.               │
> │ inl main () =                                                                │
> │          ^                                                                   │
> │ ";                                                                           │
> │       "Error trace on line: 2, column: 5 in module:                          │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.               │
> │     1i32 / 0i32                                                              │
> │     ^                                                                        │
> │ "] })) / path:                                                               │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:07   debug #35 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [                                                                 │
> │   [                                                                          │
> │     "An attempt to divide by zero has been detected at compile time.",       │
> │     {                                                                        │
> │       "TracedError": {                                                       │
> │         "message": "An attempt to divide by zero has been detected at        │
> │ compile time.",                                                              │
> │         "trace": [                                                           │
> │           "Error trace on line: 1, column: 10 in module:                     │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.               │
> │ inl main () =                                                                │
> │          ^                                                                   │
> │ ",                                                                           │
> │           "Error trace on line: 2, column: 5 in module:                      │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi.               │
> │     1i32 / 0i32                                                              │
> │     ^                                                                        │
> │ "                                                                            │
> │         ]                                                                    │
> │       }                                                                      │
> │     }                                                                        │
> │   ]                                                                          │
> │ ] / typeErrorCount: 0 / retry: 0 / path:                                     │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │
> │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi                │
> │ 00:00:07 verbose #36 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9 │
> │ 812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2"]}} / result:   │
> │ 00:00:07   debug #37 FileSystem.watchWithFilter / Disposing watch       │
> │ stream / filter: FileName, LastWrite                                         │
> │ Some (None, ["An attempt to divide by zero has been detected at compile      │
> │ time."])                                                                     │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () =
>     1 + ""
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[
>             "main.spi:
> Constraint satisfaction error.
> Got: string
> Fails to satisfy: number"
>         ]]
>     )
> )
> 
> ╭─[ 118.87ms - stdout ]────────────────────────────────────────────────────────╮
> │ 00:00:13 verbose #4 networking.test_port_open / { port = 13806; ex =    │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:08   debug #38 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:08   debug #39 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:08   debug #40 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:08 verbose #41 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileOpen":{"spiText":"inl main () =\n    1 \u002B                          │
> │ \u0022\u0022\n","uri":"file:///home/runner/work/...et/spiral_Eval/packages/c │
> │ 030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}}  │
> │ / result:                                                                    │
> │ 00:00:08 verbose #42 Supervisor.sendJson / port: 13805 / json:          │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
> │ lyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a4 │
> │ 6e3655199e42df713504aa0/main.spi"}} / result:                                │
> │ 00:00:08   debug #43 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error: Some((File main has a type error somewhere in its path., FatalError   │
> │ "File main has a type error somewhere in its path.")) / path:                │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:08   debug #44 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 1 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:08   debug #45 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 1 / retry: 0 /       │
> │ error: Some((main.spi:                                                       │
> │ Constraint satisfaction error.                                               │
> │ Got: string                                                                  │
> │ Fails to satisfy: number, TypeErrors                                         │
> │   { errors =                                                                 │
> │      [(({ character = 8                                                      │
> │           line = 1 }, { character = 10                                       │
> │                         line = 1 }),                                         │
> │        "Constraint satisfaction error.                                       │
> │ Got: string                                                                  │
> │ Fails to satisfy: number")]                                                  │
> │     uri =                                                                    │
> │                                                                              │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │
> │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / │
> │ path:                                                                        │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:08   debug #46 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [                                                                 │
> │   [                                                                          │
> │     "main.spi:                                                               │
> │ Constraint satisfaction error.                                               │
> │ Got: string                                                                  │
> │ Fails to satisfy: number",                                                   │
> │     {                                                                        │
> │       "TypeErrors": {                                                        │
> │         "errors": [                                                          │
> │           [                                                                  │
> │             [                                                                │
> │               {                                                              │
> │                 "character": 8,                                              │
> │                 "line": 1                                                    │
> │               },                                                             │
> │               {                                                              │
> │                 "character": 10,                                             │
> │                 "line": 1                                                    │
> │               }                                                              │
> │             ],                                                               │
> │             "Constraint satisfaction error.                                  │
> │ Got: string                                                                  │
> │ Fails to satisfy: number"                                                    │
> │           ]                                                                  │
> │         ],                                                                   │
> │         "uri":                                                               │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │
> │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"       │
> │       }                                                                      │
> │     }                                                                        │
> │   ]                                                                          │
> │ ] / typeErrorCount: 1 / retry: 0 / path:                                     │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:14 verbose #5 networking.test_port_open / { port = 13806; ex =    │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:08   debug #47 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 1 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:08   debug #48 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 1 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:08   debug #49 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 1 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:08 verbose #50 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileOpen":{"spiText":"inl main () =\n    1 \u002B                          │
> │ \u0022\u0022\n","uri":"file:///home/runner/work/...et/spiral_Eval/packages/c │
> │ 030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}}  │
> │ / result:                                                                    │
> │ 00:00:08 verbose #52 Supervisor.sendJson / port: 13805 / json:          │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
> │ lyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a4 │
> │ 6e3655199e42df713504aa0/main.spi"}} / result:                                │
> │ 00:00:08   debug #51 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 1 /       │
> │ error: Some((main.spi:                                                       │
> │ Constraint satisfaction error.                                               │
> │ Got: string                                                                  │
> │ Fails to satisfy: number, TypeErrors                                         │
> │   { errors =                                                                 │
> │      [(({ character = 8                                                      │
> │           line = 1 }, { character = 10                                       │
> │                         line = 1 }),                                         │
> │        "Constraint satisfaction error.                                       │
> │ Got: string                                                                  │
> │ Fails to satisfy: number")]                                                  │
> │     uri =                                                                    │
> │                                                                              │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │
> │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / │
> │ path:                                                                        │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:08   debug #53 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [                                                                 │
> │   [                                                                          │
> │     "main.spi:                                                               │
> │ Constraint satisfaction error.                                               │
> │ Got: string                                                                  │
> │ Fails to satisfy: number",                                                   │
> │     {                                                                        │
> │       "TypeErrors": {                                                        │
> │         "errors": [                                                          │
> │           [                                                                  │
> │             [                                                                │
> │               {                                                              │
> │                 "character": 8,                                              │
> │                 "line": 1                                                    │
> │               },                                                             │
> │               {                                                              │
> │                 "character": 10,                                             │
> │                 "line": 1                                                    │
> │               }                                                              │
> │             ],                                                               │
> │             "Constraint satisfaction error.                                  │
> │ Got: string                                                                  │
> │ Fails to satisfy: number"                                                    │
> │           ]                                                                  │
> │         ],                                                                   │
> │         "uri":                                                               │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │
> │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"       │
> │       }                                                                      │
> │     }                                                                        │
> │   ]                                                                          │
> │ ] / typeErrorCount: 0 / retry: 1 / path:                                     │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │
> │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi                │
> │ 00:00:08 verbose #54 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │
> │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0"]}} / result:   │
> │ 00:00:08   debug #55 FileSystem.watchWithFilter / Disposing watch       │
> │ stream / filter: FileName, LastWrite                                         │
> │ 00:00:08   debug #56 FileSystem.watchWithFilter / Disposing watch       │
> │ stream / filter: FileName, LastWrite                                         │
> │ Some (None, ["main.spi:                                                      │
> │ Constraint satisfaction error.                                               │
> │ Got: string                                                                  │
> │ Fails to satisfy: number"])                                                  │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () =
>     x + y
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[
>             "main.spi:
> Unbound variable: x.
> Unbound variable: y."
>         ]]
>     )
> )
> 
> ╭─[ 82.67ms - stdout ]─────────────────────────────────────────────────────────╮
> │ 00:00:14 verbose #6 networking.test_port_open / { port = 13806; ex =    │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:08   debug #57 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9d │
> │ e5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi                │
> │ 00:00:08   debug #58 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9d │
> │ e5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi                │
> │ 00:00:08   debug #59 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9d │
> │ e5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi                │
> │ 00:00:08 verbose #60 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileOpen":{"spiText":"inl main () =\n    x \u002B                          │
> │ y\n","uri":"file:///home/runner/work/polyglot/po...et/spiral_Eval/packages/6 │
> │ cdeec507f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"}}  │
> │ / result:                                                                    │
> │ 00:00:08   debug #61 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error: Some((main.spi:                                                       │
> │ Unbound variable: x.                                                         │
> │ Unbound variable: y., TypeErrors                                             │
> │   { errors =                                                                 │
> │      [(({ character = 4                                                      │
> │           line = 1 }, { character = 5                                        │
> │                         line = 1 }), "Unbound variable: x.");                │
> │       (({ character = 8                                                      │
> │           line = 1 }, { character = 9                                        │
> │                         line = 1 }), "Unbound variable: y.")]                │
> │     uri =                                                                    │
> │                                                                              │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cde │
> │ ec507f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })) / │
> │ path:                                                                        │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9d │
> │ e5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi                │
> │ 00:00:08   debug #62 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [                                                                 │
> │   [                                                                          │
> │     "main.spi:                                                               │
> │ Unbound variable: x.                                                         │
> │ Unbound variable: y.",                                                       │
> │     {                                                                        │
> │       "TypeErrors": {                                                        │
> │         "errors": [                                                          │
> │           [                                                                  │
> │             [                                                                │
> │               {                                                              │
> │                 "character": 4,                                              │
> │                 "line": 1                                                    │
> │               },                                                             │
> │               {                                                              │
> │                 "character": 5,                                              │
> │                 "line": 1                                                    │
> │               }                                                              │
> │             ],                                                               │
> │             "Unbound variable: x."                                           │
> │           ],                                                                 │
> │           [                                                                  │
> │             [                                                                │
> │               {                                                              │
> │                 "character": 8,                                              │
> │                 "line": 1                                                    │
> │               },                                                             │
> │               {                                                              │
> │                 "character": 9,                                              │
> │                 "line": 1                                                    │
> │               }                                                              │
> │             ],                                                               │
> │             "Unbound variable: y."                                           │
> │           ]                                                                  │
> │         ],                                                                   │
> │         "uri":                                                               │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cde │
> │ ec507f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"       │
> │       }                                                                      │
> │     }                                                                        │
> │   ]                                                                          │
> │ ] / typeErrorCount: 0 / retry: 0 / path:                                     │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9d │
> │ e5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi                │
> │ 00:00:08 verbose #63 Supervisor.sendJson / port: 13805 / json:          │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
> │ lyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429cfa7049b777a622aa3b │
> │ f7333b151c767fde35dc5d1/main.spi"}} / result:                                │
> │ 00:00:08 verbose #64 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cde │
> │ ec507f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1"]}} / result:   │
> │ 00:00:08   debug #65 FileSystem.watchWithFilter / Disposing watch       │
> │ stream / filter: FileName, LastWrite                                         │
> │ Some (None, ["main.spi:                                                      │
> │ Unbound variable: x.                                                         │
> │ Unbound variable: y."])                                                      │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl main () =
>     real
>         inl real_unbox forall a. (obj : a) : a =
>             typecase obj with
>             | _ => obj
>         real_unbox ()
>     ()
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "Cannot apply a forall with a term." ]]
>     )
> )
> 
> ╭─[ 243.93ms - stdout ]────────────────────────────────────────────────────────╮
> │ 00:00:14 verbose #7 networking.test_port_open / { port = 13806; ex =    │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:08   debug #66 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │
> │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi                │
> │ 00:00:08   debug #67 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │
> │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi                │
> │ 00:00:08   debug #68 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │
> │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi                │
> │ 00:00:08 verbose #69 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileOpen":{"spiText":"\ninl main () =\n    real\n        inl real_unbox    │
> │ forall a. (obj : a) : a                                                      │
> │ =\...et/spiral_Eval/packages/61c59548b11a56efe6894b6855e845b5bd8d9f78be60580 │
> │ 3496c626bd6369493/main.spi"}} / result:                                      │
> │ 00:00:08 verbose #70 Supervisor.sendJson / port: 13805 / json:          │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
> │ lyglot/target/spiral_Eval/packages/61c59548b11a56efe6894b6855e845b5bd8d9f78b │
> │ e605803496c626bd6369493/main.spi"}} / result:                                │
> │ 00:00:08   debug #71 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error: Some((Cannot apply a forall with a term., TracedError                 │
> │   { message = "Cannot apply a forall with a term."                           │
> │     trace =                                                                  │
> │      ["Error trace on line: 2, column: 10 in module:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │
> │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi.               │
> │ inl main () =                                                                │
> │          ^                                                                   │
> │ ";                                                                           │
> │       "Error trace on line: 4, column: 9 in module:                          │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │
> │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi.               │
> │         inl real_unbox forall a. (obj : a) : a =                             │
> │         ^                                                                    │
> │ ";                                                                           │
> │       "Error trace on line: 7, column: 9 in module:                          │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │
> │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi.               │
> │         real_unbox ()                                                        │
> │         ^                                                                    │
> │ "] })) / path:                                                               │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │
> │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi                │
> │ 00:00:08   debug #72 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [                                                                 │
> │   [                                                                          │
> │     "Cannot apply a forall with a term.",                                    │
> │     {                                                                        │
> │       "TracedError": {                                                       │
> │         "message": "Cannot apply a forall with a term.",                     │
> │         "trace": [                                                           │
> │           "Error trace on line: 2, column: 10 in module:                     │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │
> │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi.               │
> │ inl main () =                                                                │
> │          ^                                                                   │
> │ ",                                                                           │
> │           "Error trace on line: 4, column: 9 in module:                      │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │
> │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi.               │
> │         inl real_unbox forall a. (obj : a) : a =                             │
> │         ^                                                                    │
> │ ",                                                                           │
> │           "Error trace on line: 7, column: 9 in module:                      │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │
> │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi.               │
> │         real_unbox ()                                                        │
> │         ^                                                                    │
> │ "                                                                            │
> │         ]                                                                    │
> │       }                                                                      │
> │     }                                                                        │
> │   ]                                                                          │
> │ ] / typeErrorCount: 0 / retry: 0 / path:                                     │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │
> │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi                │
> │ 00:00:08 verbose #73 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c5 │
> │ 9548b11a56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493"]}} / result:   │
> │ 00:00:08   debug #74 FileSystem.watchWithFilter / Disposing watch       │
> │ stream / filter: FileName, LastWrite                                         │
> │ Some (None, ["Cannot apply a forall with a term."])                          │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl main () =
>     real
>         inl real_unbox forall a. (obj : a) : a =
>             typecase obj with
>             | _ => obj
>         real_unbox `i32 1
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         None,
>         [[ "The main function should not have a forall." ]]
>     )
> )
> 
> ╭─[ 254.76ms - stdout ]────────────────────────────────────────────────────────╮
> │ 00:00:14 verbose #8 networking.test_port_open / { port = 13806; ex =    │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:08   debug #75 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/d18ab5eccdd1 │
> │ 6bb367f1cae1e75791ae1134c04410280fa27c5ddd010dff3b10/main.spi                │
> │ 00:00:08   debug #76 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/d18ab5eccdd1 │
> │ 6bb367f1cae1e75791ae1134c04410280fa27c5ddd010dff3b10/main.spi                │
> │ 00:00:08   debug #77 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/d18ab5eccdd1 │
> │ 6bb367f1cae1e75791ae1134c04410280fa27c5ddd010dff3b10/main.spi                │
> │ 00:00:08 verbose #78 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileOpen":{"spiText":"\ninl main () =\n    real\n        inl real_unbox    │
> │ forall a. (obj : a) : a                                                      │
> │ =\...et/spiral_Eval/packages/d18ab5eccdd16bb367f1cae1e75791ae1134c04410280fa │
> │ 27c5ddd010dff3b10/main.spi"}} / result:                                      │
> │ 00:00:08 verbose #79 Supervisor.sendJson / port: 13805 / json:          │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
> │ lyglot/target/spiral_Eval/packages/d18ab5eccdd16bb367f1cae1e75791ae1134c0441 │
> │ 0280fa27c5ddd010dff3b10/main.spi"}} / result:                                │
> │ 00:00:08   debug #80 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error: Some((The main function should not have a forall., TracedError {      │
> │ message = "The main function should not have a forall."                      │
> │               trace = [] })) / path:                                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/d18ab5eccdd1 │
> │ 6bb367f1cae1e75791ae1134c04410280fa27c5ddd010dff3b10/main.spi                │
> │ 00:00:08   debug #81 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [                                                                 │
> │   [                                                                          │
> │     "The main function should not have a forall.",                           │
> │     {                                                                        │
> │       "TracedError": {                                                       │
> │         "message": "The main function should not have a forall.",            │
> │         "trace": []                                                          │
> │       }                                                                      │
> │     }                                                                        │
> │   ]                                                                          │
> │ ] / typeErrorCount: 0 / retry: 0 / path:                                     │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/d18ab5eccdd1 │
> │ 6bb367f1cae1e75791ae1134c04410280fa27c5ddd010dff3b10/main.spi                │
> │ 00:00:08 verbose #82 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/d18a │
> │ b5eccdd16bb367f1cae1e75791ae1134c04410280fa27c5ddd010dff3b10"]}} / result:   │
> │ 00:00:08   debug #83 FileSystem.watchWithFilter / Disposing watch       │
> │ stream / filter: FileName, LastWrite                                         │
> │ Some (None, ["The main function should not have a forall."])                 │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl init_series start end inc =
>     inl total : f64 = conv ((end - start) / inc) + 1
>     listm.init total (conv >> (*) inc >> (+) start) : list f64
> 
> type integration = (f64 -> f64) -> f64 -> f64 -> f64
> 
> inl integral dt : integration =
>     fun f a b =>
>         init_series (a + dt / 2) (b - dt / 2) dt
>         |> listm.map (f >> (*) dt)
>         |> listm.fold (+) 0
> 
> inl main () =
>     integral 0.1 (fun x => x ** 2) 0 1
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some "0.3325000000000001\n",
>         [[]]
>     )
> )
> 
> ╭─[ 261.50ms - stdout ]────────────────────────────────────────────────────────╮
> │ 00:00:14 verbose #9 networking.test_port_open / { port = 13806; ex =    │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:08   debug #84 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2 │
> │ a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi                │
> │ 00:00:08   debug #85 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2 │
> │ a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi                │
> │ 00:00:08   debug #86 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2 │
> │ a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi                │
> │ 00:00:08 verbose #87 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileOpen":{"spiText":"\ninl init_series start end inc =\n    inl total :   │
> │ f64 = conv ((end -                                                           │
> │ start)...et/spiral_Eval/packages/c127414de2a2a92d9fd93ea5a8e9312a6aad9129ffd │
> │ 3cbd56ac7f0327106f1db/main.spi"}} / result:                                  │
> │ 00:00:08 verbose #88 Supervisor.sendJson / port: 13805 / json:          │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
> │ lyglot/target/spiral_Eval/packages/c127414de2a2a92d9fd93ea5a8e9312a6aad9129f │
> │ fd3cbd56ac7f0327106f1db/main.spi"}} / result:                                │
> │ 00:00:08   debug #89 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │ 0.3325000000000001                                                           │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2 │
> │ a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi                │
> │ 00:00:08   debug #90 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │ 0.3325000000000001                                                           │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2 │
> │ a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi                │
> │ 00:00:08 verbose #91 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127 │
> │ 414de2a2a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db"]}} / result:   │
> │ 00:00:08   debug #92 FileSystem.watchWithFilter / Disposing watch       │
> │ stream / filter: FileName, LastWrite                                         │
> │ Some (Some "0.3325000000000001                                               │
> │ ", [])                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl init_series start end inc =
>     inl total : f64 = conv ((end - start) / inc) + 1
>     listm.init total (conv >> (*) inc >> (+) start) : list f64
> 
> type integration = (f64 -> f64) -> f64 -> f64 -> f64
> 
> inl integral dt : integration =
>     fun f a b =>
>         init_series (a + dt / 2) (b - dt / 2) dt
>         |> listm.map (f >> (*) dt)
>         |> listm.fold (+) 0
> 
> inl main () =
>     integral 0.1 (fun x => x ** 2) 0 1
> """
> |> fun code -> Spi (code, None)
> |> buildCode Cuda false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some @"kernel = r""""""
> """"""
> class static_array():
>     def __init__(self, length):
>         self.ptr = [[]]
>         for _ in range(length):
>             self.ptr.append(None)
> 
>     def __getitem__(self, index):
>         assert 0 <= index < len(self.ptr), ""The get index needs to be in 
> range.""
>         return self.ptr[[index]]
>     
>     def __setitem__(self, index, value):
>         assert 0 <= index < len(self.ptr), ""The set index needs to be in 
> range.""
>         self.ptr[[index]] = value
> 
> class static_array_list(static_array):
>     def __init__(self, length):
>         super().__init__(length)
>         self.length = 0
> 
>     def __getitem__(self, index):
>         assert 0 <= index < self.length, ""The get index needs to be in range.""
>         return self.ptr[[index]]
>     
>     def __setitem__(self, index, value):
>         assert 0 <= index < self.length, ""The set index needs to be in range.""
>         self.ptr[[index]] = value
> 
>     def push(self,value):
>         assert (self.length < len(self.ptr)), ""The length before pushing has to
> be less than the maximum length of the array.""
>         self.ptr[[self.length]] = value
>         self.length += 1
> 
>     def pop(self):
>         assert (0 < self.length), ""The length before popping has to be greater 
> than 0.""
>         self.length -= 1
>         return self.ptr[[self.length]]
> 
>     def unsafe_set_length(self,i):
>         assert 0 <= i <= len(self.ptr), ""The new length has to be in range.""
>         self.length = i
> 
> class dynamic_array(static_array): 
>     pass
> 
> class dynamic_array_list(static_array_list):
>     def length_(self): return self.length
> 
> import cupy as cp
> from dataclasses import dataclass
> from typing import NamedTuple, Union, Callable, Tuple
> i8 = i16 = i32 = i64 = u8 = u16 = u32 = u64 = int; f32 = f64 = float; char = 
> string = str
> 
> def main():
>     return 0.3325000000000001
> 
> if __name__ == '__main__': result = main(); None if result is None else 
> print(result)
> ",
>         [[]]
>     )
> )
> 
> ╭─[ 269.75ms - stdout ]────────────────────────────────────────────────────────╮
> │ 00:00:14 verbose #10 networking.test_port_open / { port = 13806; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:09   debug #93 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8 │
> │ e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi                │
> │ 00:00:09   debug #94 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8 │
> │ e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi                │
> │ 00:00:09   debug #95 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8 │
> │ e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi                │
> │ 00:00:09 verbose #96 Supervisor.sendJson / port: 13805 / json:          │
> │ {"FileOpen":{"spiText":"\ninl init_series start end inc =\n    inl total :   │
> │ f64 = conv ((end -                                                           │
> │ start)...et/spiral_Eval/packages/ca288d6928a8e761855210f25f97fdc056ee1f21be4 │
> │ a24b26e8533ec368831c8/main.spi"}} / result:                                  │
> │ 00:00:09 verbose #97 Supervisor.sendJson / port: 13805 / json:          │
> │ {"BuildFile":{"backend":"Python \u002B                                       │
> │ Cuda","uri":"file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/p │
> │ ackages/ca288d6928a8e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/mai │
> │ n.spi"}} / result:                                                           │
> │ 00:00:09   debug #98 Supervisor.buildFile / AsyncSeq.scan /             │
> │ outputContent:                                                               │
> │ kernel = r"""                                                                │
> │ """                                                                          │
> │ class static_array():                                                        │
> │     def __init__(self, length):                                              │
> │         self.ptr = []                                                        │
> │         for _ in range(length):                                              │
> │             self.ptr.app...char = string = str                               │
> │                                                                              │
> │ def main():                                                                  │
> │     return 0.3325000000000001                                                │
> │                                                                              │
> │ if __name__ == '__main__': result = main(); None if result is None else      │
> │ print(result)                                                                │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8 │
> │ e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi                │
> │ 00:00:09   debug #99 Supervisor.buildFile / takeWhileInclusive /        │
> │ outputContent:                                                               │
> │ kernel = r"""                                                                │
> │ """                                                                          │
> │ class static_array():                                                        │
> │     def __init__(self, length):                                              │
> │         self.ptr = []                                                        │
> │         for _ in range(length):                                              │
> │             self.ptr.app...char = string = str                               │
> │                                                                              │
> │ def main():                                                                  │
> │     return 0.3325000000000001                                                │
> │                                                                              │
> │ if __name__ == '__main__': result = main(); None if result is None else      │
> │ print(result)                                                                │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8 │
> │ e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi                │
> │ 00:00:09 verbose #100 Supervisor.sendJson / port: 13805 / json:         │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca28 │
> │ 8d6928a8e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8"]}} / result:   │
> │ 00:00:09   debug #101 FileSystem.watchWithFilter / Disposing watch      │
> │ stream / filter: FileName, LastWrite                                         │
> │ Some                                                                         │
> │   (Some                                                                      │
> │      "kernel = r"""                                                          │
> │ """                                                                          │
> │ class static_array():                                                        │
> │     def __init__(self, length):                                              │
> │         self.ptr = []                                                        │
> │         for _ in range(length):                                              │
> │             self.ptr.append(None)                                            │
> │                                                                              │
> │     def __getitem__(self, index):                                            │
> │         assert 0 <= index < len(self.ptr), "The get index needs to be in     │
> │ range."                                                                      │
> │         return self.ptr[index]                                               │
> │                                                                              │
> │     def __setitem__(self, index, value):                                     │
> │         assert 0 <= index < len(self.ptr), "The set index needs to be in     │
> │ range."                                                                      │
> │         self.ptr[index] = value                                              │
> │                                                                              │
> │ class static_array_list(static_array):                                       │
> │     def __init__(self, length):                                              │
> │         super().__init__(length)                                             │
> │         self.length = 0                                                      │
> │                                                                              │
> │     def __getitem__(self, index):                                            │
> │         assert 0 <= index < self.length, "The get index needs to be in       │
> │ range."                                                                      │
> │         return self.ptr[index]                                               │
> │                                                                              │
> │     def __setitem__(self, index, value):                                     │
> │         assert 0 <= index < self.length, "The set index needs to be in       │
> │ range."                                                                      │
> │         self.ptr[index] = value                                              │
> │                                                                              │
> │     def push(self,value):                                                    │
> │         assert (self.length < len(self.ptr)), "The length before pushing has │
> │ to be less than the maximum length of the array."                            │
> │         self.ptr[self.length] = value                                        │
> │         self.length += 1                                                     │
> │                                                                              │
> │     def pop(self):                                                           │
> │         assert (0 < self.length), "The length before popping has to be       │
> │ greater than 0."                                                             │
> │         self.length -= 1                                                     │
> │         return self.ptr[self.length]                                         │
> │                                                                              │
> │     def unsafe_set_length(self,i):                                           │
> │         assert 0 <= i <= len(self.ptr), "The new length has to be in range." │
> │         self.length = i                                                      │
> │                                                                              │
> │ class dynamic_array(static_array):                                           │
> │     pass                                                                     │
> │                                                                              │
> │ class dynamic_array_list(static_array_list):                                 │
> │     def length_(self): return self.length                                    │
> │                                                                              │
> │ import cupy as cp                                                            │
> │ from dataclasses import dataclass                                            │
> │ from typing import NamedTuple, Union, Callable, Tuple                        │
> │ i8 = i16 = i32 = i64 = u8 = u16 = u32 = u64 = int; f32 = f64 = float; char = │
> │ string = str                                                                 │
> │                                                                              │
> │ def main():                                                                  │
> │     return 0.3325000000000001                                                │
> │                                                                              │
> │ if __name__ == '__main__': result = main(); None if result is None else      │
> │ print(result)                                                                │
> │ ",                                                                           │
> │    [])                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """
> inl init_series start end inc =
>     inl total : f64 = conv ((end - start) / inc) + 1
>     listm.init total (conv >> (*) inc >> (+) start) : list f64
> 
> type integration = (f64 -> f64) -> f64 -> f64 -> f64
> 
> inl integral dt : integration =
>     fun f a b =>
>         init_series (a + dt / 2) (b - dt / 2) dt
>         |> listm.map (f >> (*) dt)
>         |> listm.fold (+) 0
> 
> inl main () =
>     integral 0.01 (fun x => x ** 2) 0 1
> """
> |> fun code -> Spi (code, None)
> |> buildCode Fsharp false 10000 None
> |> Async.runWithTimeout 10000
> |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> 
> List.map fst)
> |> _assertEqual (
>     Some (
>         Some "0.33332500000000004\n",
>         [[]]
>     )
> )
> // |> _assertEqual None
> // |> fun x -> printfn $"{x.ToDisplayString ()}"
> 
> ╭─[ 350.15ms - stdout ]────────────────────────────────────────────────────────╮
> │ 00:00:15 verbose #11 networking.test_port_open / { port = 13806; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:09   debug #102 Supervisor.buildFile / takeWhileInclusive /       │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b │
> │ 50ce3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi                │
> │ 00:00:09   debug #103 Supervisor.buildFile / AsyncSeq.scan /            │
> │ outputContent:                                                               │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b │
> │ 50ce3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi                │
> │ 00:00:09   debug #104 Supervisor.buildFile / takeWhileInclusive /       │
> │ outputContent:                                                               │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b │
> │ 50ce3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi                │
> │ 00:00:09 verbose #105 Supervisor.sendJson / port: 13805 / json:         │
> │ {"FileOpen":{"spiText":"\ninl init_series start end inc =\n    inl total :   │
> │ f64 = conv ((end -                                                           │
> │ start)...et/spiral_Eval/packages/2acc44d97e6b50ce3caf39a0b93135633484d22c3ef │
> │ 6e7797ce64875a41451f4/main.spi"}} / result:                                  │
> │ 00:00:09 verbose #106 Supervisor.sendJson / port: 13805 / json:         │
> │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
> │ lyglot/target/spiral_Eval/packages/2acc44d97e6b50ce3caf39a0b93135633484d22c3 │
> │ ef6e7797ce64875a41451f4/main.spi"}} / result:                                │
> │ 00:00:09   debug #107 Supervisor.buildFile / AsyncSeq.scan /            │
> │ outputContent:                                                               │
> │ 0.33332500000000004                                                          │
> │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
> │ error:  / path:                                                              │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b │
> │ 50ce3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi                │
> │ 00:00:09   debug #108 Supervisor.buildFile / takeWhileInclusive /       │
> │ outputContent:                                                               │
> │ 0.33332500000000004                                                          │
> │  / errors: [] / typeErrorCount: 0 / retry: 0 / path:                         │
> │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b │
> │ 50ce3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi                │
> │ 00:00:09 verbose #109 Supervisor.sendJson / port: 13805 / json:         │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc │
> │ 44d97e6b50ce3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4"]}} / result:   │
> │ 00:00:09   debug #110 FileSystem.watchWithFilter / Disposing watch      │
> │ stream / filter: FileName, LastWrite                                         │
> │ Some (Some "0.33332500000000004                                              │
> │ ", [])                                                                       │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## getFileTokenRange                                                         │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline getFileTokenRange port cancellationToken path = async {
>     let fullPath = path |> System.IO.Path.GetFullPath
>     let! code = fullPath |> SpiralFileSystem.read_all_text_async
>     let lines = code |> SpiralSm.split "\n"
> 
>     let struct (token, disposable) = SpiralThreading.new_disposable_token 
> cancellationToken
>     use _ = disposable
> 
>     let port = port |> Option.defaultWith getCompilerPort
>     let! serverPort, _errors, ct, disposable = awaitCompiler port (Some token)
>     use _ = disposable
> 
>     let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
> 
>     let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} |}
>     let! _fileOpenResult = fileOpenObj |> sendObj serverPort
> 
>     // do! Async.Sleep 60
> 
>     let fileTokenRangeObj =
>         {|
>             FileTokenRange =
>                 {|
>                     uri = fullPathUri
>                     range =
>                         [[|
>                             {| line = 0; character = 0 |}
>                             {| line = lines.Length - 1; character = 
> lines.[[lines.Length - 1]].Length |}
>                         |]]
>                 |}
>         |}
>     let! fileTokenRangeResult =
>         fileTokenRangeObj
>         |> sendObj serverPort
>         |> Async.withCancellationToken ct
> 
>     let fileDir = fullPath |> System.IO.Path.GetDirectoryName
>     if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then
>         let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> 
> SpiralFileSystem.new_file_uri
>         let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]] |} |}
>         let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort
>         ()
> 
>     return fileTokenRangeResult |> Option.map FSharp.Json.Json.deserialize<int 
> array>
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## getCodeTokenRange                                                         │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline getCodeTokenRange cancellationToken code = async {
>     let! mainPath, _ = Spi (code, None) |> persistCode None
> 
>     let codeDir = mainPath |> System.IO.Path.GetDirectoryName
>     let tokensPath = codeDir </> "tokens.json"
>     let! tokens = async {
>         if tokensPath |> System.IO.File.Exists |> not
>         then return None
>         else
>             let! text = tokensPath |> SpiralFileSystem.read_all_text_async
> 
>             return
>                 if text.Length > 2
>                 then text |> FSharp.Json.Json.deserialize<int array> |> Some
>                 else None
>     }
>     match tokens with
>     | Some tokens ->
>         return tokens |> Some
>     | None -> return! mainPath |> getFileTokenRange None cancellationToken
> }
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () = ()"""
> |> getCodeTokenRange None
> |> Async.runWithTimeout 10000
> |> Option.flatten
> |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 
> 8; 0; 0; 2; 1; 4; 0; 0;
> 2; 1; 8; 0; 0; 1; 1; 8; 0 |]])
> 
> ╭─[ 875.82ms - stdout ]────────────────────────────────────────────────────────╮
> │ 00:00:17 verbose #12 networking.test_port_open / { port = 13806; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:11 verbose #111 Supervisor.sendJson / port: 13805 / json:         │
> │ {"FileOpen":{"spiText":"inl main () =                                        │
> │ ()","uri":"file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/pac │
> │ kages/20e725d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e/main. │
> │ spi"}} / result:                                                             │
> │ 00:00:11 verbose #112 Supervisor.sendJson / port: 13805 / json:         │
> │ {"FileTokenRange":{"range":[                                                 │
> │ {"character":0,"line":0},{"character":16,"line":0}],"uri":"file:///home/...e │
> │ t/spiral_Eval/packages/20e725d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86 │
> │ f19feaf821e/main.spi"}} / result: Some([                                     │
> │   0,                                                                         │
> │   0,                                                                         │
> │   3,                                                                         │
> │   7,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   4,                                                                         │
> │   4,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   5,                                                                         │
> │   1,                                                                         │
> │   8,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   1,                                                                         │
> │   1,                                                                         │
> │   8,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   2,                                                                         │
> │   1,                                                                         │
> │   4,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   2,                                                                         │
> │   1,                                                                         │
> │   8,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   1,                                                                         │
> │   1,                                                                         │
> │   8,                                                                         │
> │   0                                                                          │
> │ ])                                                                           │
> │ 00:00:11 verbose #113 Supervisor.sendJson / port: 13805 / json:         │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/20e7 │
> │ 25d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e"]}} / result:   │
> │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 8; 0; 0; 2; 1;  │
> │ 4; 0; 0; 2; 1; 8; 0; 0; 1; 1; 8; 0|]                                         │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> """inl main () = 1i32"""
> |> getCodeTokenRange None
> |> Async.runWithTimeout 10000
> |> Option.flatten
> |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 
> 8; 0; 0; 2; 1; 4; 0; 0;
> 2; 1; 3; 0; 0; 1; 3; 12; 0 |]])
> 
> ╭─[ 941.57ms - stdout ]────────────────────────────────────────────────────────╮
> │ 00:00:18 verbose #13 networking.test_port_open / { port = 13806; ex =   │
> │ System.AggregateException: One or more errors occurred. (Connection refused) │
> │ }                                                                            │
> │ 00:00:12 verbose #114 Supervisor.sendJson / port: 13805 / json:         │
> │ {"FileOpen":{"spiText":"inl main () =                                        │
> │ 1i32","uri":"file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/p │
> │ ackages/5370829508ddefc7386d6b4d280722b47d97cb925585525bee733a187ff8f18b/mai │
> │ n.spi"}} / result:                                                           │
> │ 00:00:12 verbose #115 Supervisor.sendJson / port: 13805 / json:         │
> │ {"FileTokenRange":{"range":[                                                 │
> │ {"character":0,"line":0},{"character":18,"line":0}],"uri":"file:///home/...e │
> │ t/spiral_Eval/packages/5370829508ddefc7386d6b4d280722b47d97cb925585525bee733 │
> │ a187ff8f18b/main.spi"}} / result: Some([                                     │
> │   0,                                                                         │
> │   0,                                                                         │
> │   3,                                                                         │
> │   7,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   4,                                                                         │
> │   4,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   5,                                                                         │
> │   1,                                                                         │
> │   8,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   1,                                                                         │
> │   1,                                                                         │
> │   8,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   2,                                                                         │
> │   1,                                                                         │
> │   4,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   2,                                                                         │
> │   1,                                                                         │
> │   3,                                                                         │
> │   0,                                                                         │
> │   0,                                                                         │
> │   1,                                                                         │
> │   3,                                                                         │
> │   12,                                                                        │
> │   0                                                                          │
> │ ])                                                                           │
> │ 00:00:12 verbose #116 Supervisor.sendJson / port: 13805 / json:         │
> │ {"FileDelete":{"uris":[                                                      │
> │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/5370 │
> │ 829508ddefc7386d6b4d280722b47d97cb925585525bee733a187ff8f18b"]}} / result:   │
> │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 8; 0; 0; 2; 1;  │
> │ 4; 0; 0; 2; 1; 3; 0; 0; 1; 3; 12; 0|]                                        │
> │                                                                              │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## Arguments                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> [[<RequireQualifiedAccess>]]
> type Arguments =
>     | Build_File of string * string
>     | File_Token_Range of string * string
>     | Execute_Command of string
>     | [[<Argu.ArguAttributes.Unique>]] Timeout of int
>     | [[<Argu.ArguAttributes.Unique>]] Port of int
>     | [[<Argu.ArguAttributes.Unique>]] Parallel
>     | [[<Argu.ArguAttributes.Unique>]] Exit_On_Error
> 
>     interface Argu.IArgParserTemplate with
>         member s.Usage =
>             match s with
>             | Build_File _ -> nameof Build_File
>             | File_Token_Range _ -> nameof File_Token_Range
>             | Execute_Command _ -> nameof Execute_Command
>             | Timeout _ -> nameof Timeout
>             | Port _ -> nameof Port
>             | Parallel -> nameof Parallel
>             | Exit_On_Error-> nameof Exit_On_Error
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
> 
> ╭─[ 81.24ms - return value ]───────────────────────────────────────────────────╮
> │ "USAGE: dotnet-repl [--help] [--build-file <string> <string>]                │
> │                    [--file-token-range <string> <string>]                    │
> │                    [--execute-command <string>] [--timeout <int>] [--port    │
> │ <int>]                                                                       │
> │                    [--parallel] [--exit-on-error]                            │
> │                                                                              │
> │ OPTIONS:                                                                     │
> │                                                                              │
> │     --build-file <string> <string>                                           │
> │                           Build_File                                         │
> │     --file-token-range <string> <string>                                     │
> │                           File_Token_Range                                   │
> │     --execute-command <string>                                               │
> │                           Execute_Command                                    │
> │     --timeout <int>       Timeout                                            │
> │     --port <int>          Port                                               │
> │     --parallel            Parallel                                           │
> │     --exit-on-error       Exit_On_Error                                      │
> │     --help                display this list of options.                      │
> │ "                                                                            │
> │                                                                              │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## main                                                                      │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let main args =
>     let argsMap = args |> Runtime.parseArgsMap<Arguments>
> 
>     let buildFileActions =
>         argsMap
>         |> Map.tryFind (nameof Arguments.Build_File)
>         |> Option.defaultValue [[]]
>         |> List.choose (function
>             | Arguments.Build_File (inputPath, outputPath) -> Some (inputPath, 
> outputPath)
>             | _ -> None
>         )
> 
>     let fileTokenRangeActions =
>         argsMap
>         |> Map.tryFind (nameof Arguments.File_Token_Range)
>         |> Option.defaultValue [[]]
>         |> List.choose (function
>             | Arguments.File_Token_Range (inputPath, outputPath) -> Some 
> (inputPath, outputPath)
>             | _ -> None
>         )
> 
>     let executeCommandActions =
>         argsMap
>         |> Map.tryFind (nameof Arguments.Execute_Command)
>         |> Option.defaultValue [[]]
>         |> List.choose (function
>             | Arguments.Execute_Command command -> Some command
>             | _ -> None
>         )
> 
>     let timeout =
>         match argsMap |> Map.tryFind (nameof Arguments.Timeout) with
>         | Some [[ Arguments.Timeout timeout ]] -> timeout
>         | _ -> 60000 * 60
> 
>     let port =
>         match argsMap |> Map.tryFind (nameof Arguments.Port) with
>         | Some [[ Arguments.Port port ]] -> Some port
>         | _ -> None
> 
>     let isParallel = argsMap |> Map.containsKey (nameof Arguments.Parallel)
> 
>     let isExitOnError = argsMap |> Map.containsKey (nameof 
> Arguments.Exit_On_Error)
> 
>     async {
>         let port =
>             port
>             |> Option.defaultWith getCompilerPort
>         let struct (localToken, disposable) = 
> SpiralThreading.new_disposable_token None
>         let! serverPort, _errors, compilerToken, disposable = awaitCompiler port
> (Some localToken)
>         use _ = disposable
> 
>         let buildFileAsync =
>             buildFileActions
>             |> List.map (fun (inputPath, outputPath) -> async {
>                 let! _outputPath, (outputCode, errors) =
>                     let backend =
>                         if outputPath |> SpiralSm.ends_with ".fsx"
>                         then Fsharp
>                         elif outputPath |> SpiralSm.ends_with ".py"
>                         then Cuda
>                         else failwith $"Supervisor.main / invalid backend / 
> outputPath: {outputPath}"
>                     let isReal = inputPath |> SpiralSm.ends_with ".spir"
>                     inputPath |> buildFile backend timeout (Some serverPort) 
> None
> 
>                 errors
>                 |> List.map snd
>                 |> List.iter (fun error ->
>                     trace Critical (fun () -> $"main / error: {error |> 
> serializeObj}") _locals
>                 )
> 
>                 match outputCode with
>                 | Some outputCode ->
>                     do! outputCode |> SpiralFileSystem.write_all_text_exists 
> outputPath
>                     return 0
>                 | None ->
>                     if isExitOnError
>                     then SpiralRuntime.current_process_kill ()
> 
>                     return 1
>             })
> 
>         let fileTokenRangeAsync =
>             fileTokenRangeActions
>             |> List.map (fun (inputPath, outputPath) -> async {
>                 let! tokenRange = inputPath |> getFileTokenRange (Some 
> serverPort) None
>                 match tokenRange with
>                 | Some tokenRange ->
>                     do! tokenRange |> FSharp.Json.Json.serialize |> 
> SpiralFileSystem.write_all_text_exists outputPath
>                     return 0
>                 | None ->
>                     if isExitOnError
>                     then SpiralRuntime.current_process_kill ()
> 
>                     return 1
>             })
> 
>         let executeCommandAsync =
>             executeCommandActions
>             |> List.map (fun command -> async {
>                 let! exitCode, result =
>                     SpiralRuntime.execution_options (fun x ->
>                         { x with
>                             l0 = command
>                             l1 = Some compilerToken
>                         }
>                     )
>                     |> SpiralRuntime.execute_with_options_async
> 
>                 trace Debug (fun () -> $"main / executeCommand / exitCode: 
> {exitCode} / command: {command}") _locals
> 
>                 if isExitOnError && exitCode <> 0
>                 then SpiralRuntime.current_process_kill ()
> 
>                 return exitCode
>             })
> 
>         return!
>             [[| buildFileAsync; fileTokenRangeAsync; executeCommandAsync |]]
>             |> Seq.collect id
>             |> fun x ->
>                 if isParallel
>                 then Async.Parallel (x, float System.Environment.ProcessorCount 
> * 0.51 |> ceil |> int)
>                 else Async.Sequential x
>             |> Async.map Array.sum
>     }
>     |> Async.runWithTimeout timeout
>     |> Option.defaultValue 1
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> //// test
> 
> let args =
>     System.Environment.GetEnvironmentVariable "ARGS"
>     |> SpiralRuntime.split_args
>     |> Result.toArray
>     |> Array.collect id
> 
> match args with
> | [[||]] -> 0
> | args -> if main args = 0 then 0 else failwith "main failed"
> 
> ╭─[ 54.63ms - return value ]───────────────────────────────────────────────────╮
> │ <div class="dni-plaintext"><pre>0                                            │
> │ </pre></div><style>                                                          │
> │ .dni-code-hint {                                                             │
> │     font-style: italic;                                                      │
> │     overflow: hidden;                                                        │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview {                                                              │
> │     white-space: nowrap;                                                     │
> │ }                                                                            │
> │ .dni-treeview td {                                                           │
> │     vertical-align: top;                                                     │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ details.dni-treeview {                                                       │
> │     padding-left: 1em;                                                       │
> │ }                                                                            │
> │ table td {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ table tr {                                                                   │
> │     vertical-align: top;                                                     │
> │     margin: 0em 0px;                                                         │
> │ }                                                                            │
> │ table tr td pre                                                              │
> │ {                                                                            │
> │     vertical-align: top !important;                                          │
> │     margin: 0em 0px !important;                                              │
> │ }                                                                            │
> │ table th {                                                                   │
> │     text-align: start;                                                       │
> │ }                                                                            │
> │ </style>                                                                     │
> ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:03 verbose #6 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 173257 }
00:01:03   debug #7 runtime.execute_with_options / { file_name = jupyter; arguments = [
    "nbconvert",
    "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb",
    "--to",
    "html",
    "--HTMLExporter.theme=dark",
]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:04 verbose #8 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb to html
00:01:04 verbose #9 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:04 verbose #10 !   validate(nb)
00:01:04 verbose #11 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:04 verbose #12 !   return _pygments_highlight(
00:01:05 verbose #13 ! [NbConvertApp] Writing 499955 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html
00:01:05 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 906 }
00:01:05   debug #15 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 906 }
00:01:05   debug #16 runtime.execute_with_options / { file_name = pwsh; arguments = [
    "-c",
    "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:05 verbose #17 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:05   debug #18 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:05   debug #19 spiral_builder.run / dib / { exit_code = 0; result_length = 174222 }
00:00:00   debug #1 writeDibCode / output: Fs / path: Supervisor.dib
00:00:00   debug #2 parseDibCode / output: Fs / file: Supervisor.dib
00:00:00   debug #1 persistCodeProject / packages: [Argu; FSharp.Control.AsyncSeq; FSharp.Json; ... ] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: Supervisor / hash:  / code.Length: 27506
00:00:00   debug #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj
00:00:00   debug #1 runtime.execute_with_options_async / { options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/spiral/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor" } }
00:00:00 verbose #2 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:00 verbose #3 >   Determining projects to restore...
00:00:01 verbose #4 >   Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
00:00:01 verbose #5 >   The last full restore is still up to date. Nothing left to do.
00:00:01 verbose #6 >   Total time taken: 0 milliseconds
00:00:01 verbose #7 >   Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
00:00:01 verbose #8 >   Restoring /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj
00:00:01 verbose #9 >   Starting restore process.
00:00:01 verbose #10 >   Total time taken: 0 milliseconds
00:00:02 verbose #11 >   Restored /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj (in 341 ms).
00:00:02 verbose #12 > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj]
00:00:15 verbose #13 >   Supervisor -> /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/bin/Release/net9.0/linux-x64/Supervisor.dll
00:00:15 verbose #14 >   Supervisor -> /home/runner/work/polyglot/polyglot/apps/spiral/dist
00:00:16   debug #15 runtime.execute_with_options_async / { exit_code = 0; output_length = 1112 }
00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Eval.dib", "--retries", "3"])) }
00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
    "repl",
    "--exit-after-run",
    "--run",
    "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib",
    "--output-path",
    "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb",
]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ # Eval (Polyglot)                                                            │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #r 
> @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
> dard2.1/FSharp.Control.AsyncSeq.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
> 0/System.Reactive.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/
> netstandard2.0/System.Reactive.Linq.dll"
> #r 
> @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com
> mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli
> ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0
> /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll"
> #r 
> @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/
> 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll"
> #r 
> @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha
> rp.Json.dll"
> #r 
> @"../../../../../../../.nuget/packages/system.management/7.0.0/lib/netstandard2.
> 0/System.Management.dll"
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> #if !INTERACTIVE
> open Lib
> #endif
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open Common
> open SpiralFileSystem.Operators
> open Microsoft.AspNetCore.SignalR.Client
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> open System
> open System.Collections.Generic
> open System.IO
> open System.Text
> open System.Threading
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## mapErrors                                                                 │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline mapErrors (severity, errors, lastTopLevelIndex) allCode =
>     let allCodeLineLength =
>         allCode |> SpiralSm.split "\n" |> Array.length
> 
>     errors
>     |> List.map (fun (_, error) ->
>         match error with
>         | Supervisor.FatalError message ->
>             (
>                 severity, message, 0, ("", (0, 0), (0, 0))
>             )
>             |> List.singleton
>         | Supervisor.TracedError data ->
>             data.trace
>             |> List.truncate 5
>             |> List.append [[ data.message ]]
>             |> List.map (fun message ->
>                 (
>                     severity, message, 0, ("", (0, 0), (0, 0))
>                 )
>             )
>         | Supervisor.PackageErrors data
>         | Supervisor.TokenizerErrors data
>         | Supervisor.ParserErrors data
>         | Supervisor.TypeErrors data ->
>             data.errors
>             |> List.filter (fun ((rangeStart, _), _) ->
>                 trace Debug (fun () -> $"Eval.mapErrors / rangeStart.line: 
> {rangeStart.line} / lastTopLevelIndex: {lastTopLevelIndex} / allCodeLineLength: 
> {allCodeLineLength} / filtered: {rangeStart.line > allCodeLineLength}") _locals
>                 rangeStart.line > allCodeLineLength
>             )
>             |> List.map (fun ((rangeStart, rangeEnd), message) ->
>                 (
>                     severity,
>                     message,
>                     0,
>                     (
>                         (data.uri |> System.IO.Path.GetFileName),
>                         (
>                             (match lastTopLevelIndex with
>                             | Some i when rangeStart.line >= i + 
> allCodeLineLength + 3 ->
>                                 rangeStart.line - allCodeLineLength - 2
>                             | _ -> rangeStart.line - allCodeLineLength),
>                             (match lastTopLevelIndex with
>                             | Some i when rangeStart.line >= i + 
> allCodeLineLength + 3 ->
>                                 rangeStart.character - 4
>                             | _ -> rangeStart.character)
>                         ),
>                         (
>                             (match lastTopLevelIndex with
>                             | Some i when rangeStart.line >= i + 
> allCodeLineLength + 3 ->
>                                 rangeEnd.line - allCodeLineLength - 2
>                             | _ -> rangeEnd.line - allCodeLineLength),
>                             (match lastTopLevelIndex with
>                             | Some i when rangeStart.line >= i + 
> allCodeLineLength + 3 ->
>                                 rangeEnd.character - 4
>                             | _ -> rangeEnd.character)
>                         )
>                     )
>                 )
>             )
>     )
>     |> List.collect id
>     |> List.toArray
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### workspaceRoot                                                            │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let workspaceRoot = SpiralFileSystem.get_workspace_root ()
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### targetDir                                                                │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let targetDir = workspaceRoot </> "target/spiral_Eval"
> [[ targetDir ]]
> |> List.iter (fun dir -> if Directory.Exists dir |> not then 
> Directory.CreateDirectory dir |> ignore)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ### assemblyName                                                             │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let assemblyName = Reflection.Assembly.GetEntryAssembly().GetName().Name
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## allCode                                                                   │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let mutable allCode = ""
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## allCodeReal                                                               │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let mutable allCodeReal = ""
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## traceToggle                                                               │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let mutable traceToggle = false
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## getParentProcessId                                                        │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let getParentProcessId () =
>     if SpiralPlatform.is_windows () |> not
>     then 0u
>     else
>         let pid = System.Diagnostics.Process.GetCurrentProcess().Id
>         let query = $"SELECT ParentProcessId FROM Win32_Process WHERE ProcessId 
> = {pid}"
>         use searcher = new System.Management.ManagementObjectSearcher (query)
>         use results = searcher.Get ()
>         let data = results |> Seq.cast<System.Management.ManagementObject>
>         if data |> Seq.isEmpty
>         then 0u
>         else data |> Seq.head |> (fun mo -> mo.[["ParentProcessId"]] :?> uint32)
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## startTokenRangeWatcher                                                    │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline startTokenRangeWatcher () =
>     if [[ "dotnet-repl" ]] |> List.contains assemblyName |> not then
>         let tokensDir = targetDir </> "tokens"
> 
>         [[ tokensDir ]]
>         |> List.iter (fun dir -> if Directory.Exists dir |> not then 
> Directory.CreateDirectory dir |> ignore)
> 
>         let stream, disposable = FileSystem.watchDirectory (fun _ -> false) 
> tokensDir
> 
>         try
>             let existingFilesChild =
>                 tokensDir
>                 |> System.IO.Directory.GetDirectories
>                 |> Array.map (fun codeDir -> async {
>                     try
>                         let tokensPath = codeDir </> "tokens.json"
>                         if tokensPath |> File.Exists |> not then
>                             let spiralCodePath = codeDir </> "main.spi"
>                             let spiralRealCodePath = codeDir </> 
> "real_main.spir"
>                             let spiralExists = spiralCodePath |> 
> System.IO.File.Exists
>                             let spiralRealExists = spiralRealCodePath |> 
> System.IO.File.Exists
>                             if spiralExists |> not && spiralRealExists |> not
>                             then do! codeDir |> 
> SpiralFileSystem.delete_directory_async |> Async.Ignore
>                             else
>                                 let! tokens =
>                                     if spiralExists then spiralCodePath else 
> spiralRealCodePath
>                                     |> Supervisor.getFileTokenRange None None
>                                 match tokens with
>                                 | Some tokens ->
>                                     do!
>                                         tokens
>                                         |> FSharp.Json.Json.serialize
>                                         |> SpiralFileSystem.write_all_text_async
> tokensPath
>                                 | None ->
>                                     trace Verbose (fun () -> 
> $"Eval.startTokenRangeWatcher / GetDirectories / tokens: None") _locals
>                     with ex ->
>                         trace Critical (fun () -> $"Eval.startTokenRangeWatcher 
> / GetDirectories / ex: {ex |> SpiralSm.format_exception}") _locals
>                 })
>                 |> Async.Parallel
>                 |> Async.Ignore
> 
>             let streamAsyncChild =
>                 stream
>                 |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event)
> ->
>                     match event with
>                     | FileSystem.FileSystemChange.Changed (codePath, _)
>                         when [[ "main.spi"; "real_main.spir" ]]
>                             |> List.contains (System.IO.Path.GetFileName 
> codePath)
>                         ->
>                         async {
>                             let hashDir = codePath |> 
> System.IO.Directory.GetParent
>                             let hashHex = hashDir.Name
>                             let codePath = tokensDir </> codePath
>                             let tokensPath = tokensDir </> hashHex </> 
> "tokens.json"
>                             // do! Async.Sleep 30
>                             let rec loop retry = async {
>                                 let! tokens = codePath |> 
> Supervisor.getFileTokenRange None None
>                                 if retry = 3 || tokens <> Some [[||]]
>                                 then return tokens, retry
>                                 else
>                                     trace Debug
>                                         (fun () -> $"Eval.startTokenRangeWatcher
> / iterAsyncParallel")
>                                         (fun () -> $"retry: {retry} / tokens: 
> {tokens}")
>                                     do! Async.Sleep 30
>                                     return! loop (retry + 1)
>                             }
>                             let! tokens, retries = loop 1
>                             match tokens with
>                             | Some tokens ->
>                                 do!
>                                     tokens
>                                     |> FSharp.Json.Json.serialize
>                                     |> SpiralFileSystem.write_all_text_exists 
> tokensPath
>                             | None ->
>                                 trace Debug
>                                     (fun () -> $"Eval.startTokenRangeWatcher / 
> iterAsyncParallel")
>                                     (fun () -> $"retries: {retries} / tokens: 
> {tokens}")
>                         }
>                         |> Async.retryAsync 3
>                         |> Async.map (Result.toOption >> Option.defaultValue ())
>                     | _ -> () |> Async.init
>                 )
> 
>             let parentAsyncChild = async {
>                 let parentProcessId = getParentProcessId ()
>                 trace Verbose
>                     (fun () -> "Eval.parentAsyncChild")
>                     (fun () -> $"parentProcessId: {parentProcessId} / {_locals 
> ()}")
> 
>                 if parentProcessId > 0u then
>                     let parentProcess = parentProcessId |> int |> 
> System.Diagnostics.Process.GetProcessById
>                     do! parentProcess.WaitForExitAsync () |> Async.AwaitTask
>                     trace Debug
>                         (fun () -> "Eval.parentAsyncChild / Parent process has 
> exited. Performing cleanup...")
>                         (fun () -> $"{_locals ()}")
>                     System.Threading.Thread.Sleep 1000
>                     System.Environment.Exit 1
>             }
> 
>             async {
>                 do! Async.Sleep 3000
>                 existingFilesChild |> Async.StartImmediate
>                 streamAsyncChild |> Async.Start
>                 parentAsyncChild |> Async.Start
>             }
>             |> Async.Start
>         with ex ->
>             trace Critical (fun () -> $"Eval.startTokenRangeWatcher / ex: {ex |>
> SpiralSm.format_exception}") _locals
> 
>         disposable
>     else new_disposable (fun () -> ())
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## startCommandsWatcher                                                      │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let startCommandsWatcher (uriServer : string) =
>     let commandsDir = targetDir </> "eval_commands"
>     let commandHistoryDir = targetDir </> "eval_command_history"
>     [[ commandsDir; commandHistoryDir ]]
>     |> List.iter (fun dir -> if Directory.Exists dir |> not then 
> Directory.CreateDirectory dir |> ignore)
> 
>     Directory.EnumerateFiles commandsDir |> Seq.iter File.Delete
> 
>     let stream, disposable =
>         commandsDir
>         |> FileSystem.watchDirectory (function
>             | FileSystem.FileSystemChange.Created _ -> true
>             | _ -> false
>         )
> 
>     let connection = HubConnectionBuilder().WithUrl(uriServer).Build()
>     connection.StartAsync() |> Async.AwaitTask |> Async.Start
>     // let _ = connection.On<string>("ServerToClientMsg", fun x ->
>     //     printfn $"ServerToClientMsg: '{x}'"
>     // )
> 
>     stream
>     |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event) -> async {
>         let _locals () = $"ticks: {ticks} / event: {event} / {_locals ()}"
>         trace Verbose (fun () -> "Eval.startCommandsWatcher / 
> iterAsyncParallel") _locals
> 
>         match event with
>         | FileSystem.FileSystemChange.Created (path, Some json) ->
>             try
>                 let fullPath = commandsDir </> path
>                 let! result = 
> connection.InvokeAsync<string>("ClientToServerMsg", json) |> Async.AwaitTask
>                 let commandHistoryPath = commandHistoryDir </> path
>                 do! fullPath |> SpiralFileSystem.move_file_async 
> commandHistoryPath |> Async.Ignore
>                 if result |> SpiralSm.trim |> String.length > 0 then
>                     let resultPath = commandHistoryDir </> 
> $"{Path.GetFileNameWithoutExtension path}_result.json"
>                     do! result |> SpiralFileSystem.write_all_text_async 
> resultPath
>             with ex ->
>                 let _locals () = $"ex: {ex |> SpiralSm.format_exception} / 
> {_locals ()}"
>                 trace Critical (fun () -> "Eval.startCommandsWatcher / 
> iterAsyncParallel") _locals
>         | _ -> ()
>     })
>     |> Async.StartChild
>     |> Async.Ignore
>     |> Async.Start
> 
>     new_disposable (fun () ->
>         disposable.Dispose ()
>     )
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## prepareSpiral                                                             │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let prepareSpiral rawCellCode lines =
>     let lastBlock =
>         lines
>         |> Array.tryFindBack (fun line ->
>             line |> String.length > 0
>             && line.[[0]] <> ' '
>         )
> 
>     let hasMain =
>         lastBlock
>         |> Option.exists (fun line ->
>             line |> SpiralSm.starts_with "inl main "
>             || line |> SpiralSm.starts_with "let main "
>         )
> 
>     if hasMain
>     then rawCellCode, None
>     else
>         let lastTopLevelIndex, _ =
>             (lines |> Array.indexed, (None, false))
>             ||> Array.foldBack (fun (i, line) (lastTopLevelIndex, finished) ->
>                 // trace Verbose (fun () -> $"Eval.prepareSpiral / i: {i} / 
> line: '{line}' / lastTopLevelIndex: {lastTopLevelIndex} / finished: {finished}")
> _locals
>                 match line with
>                 | _ when finished -> lastTopLevelIndex, true
>                 | "" -> lastTopLevelIndex, false
>                 | line when
>                     line |> SpiralSm.starts_with " "
>                     || line |> SpiralSm.starts_with "// " -> lastTopLevelIndex, 
> false
>                 | line when
>                     line |> SpiralSm.starts_with "open "
>                     || line |> SpiralSm.starts_with "prototype "
>                     || line |> SpiralSm.starts_with "instance "
>                     || line |> SpiralSm.starts_with "type "
>                     || line |> SpiralSm.starts_with "union "
>                     || line |> SpiralSm.starts_with "nominal " -> 
> lastTopLevelIndex, true
>                 | line when
>                     line |> SpiralSm.starts_with "inl "
>                     || line |> SpiralSm.starts_with "and "
>                     || line |> SpiralSm.starts_with "let " ->
>                     let m =
>                         System.Text.RegularExpressions.Regex.Match (
>                             line,
>                             @"^(?:and +)?(inl|let) +([[~\(\w]][[\w\d']]*(?:| 
> *[[~\w]][[\w\d']]*\)|, *[[~\w]][[\w\d']]*)) +[[:=]](?! +function)"
>                         )
>                     trace Verbose (fun () -> $"Eval.prepareSpi / m: '{m}' / 
> m.Groups.Count: {m.Groups.Count}") _locals
>                     if m.Groups.Count = 3
>                     then Some i, false
>                     else lastTopLevelIndex, true
>                 | _ -> Some i, false
>             )
>         let code =
>             match lastTopLevelIndex with
>             | Some lastTopLevelIndex ->
>                 lines
>                 |> Array.mapi (fun i line ->
>                     match i with
>                     | i when i < lastTopLevelIndex -> line
>                     | i when i = lastTopLevelIndex -> $"\nlet main () =\n    
> {line}"
>                     | _ when line |> SpiralSm.trim = "" -> ""
>                     | _ -> $"    {line}"
>                 )
>                 |> SpiralSm.concat "\n"
>             | None -> $"{rawCellCode}\n\ninl main () = ()\n"
>         code, lastTopLevelIndex
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## processSpiralOutput                                                       │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let processSpiralOutput
>     (props : {|
>         printCode: bool
>         traceLevel: TraceLevel
>         builderCommands: string array
>         lastTopLevelIndex: int option
>         backend: Supervisor.Backend
>         cancellationToken: _
>         spiralErrors: _
>         code: string
>         outputPath: string
>         isReal: bool
>     |})
>     = async {
>     let inline _trace (fn : unit -> string) =
>         if props.traceLevel = Verbose
>         then trace Info (fun () -> $"Eval.processSpiralOutput / props: {props |>
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / {fn ()}") _locals
>         else fn () |> System.Console.WriteLine
> 
>     if props.printCode then
>         let ext = props.outputPath |> System.IO.Path.GetExtension
>         _trace (fun () -> if props.builderCommands.Length > 0 then 
> $"{ext}:\n{props.code}\n" else props.code)
> 
>     let workspaceRootExternal =
>         let currentDir =
>             System.IO.Directory.GetCurrentDirectory ()
>             |> SpiralSm.to_lower
>         let workspaceRoot = workspaceRoot |> SpiralSm.to_lower
>         if currentDir |> SpiralSm.starts_with workspaceRoot
>         then None
>         else Some workspaceRoot
> 
>     let! spiralBuilderResults =
>         match props.builderCommands, props.lastTopLevelIndex with
>         | [[||]], _ | _, None -> [[||]] |> Async.init
>         | builderCommands, _ ->
>             builderCommands
>             |> Array.map (fun builderCommand ->
>                 let path =
>                     workspaceRoot </> 
> $@"workspace/target/release/spiral_builder{SpiralPlatform.get_executable_suffix 
> ()}"
>                     |> System.IO.Path.GetFullPath
>                 let commands =
>                     if props.backend = Supervisor.Fsharp
>                         && (
>                             builderCommand |> SpiralSm.starts_with "rust"
>                             || builderCommand |> SpiralSm.starts_with 
> "typescript"
>                             || builderCommand |> SpiralSm.starts_with "python"
>                         )
>                     then [[| $"{path} fable --fs-path \"{props.outputPath}\" 
> --command \"{builderCommand}\"" |]]
>                     elif props.backend = Supervisor.Cuda
>                         && builderCommand |> SpiralSm.starts_with "cuda"
>                     then [[| $"{path} {builderCommand} --py-path 
> \"{props.outputPath}\"" |]]
>                     else [[||]]
>                 builderCommand, commands
>             )
>             |> Array.filter (fun (_, commands) -> commands.Length > 0)
>             |> Array.map (fun (builderCommand, commands) ->
>                 commands
>                 |> Array.map (fun command -> async {
>                     let! exitCode, result =
>                         SpiralRuntime.execution_options (fun x ->
>                             { x with
>                                 l0 = command
>                                 l1 = props.cancellationToken
>                                 l2 = [[|
>                                     "AUTOMATION", assemblyName = "dotnet-repl" 
> |> string
>                                     "TRACE_LEVEL", $"%A{if props.printCode then 
> props.traceLevel else Info}"
>                                 |]]
>                                 l6 = workspaceRootExternal
>                             }
>                         )
>                         |> SpiralRuntime.execute_with_options_async
>                     trace Debug
>                         (fun () -> $"Eval.processSpiralOutput / spiral_builder")
>                         (fun () -> $"exitCode: {exitCode} / builderCommand: 
> {builderCommand} / result: {result |> SpiralSm.ellipsis_end 400} / {_locals 
> ()}")
>                     return
>                         if exitCode = 0
>                         then {| code = result; eval = false; builderCommand = 
> builderCommand |} |> Ok
>                         else result |> Error
>                 })
>             )
>             |> Array.collect id
>             |> Async.Parallel
> 
>     let hasEval =
>         props.backend = Supervisor.Fsharp
>         && props.builderCommands |> Array.exists (fun x -> x |> 
> SpiralSm.starts_with "fsharp")
> 
>     let outputResult =
>         if props.builderCommands.Length > 0 && not hasEval
>         then None
>         else
>             let code =
>                 if props.builderCommands.Length > 1
>                 then
>                     let header = "System.Console.WriteLine \".fsx output:\"\n"
>                     $"{header}{props.code}"
>                 else props.code
>             Some (Ok [[ {| code = code; eval = true; builderCommand = "" |} ]])
> 
>     match outputResult, spiralBuilderResults with
>     | Some outputResult, [[||]] ->
>         return outputResult, [[||]]
>     | None, [[||]] ->
>         return Ok [[ {| code = "()"; eval = true; builderCommand = "" |} ]], 
> [[||]]
>     | _, spiralBuilderResults ->
>         try
>             let spiralResults =
>                 match outputResult with
>                 | Some (Ok code) ->
>                     spiralBuilderResults
>                     |> Array.append (code |> List.map Ok |> List.toArray)
>                 | _ -> spiralBuilderResults
>             let codes =
>                 spiralResults
>                 |> Array.map (fun spiralBuilderResult' ->
>                     let commandResult, errors =
>                         match spiralBuilderResult' with
>                         | Ok result when result.eval = false ->
>                             let result' =
>                                 result.code
>                                 |> 
> FSharp.Json.Json.deserialize<Map<string,string>>
>                             let result =
>                                 match result' |> Map.tryFind "command_result" 
> with
>                                 | Some result'' ->
>                                     result''
>                                     |> 
> FSharp.Json.Json.deserialize<Map<string,string>>
>                                     |> Map.add "builderCommand" 
> result.builderCommand
>                                 | None -> Map.empty
>                             result, [[||]]
>                         | Ok result when result.eval = true ->
>                             let result =
>                                 [[
>                                     "extension", "fsx"
>                                     "code", result.code
>                                     "output", ""
>                                 ]]
>                                 |> Map.ofList
>                             result, [[||]]
>                         | Error error ->
>                             Map.empty,
>                             [[|
>                                 (
>                                     TraceLevel.Critical, 
> $"Eval.processSpiralOutput / evalResult error / errors[[0]] / outputPath: 
> {props.outputPath} / builderCommands: %A{props.builderCommands} / 
> spiralBuilderResult': %A{spiralBuilderResult'} / error: %A{error}", 0, ("", (0, 
> 0), (0, 0))
>                                 )
>                             |]]
>                         | _ ->
>                             Map.empty, [[||]]
> 
>                     if errors |> Array.isEmpty |> not
>                     then Error (Exception $"Eval.processSpiralOutput / 
> evalResult errors / Exception / commandResult: %A{commandResult}"), errors
>                     else
>                         let extension = commandResult.[["extension"]]
>                         let code = commandResult.[["code"]]
>                         let output = commandResult.[["output"]]
>                         let builderCommand =
>                             commandResult
>                             |> Map.tryFind "builderCommand"
>                             |> Option.defaultValue ""
> 
>                         let eval = output = "" && extension = "fsx"
> 
>                         if props.printCode && not eval
>                         then _trace (fun () -> $""".{extension}:{'\n'}{code}""")
> 
>                         trace Debug
>                             (fun () -> $"Eval.processSpiralOutput / result")
>                             (fun () -> $"builderCommand: {builderCommand} / 
> extension: {extension} / commandResult: {commandResult |> 
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}/ {_locals ()}")
> 
>                         let code =
>                             if props.printCode
>                                 || spiralResults.Length > 1
>                                 || props.builderCommands.Length > 1
>                             then
>                                 if eval then
>                                     code
>                                 else
>                                     let header =
>                                         let info =
>                                             match props.backend, builderCommand 
> with
>                                             | Supervisor.Fsharp, builderCommand
>                                                 when builderCommand |> 
> SpiralSm.contains " " -> $" ({builderCommand})"
>                                             | Supervisor.Fsharp, _ -> ""
>                                             | _ -> $" ({props.backend})"
>                                         if info = ""
>                                         then $".{extension} output:\n"
>                                         else $".{extension} output{info}:\n"
>                                     $"""{if output |> SpiralSm.contains "\n" 
> then "\n" else ""}{header}{output}"""
>                             elif eval
>                             then code
>                             else output
>                         Ok {| code = code; eval = eval; builderCommand = 
> builderCommand |}, [[||]]
>                 )
>             trace Debug
>                 (fun () -> $"Eval.processSpiralOutput / codes")
>                 (fun () ->
>                     let props = {| props with cancellationToken = None |}
>                     $"codes: {codes |> FSharp.Json.Json.serialize |> 
> SpiralSm.ellipsis_end 400} / spiralResults: {spiralResults |> 
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / spiralBuilderResults:
> {spiralBuilderResults |> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 
> 400} / props: {props |> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}
> / {_locals ()}")
>             return
>                 (((Ok [[]]), [[||]]), codes)
>                 ||> Array.fold (fun (acc_code, acc_errors) (code, errors) ->
>                     match code, acc_code with
>                     | Ok code, Ok acc_code ->
>                         let errors =
>                             acc_errors
>                             |> Array.append errors
>                             |> Array.append props.spiralErrors
>                         let errors =
>                             if errors |> Array.isEmpty
>                             then errors
>                             else
>                                 let code = $"%A{code}"
>                                 errors
>                                 |> Array.append [[|
>                                     TraceLevel.Critical, 
> $"Eval.processSpiralOutput / errors / errors[[-1]] / outputPath: 
> {props.outputPath} / builderCommands: %A{props.builderCommands} / code: {code |>
> SpiralSm.ellipsis_end 400}", 0, ("", (0, 0), (0, 0))
>                                 |]]
>                         Ok (code :: acc_code), errors
>                     | Error ex, _
>                     | _, Error ex ->
>                         Error (Exception $"Eval.processSpiralOutput / -1 / 
> Exception / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> 
> SpiralSm.format_exception}"),
>                         acc_errors |> Array.append errors
>                 )
>         with ex ->
>             trace Critical (fun () -> $"Eval.processSpiralOutput / try 2 ex / 
> spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> 
> SpiralSm.format_exception}") _locals
>             return
>                 Error (Exception $"Eval.processSpiralOutput / try 2 ex / 
> Exception / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> 
> SpiralSm.format_exception}"),
>                 [[|
>                     (
>                         TraceLevel.Critical, $"Eval.processSpiralOutput / try 2 
> ex / errors[[0]] / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> 
> SpiralSm.format_exception}", 0, ("", (0, 0), (0, 0))
>                     )
>                 |]]
> }
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## tryGetPropertyValue                                                       │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let tryGetPropertyValue (propertyName: string) (obj: obj) =
>     let objType = obj.GetType ()
>     let propertyInfo = propertyName |> objType.GetProperty
>     if propertyInfo <> null
>     then propertyInfo.GetValue (obj, null) |> Some
>     else None
> 
> ── markdown ────────────────────────────────────────────────────────────────────
> ╭──────────────────────────────────────────────────────────────────────────────╮
> │ ## eval                                                                      │
> ╰──────────────────────────────────────────────────────────────────────────────╯
> 
> ── fsharp ──────────────────────────────────────────────────────────────────────
> let inline eval
>     (fsi_eval:
>         string
>         -> System.Threading.CancellationToken
>         -> Choice<'a, Exception> * (TraceLevel * string * int * (string * (int *
> int) * (int * int))) array)
>     (cancellationToken: Option<System.Threading.CancellationToken>)
>     (code: string)
>     =
>     trace Verbose
>         (fun () -> $"Eval.eval")
>         (fun () -> $"code: {code |> SpiralSm.ellipsis_end 400} / {_locals ()}")
> 
>     let rawCellCode =
>         code |> SpiralSm.replace "\r\n" "\n"
> 
>     let lines = rawCellCode |> SpiralSm.split "\n"
> 
>     if lines |> Array.exists (fun line -> line |> SpiralSm.starts_with "#r " && 
> line |> SpiralSm.ends_with "\"") then
>         let cancellationToken = defaultArg cancellationToken 
> System.Threading.CancellationToken.None
>         let ch, errors = fsi_eval code cancellationToken
>         trace Verbose (fun () -> $"Eval.eval / fsi_eval 1 / ch: %A{ch} / errors:
> {errors}") _locals
>         match ch with
>         | Choice1Of2 v -> Ok(v), errors
>         | Choice2Of2 ex -> Error(ex), errors
>     else
>         let builderCommands =
>             lines
>             |> Array.choose (fun line ->
>                 if line |> SpiralSm.starts_with "///! "
>                 then line |> SpiralSm.split "///! " |> Array.tryItem 1
>                 else None
>             )
> 
>         let timeout =
>             lines
>             |> Array.tryPick (fun line ->
>                 if line |> SpiralSm.starts_with "//// timeout="
>                 then line |> SpiralSm.split "=" |> Array.tryItem 1 |> Option.map
> int
>                 else None
>             )
>             |> Option.defaultValue (60000 * 60)
> 
>         let boolArg def command =
>             lines
>             |> Array.tryPick (fun line ->
>                 let text = $"//// {command}"
>                 match line.[[0..text.Length-1]], line.[[text.Length..]] with
>                 | head, "" when head = text ->
>                     Some true
>                 | head, _ when head = text ->
>                     line |> SpiralSm.split "=" |> Array.tryItem 1 |> Option.map 
> ((<>) "false")
>                 | _ -> None
>             )
>             |> Option.defaultValue def
> 
>         let printCode = "print_code" |> boolArg false
>         let isTraceToggle = "trace_toggle" |> boolArg false
>         let isTrace = "trace" |> boolArg false
>         let isCache = "cache" |> boolArg false
>         let isReal = "real" |> boolArg false
> 
>         if isTraceToggle
>         then traceToggle <- not traceToggle
> 
>         let oldLevel = get_trace_level ()
>         let traceLevel =
>             if isTrace || traceToggle
>             then Verbose
>             else Info
>         traceLevel
>         |> to_trace_level
>         |> set_trace_level
>         use _ = (new_disposable (fun () ->
>             oldLevel |> set_trace_level
>         ))
> 
>         async {
>             try
>                 let cellCode, lastTopLevelIndex = prepareSpiral rawCellCode 
> lines
>                 let newAllCode =
>                     if isReal
>                     then $"{allCodeReal}\n\n{cellCode}"
>                     else $"{allCode}\n\n{cellCode}"
> 
>                 let buildBackends =
>                     if builderCommands.Length = 0
>                     then [[| Supervisor.Fsharp |]]
>                     else
>                         builderCommands
>                         |> Array.map (fun x ->
>                             if x |> SpiralSm.starts_with "cuda"
>                             then Supervisor.Cuda
>                             else Supervisor.Fsharp
>                         )
>                         |> Array.distinct
> 
>                 trace Verbose
>                     (fun () -> $"Eval.eval")
>                     (fun () -> $"lastTopLevelIndex: {lastTopLevelIndex} / 
> builderCommands: %A{builderCommands} / buildBackends: %A{buildBackends} / 
> isReal: {isReal} / {_locals ()}")
> 
>                 let! buildCodeResults =
>                     buildBackends
>                     |> Array.map (fun backend -> async {
>                         let! result =
>                             if isReal
>                             then Supervisor.Spir newAllCode
>                             else
>                                 Supervisor.Spi
>                                     (newAllCode, if allCodeReal = "" then None 
> else Some allCodeReal)
>                             |> Supervisor.buildCode backend isCache timeout 
> cancellationToken
>                         return backend, result
>                     })
>                     |> Async.Parallel
>                     |> Async.catch
>                     |> Async.runWithTimeoutAsync timeout
> 
>                 match buildCodeResults with
>                 | Some (Ok buildCodeResults) ->
>                     let! result, errors =
>                         ((Ok [[]], [[||]]), buildCodeResults)
>                         ||> Async.fold (fun acc buildCodeResult -> async {
>                             match buildCodeResult with
>                             | backend, (_, (outputPath, Some code), 
> spiralErrors) ->
>                                 let spiralErrors =
>                                     mapErrors (Warning, spiralErrors, 
> lastTopLevelIndex) allCode
>                                 let! result =
>                                     processSpiralOutput
>                                         {|
>                                             printCode = printCode
>                                             traceLevel = traceLevel
>                                             builderCommands = builderCommands
>                                             lastTopLevelIndex = 
> lastTopLevelIndex
>                                             backend = backend
>                                             cancellationToken = 
> cancellationToken
>                                             spiralErrors = spiralErrors
>                                             code = code
>                                             outputPath = outputPath
>                                             isReal = isReal
>                                         |}
>                                 match result, acc with
>                                 | (Ok code, errors), (Ok acc_code, acc_errors) 
> ->
>                                     return Ok (acc_code @ code), acc_errors |> 
> Array.append errors
>                                 | (Error ex, errors), _ | _, (Error ex, errors) 
> ->
>                                     return
>                                         Error (Exception $"Eval.eval / 
> processSpiralOutput / Exception / buildCodeResult: %A{buildCodeResult} / ex: {ex
> |> SpiralSm.format_exception}"),
>                                         errors |> Array.append errors
>                             | _, (_, _, errors) when errors |> List.isEmpty |> 
> not ->
>                                 return errors.[[0]] |> fst |> Exception |> 
> Error,
>                                 mapErrors (TraceLevel.Critical, errors, 
> lastTopLevelIndex) allCode
>                             | _ -> return acc
>                         })
>                     let cancellationToken = defaultArg cancellationToken 
> System.Threading.CancellationToken.None
>                     match result, errors with
>                     | Ok code, [[||]] ->
>                         let code, eval =
>                             code
>                             |> List.map (fun code ->
>                                 if code.eval
>                                 then None, Some code.code
>                                 else Some code.code, None
>                             )
>                             |> List.unzip
>                         let code = code |> List.choose id
>                         let eval = eval |> List.choose id
> 
>                         trace Debug
>                             (fun () -> $"Eval.eval")
>                             (fun () -> $"eval: {eval |> 
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / code: {code |> 
> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / {_locals ()}")
> 
>                         let ch, errors =
>                             match eval, code with
>                             | [[]], [[]] ->
>                                 Choice2Of2 (Exception $"Eval.eval / eval=[[]] / 
> code=[[]] / buildCodeResults: %A{buildCodeResults} / code: %A{code}"), errors
>                             | [[ eval ]], [[]] ->
>                                 let ch, errors2 = fsi_eval eval 
> cancellationToken
>                                 let errors =
>                                     errors2
>                                     // |> Array.map (fun (e1, e2, e3, _) ->
>                                     //     (e1, e2, e3, ("", (0, 0), (0, 0)))
>                                     // )
>                                     |> Array.append errors
>                                 ch, errors
>                             | [[]], _ ->
>                                 let code = code |> List.rev |> String.concat 
> "\n\n"
>                                 let code =
>                                     if printCode
>                                     then $"\"\"\"{code}\n\n\"\"\""
>                                     else $"\"\"\"{code}\n\"\"\""
>                                 let ch, errors2 = fsi_eval code 
> cancellationToken
>                                 let errors =
>                                     errors2
>                                     // |> Array.map (fun (e1, e2, e3, _) ->
>                                     //     (e1, e2, e3, ("", (0, 0), (0, 0)))
>                                     // )
>                                     |> Array.append errors
>                                 ch, errors
>                             | _ ->
>                                 let code, errors =
>                                     ((Ok (code |> List.rev), [[||]]), eval)
>                                     ||> List.fold (fun (acc, acc_errors) eval ->
>                                         match acc with
>                                         | Error ch -> Error ch, acc_errors
>                                         | Ok acc ->
>                                             let ch, errors = fsi_eval eval 
> cancellationToken
>                                             let errors =
>                                                 errors
>                                                 // |> Array.map (fun (e1, e2, 
> e3, _) ->
>                                                 //     (e1, e2, e3, ("", (0, 0),
> (0, 0)))
>                                                 // )
>                                                 |> Array.append acc_errors
>                                             match ch with
>                                             | Choice1Of2 v ->
>                                                 let v =
>                                                     v
>                                                     |> tryGetPropertyValue 
> "ReflectionValue"
>                                                     |> Option.map (fun x -> 
> $"%A{x}")
>                                                     |> Option.defaultValue ""
>                                                 Ok (v :: acc), errors
>                                             | Choice2Of2 ex ->
>                                                 trace Critical (fun () -> 
> $"Eval.eval / fsi_eval fold Choice error / buildCodeResults: 
> %A{buildCodeResults} / ex: {ex |> SpiralSm.format_exception}") _locals
>                                                 Error ch, errors
>                                     )
>                                 match code with
>                                 | Error ch -> ch, errors
>                                 | Ok code ->
>                                     let code =
>                                         code
>                                         |> List.filter ((<>) "")
>                                         |> String.concat "\n\n"
> 
>                                     let code =
>                                         if builderCommands.Length > 0 && 
> eval.Length = 0
>                                         then code
>                                         elif code |> SpiralSm.contains "\n\n\n"
>                                         then $"{code}\n\n"
>                                         else $"{code}\n"
> 
>                                     let code =
>                                         if printCode
>                                         then $"\"\"\"{code}\n\n\n\"\"\""
>                                         else $"\"\"\"{code}\n\"\"\""
>                                     let ch, errors2 = fsi_eval code 
> cancellationToken
>                                     let errors =
>                                         errors2
>                                         // |> Array.map (fun (e1, e2, e3, _) ->
>                                         //     (e1, e2, e3, ("", (0, 0), (0, 
> 0)))
>                                         // )
>                                         |> Array.append errors
>                                     ch, errors
>                         match ch with
>                         | Choice1Of2 v ->
>                             if isReal
>                             then allCodeReal <- newAllCode
>                             else allCode <- newAllCode
>                             return Ok(v), errors
>                         | Choice2Of2 ex ->
>                             return
>                                 Error (Exception $"Eval.eval / -2 / Exception / 
> buildCodeResults: {buildCodeResults |> FSharp.Json.Json.serialize |> 
> SpiralSm.ellipsis_end 400} / ex: {ex |> SpiralSm.format_exception}"),
>                                 errors
>                     | Ok code, errors ->
>                         return
>                             Error (Exception "Eval.eval / errors / 
> buildCodeResults: %A{buildCodeResults} / code: %A{code}"),
>                             errors
>                     | Error ex, errors ->
>                         return
>                             Error (Exception $"Eval.eval / -1 / Exception / 
> buildCodeResults: {buildCodeResults |> FSharp.Json.Json.serialize |> 
> SpiralSm.ellipsis_end 1500} / ex: {ex |> SpiralSm.format_exception}"),
>                             errors
>                 | Some (Error ex) ->
>                     trace Critical (fun () -> $"Eval.eval / buildCodeResults 
> Error / buildCodeResults: %A{buildCodeResults} / ex: {ex |> 
> SpiralSm.format_exception}") _locals
>                     return
>                         Error (Exception $"Eval.eval / buildCodeResults Error / 
> Exception / buildCodeResults: %A{buildCodeResults} / ex: {ex |> 
> SpiralSm.format_exception}"),
>                         [[|
>                             (
>                                 TraceLevel.Critical, $"Eval.eval / 
> buildCodeResults Error / errors[[0]] / buildCodeResults: %A{buildCodeResults} / 
> ex: {ex |> SpiralSm.format_exception}", 0, ("", (0, 0), (0, 0))
>                             )
>                         |]]
>                 | _ ->
>                     return
>                         Error (Exception $"Eval.eval / buildCodeResults / 
> Exception / buildCodeResults: %A{buildCodeResults}"),
>                         [[|
>                             (
>                                 TraceLevel.Critical, $"Eval.eval / 
> buildCodeResults / errors[[0]] / buildCodeResults: %A{buildCodeResults}", 0, 
> ("", (0, 0), (0, 0))
>                             )
>                         |]]
>             with ex ->
>                 trace Critical (fun () -> $"Eval.eval / try 1 ex / ex: {ex |> 
> SpiralSm.format_exception} / lines: %A{lines}") _locals
>                 return
>                     Error (Exception $"Eval.eval / try 1 ex / Exception / ex: 
> {ex |> SpiralSm.format_exception} / lines: %A{lines}"),
>                     [[|
>                         (
>                             TraceLevel.Critical, $"Eval.eval / try 1 ex / 
> errors[[0]] / ex: {ex |> SpiralSm.format_exception} / lines: %A{lines}", 0, ("",
> (0, 0), (0, 0))
>                         )
>                     |]]
>         }
>         |> Async.runWithTimeout timeout
>         |> Option.defaultValue (
>             Error (Exception $"Eval.eval / Async.runWithTimeout / Exception / 
> timeout: {timeout} / lines: %A{lines}"),
>             [[|
>                 (
>                     TraceLevel.Critical, $"Eval.eval / Async.runWithTimeout / 
> errors[[0]] / timeout: {timeout} / lines: %A{lines}", 0, ("", (0, 0), (0, 0))
>                 )
>             |]]
>         )
00:00:28 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 53005 }
00:00:28   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
    "nbconvert",
    "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb",
    "--to",
    "html",
    "--HTMLExporter.theme=dark",
]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:29 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb to html
00:00:29 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:29 verbose #7 !   validate(nb)
00:00:29 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:29 verbose #9 !   return _pygments_highlight(
00:00:30 verbose #10 ! [NbConvertApp] Writing 449029 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.html
00:00:30 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 894 }
00:00:30   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 894 }
00:00:30   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
    "-c",
    "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:30 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:30   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:30   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 53958 }
00:00:00   debug #1 writeDibCode / output: Fs / path: Eval.dib
00:00:00   debug #2 parseDibCode / output: Fs / file: Eval.dib
In [ ]:
{ pwsh ../lib/fsharp/build.ps1 -sequential 1 } | Invoke-Block
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00   debug #1 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path Async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:00 verbose #2 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Async.dib", "--retries", "3"])) }
00:00:00 verbose #3 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:00:00 verbose #4 >     "repl",
00:00:00 verbose #5 >     "--exit-after-run",
00:00:00 verbose #6 >     "--run",
00:00:00 verbose #7 >     "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib",
00:00:00 verbose #8 >     "--output-path",
00:00:00 verbose #9 >     "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb",
00:00:00 verbose #10 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:01 verbose #11 > >
00:00:01 verbose #12 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:01 verbose #13 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:01 verbose #14 > > │ # Async (Polyglot)                                                           │
00:00:01 verbose #15 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 verbose #16 > >
00:00:15 verbose #17 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 verbose #18 > > #if !INTERACTIVE
00:00:15 verbose #19 > > open Lib
00:00:15 verbose #20 > > #endif
00:00:15 verbose #21 > >
00:00:15 verbose #22 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 verbose #23 > > open Common
00:00:15 verbose #24 > >
00:00:15 verbose #25 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 verbose #26 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 verbose #27 > > │ ## choice                                                                    │
00:00:15 verbose #28 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 verbose #29 > >
00:00:15 verbose #30 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 verbose #31 > > let inline choice asyncs = async {
00:00:15 verbose #32 > >     let e = Event<_> ()
00:00:15 verbose #33 > >     use cts = new System.Threading.CancellationTokenSource ()
00:00:15 verbose #34 > >     let fn =
00:00:15 verbose #35 > >         asyncs
00:00:15 verbose #36 > >         |> Seq.map (fun a -> async {
00:00:15 verbose #37 > >             let! x = a
00:00:15 verbose #38 > >             e.Trigger x
00:00:15 verbose #39 > >         })
00:00:15 verbose #40 > >         |> Async.Parallel
00:00:15 verbose #41 > >         |> Async.Ignore
00:00:15 verbose #42 > >     Async.Start (fn, cts.Token)
00:00:15 verbose #43 > >     let! result = Async.AwaitEvent e.Publish
00:00:15 verbose #44 > >     cts.Cancel ()
00:00:15 verbose #45 > >     return result
00:00:15 verbose #46 > > }
00:00:15 verbose #47 > >
00:00:15 verbose #48 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 verbose #49 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 verbose #50 > > │ ## map                                                                       │
00:00:15 verbose #51 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 verbose #52 > >
00:00:15 verbose #53 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 verbose #54 > > let inline map fn a = async {
00:00:15 verbose #55 > >     let! x = a
00:00:15 verbose #56 > >     return fn x
00:00:15 verbose #57 > > }
00:00:15 verbose #58 > >
00:00:15 verbose #59 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 verbose #60 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 verbose #61 > > │ ## catch                                                                     │
00:00:15 verbose #62 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 verbose #63 > >
00:00:15 verbose #64 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 verbose #65 > > let inline catch a =
00:00:15 verbose #66 > >     a
00:00:15 verbose #67 > >     |> Async.Catch
00:00:15 verbose #68 > >     |> map (function
00:00:15 verbose #69 > >         | Choice1Of2 result -> Ok result
00:00:15 verbose #70 > >         | Choice2Of2 ex -> Error ex
00:00:15 verbose #71 > >     )
00:00:15 verbose #72 > >
00:00:15 verbose #73 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 verbose #74 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 verbose #75 > > │ ## runWithTimeoutChoiceAsync                                                 │
00:00:15 verbose #76 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 verbose #77 > >
00:00:15 verbose #78 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 verbose #79 > > let inline runWithTimeoutChoiceAsync (timeout : int) fn =
00:00:15 verbose #80 > >     let _locals () = $"timeout: {timeout} / {_locals ()}"
00:00:15 verbose #81 > >
00:00:15 verbose #82 > >     let timeoutTask = async {
00:00:15 verbose #83 > >         do! Async.Sleep timeout
00:00:15 verbose #84 > >         trace Debug (fun () -> "runWithTimeoutChoiceAsync") _locals
00:00:15 verbose #85 > >         return None
00:00:15 verbose #86 > >     }
00:00:15 verbose #87 > >
00:00:15 verbose #88 > >     let task = async {
00:00:15 verbose #89 > >         try
00:00:15 verbose #90 > >             let! result = fn
00:00:15 verbose #91 > >             return Some result
00:00:15 verbose #92 > >         with
00:00:15 verbose #93 > >         | :? System.AggregateException as ex when
00:00:15 verbose #94 > >             ex.InnerExceptions
00:00:15 verbose #95 > >             |> Seq.exists (function :?
00:00:15 verbose #96 > > System.Threading.Tasks.TaskCanceledException -> true | _ -> false)
00:00:15 verbose #97 > >             ->
00:00:15 verbose #98 > >             trace Warning
00:00:15 verbose #99 > >                 (fun () -> "runWithTimeoutChoiceAsync")
00:00:15 verbose #100 > >                 (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals
00:00:15 verbose #101 > > ()}")
00:00:15 verbose #102 > >             return None
00:00:15 verbose #103 > >         | ex ->
00:00:15 verbose #104 > >             trace Critical
00:00:15 verbose #105 > >                 (fun () -> "runWithTimeoutChoiceAsync")
00:00:15 verbose #106 > >                 (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals
00:00:15 verbose #107 > > ()}")
00:00:15 verbose #108 > >             return None
00:00:15 verbose #109 > >     }
00:00:15 verbose #110 > >
00:00:15 verbose #111 > >     [[ timeoutTask; task ]]
00:00:15 verbose #112 > >     |> choice
00:00:15 verbose #113 > >
00:00:15 verbose #114 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 verbose #115 > > let inline runWithTimeoutChoice timeout fn =
00:00:15 verbose #116 > >     fn
00:00:15 verbose #117 > >     |> runWithTimeoutChoiceAsync timeout
00:00:15 verbose #118 > >     |> Async.RunSynchronously
00:00:15 verbose #119 > >
00:00:15 verbose #120 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 verbose #121 > > //// test
00:00:15 verbose #122 > >
00:00:15 verbose #123 > > Async.Sleep 120
00:00:15 verbose #124 > > |> runWithTimeoutChoice 10
00:00:15 verbose #125 > > |> _assertEqual None
00:00:15 verbose #126 > >
00:00:15 verbose #127 > > ╭─[ 132.52ms - stdout ]────────────────────────────────────────────────────────╮
00:00:15 verbose #128 > > │ 00:00:00   debug #1 runWithTimeoutChoiceAsync / timeout: 10             │
00:00:15 verbose #129 > > │ <null>                                                                       │
00:00:15 verbose #130 > > │                                                                              │
00:00:15 verbose #131 > > │                                                                              │
00:00:15 verbose #132 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 verbose #133 > >
00:00:15 verbose #134 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 verbose #135 > > //// test
00:00:15 verbose #136 > >
00:00:15 verbose #137 > > Async.Sleep 10
00:00:15 verbose #138 > > |> runWithTimeoutChoice 60
00:00:15 verbose #139 > > |> _assertEqual (Some ())
00:00:15 verbose #140 > >
00:00:15 verbose #141 > > ╭─[ 93.12ms - stdout ]─────────────────────────────────────────────────────────╮
00:00:15 verbose #142 > > │ Some ()                                                                      │
00:00:15 verbose #143 > > │                                                                              │
00:00:15 verbose #144 > > │                                                                              │
00:00:15 verbose #145 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 verbose #146 > >
00:00:15 verbose #147 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 verbose #148 > > //// test
00:00:15 verbose #149 > >
00:00:15 verbose #150 > > async {
00:00:15 verbose #151 > >     raise (exn "error")
00:00:15 verbose #152 > > }
00:00:15 verbose #153 > > |> runWithTimeoutChoice 60
00:00:15 verbose #154 > > |> _assertEqual None
00:00:15 verbose #155 > >
00:00:15 verbose #156 > > ╭─[ 88.81ms - stdout ]─────────────────────────────────────────────────────────╮
00:00:15 verbose #157 > > │ 00:00:00 critical #2 runWithTimeoutChoiceAsync / ex: System.Exception:  │
00:00:15 verbose #158 > > │ error / timeout: 60                                                          │
00:00:15 verbose #159 > > │ <null>                                                                       │
00:00:15 verbose #160 > > │                                                                              │
00:00:15 verbose #161 > > │                                                                              │
00:00:15 verbose #162 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 verbose #163 > >
00:00:15 verbose #164 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 verbose #165 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 verbose #166 > > │ ## runWithTimeoutAsync                                                       │
00:00:15 verbose #167 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 verbose #168 > >
00:00:15 verbose #169 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 verbose #170 > > let inline runWithTimeoutAsync (timeout : int) fn = async {
00:00:15 verbose #171 > >     let _locals () = $"timeout: {timeout} / {_locals ()}"
00:00:15 verbose #172 > >     let! child = Async.StartChild (fn, timeout)
00:00:15 verbose #173 > >     return!
00:00:15 verbose #174 > >         child
00:00:15 verbose #175 > >         |> catch
00:00:15 verbose #176 > >         |> map (function
00:00:15 verbose #177 > >             | Ok result -> Some result
00:00:15 verbose #178 > >             | Error (:? System.TimeoutException as ex) ->
00:00:15 verbose #179 > >                 trace Debug (fun () -> $"runWithTimeoutAsync") _locals
00:00:15 verbose #180 > >                 None
00:00:15 verbose #181 > >             | Error ex ->
00:00:15 verbose #182 > >                 trace Critical (fun () -> $"runWithTimeoutAsync** / ex: %A{ex}")
00:00:15 verbose #183 > > _locals
00:00:15 verbose #184 > >                 None
00:00:15 verbose #185 > >         )
00:00:15 verbose #186 > > }
00:00:15 verbose #187 > >
00:00:15 verbose #188 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 verbose #189 > > let inline runWithTimeout timeout fn =
00:00:15 verbose #190 > >     fn
00:00:15 verbose #191 > >     |> runWithTimeoutAsync timeout
00:00:15 verbose #192 > >     |> Async.RunSynchronously
00:00:15 verbose #193 > >
00:00:15 verbose #194 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:15 verbose #195 > > //// test
00:00:15 verbose #196 > >
00:00:15 verbose #197 > > Async.Sleep 60
00:00:15 verbose #198 > > |> runWithTimeout 10
00:00:15 verbose #199 > > |> _assertEqual None
00:00:16 verbose #200 > >
00:00:16 verbose #201 > > ╭─[ 75.80ms - stdout ]─────────────────────────────────────────────────────────╮
00:00:16 verbose #202 > > │ 00:00:01   debug #3 runWithTimeoutAsync / timeout: 10                   │
00:00:16 verbose #203 > > │ <null>                                                                       │
00:00:16 verbose #204 > > │                                                                              │
00:00:16 verbose #205 > > │                                                                              │
00:00:16 verbose #206 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #207 > >
00:00:16 verbose #208 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #209 > > //// test
00:00:16 verbose #210 > >
00:00:16 verbose #211 > > Async.Sleep 10
00:00:16 verbose #212 > > |> runWithTimeout 60
00:00:16 verbose #213 > > |> _assertEqual (Some ())
00:00:16 verbose #214 > >
00:00:16 verbose #215 > > ╭─[ 61.08ms - stdout ]─────────────────────────────────────────────────────────╮
00:00:16 verbose #216 > > │ Some ()                                                                      │
00:00:16 verbose #217 > > │                                                                              │
00:00:16 verbose #218 > > │                                                                              │
00:00:16 verbose #219 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #220 > >
00:00:16 verbose #221 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #222 > > //// test
00:00:16 verbose #223 > >
00:00:16 verbose #224 > > async {
00:00:16 verbose #225 > >     raise (exn "error")
00:00:16 verbose #226 > > }
00:00:16 verbose #227 > > |> runWithTimeout 60
00:00:16 verbose #228 > > |> _assertEqual None
00:00:16 verbose #229 > >
00:00:16 verbose #230 > > ╭─[ 68.87ms - stdout ]─────────────────────────────────────────────────────────╮
00:00:16 verbose #231 > > │ 00:00:01 critical #4 runWithTimeoutAsync** / ex: System.Exception:      │
00:00:16 verbose #232 > > │ error                                                                        │
00:00:16 verbose #233 > > │    at FSI_0036.it@4-119.Invoke(Unit unitVar)                                 │
00:00:16 verbose #234 > > │    at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[               │
00:00:16 verbose #235 > > │ T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in   │
00:00:16 verbose #236 > > │ D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510                             │
00:00:16 verbose #237 > > │    at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction)  │
00:00:16 verbose #238 > > │ in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112                          │
00:00:16 verbose #239 > > │ --- End of stack trace from previous location ---                            │
00:00:16 verbose #240 > > │    at Microsoft.FSharp.Control.AsyncResult`1.Commit() in                     │
00:00:16 verbose #241 > > │ D:\a\_work\1\s\src\FSharp.Core\async.fs:line 454                             │
00:00:16 verbose #242 > > │    at                                                                        │
00:00:16 verbose #243 > > │ <StartupCode$FSharp-Core>.$Async.AwaitAndBindChildResult@1962-4.Invoke(Unit  │
00:00:16 verbose #244 > > │ unitVar) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1964                │
00:00:16 verbose #245 > > │    at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[               │
00:00:16 verbose #246 > > │ T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in   │
00:00:16 verbose #247 > > │ D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510                             │
00:00:16 verbose #248 > > │    at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction)  │
00:00:16 verbose #249 > > │ in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112 / timeout: 60            │
00:00:16 verbose #250 > > │ <null>                                                                       │
00:00:16 verbose #251 > > │                                                                              │
00:00:16 verbose #252 > > │                                                                              │
00:00:16 verbose #253 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #254 > >
00:00:16 verbose #255 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #256 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #257 > > │ ## runWithTimeoutStrict                                                      │
00:00:16 verbose #258 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #259 > >
00:00:16 verbose #260 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #261 > > let inline runWithTimeoutStrict (timeout : int) fn =
00:00:16 verbose #262 > >     let _locals () = $"timeout: {timeout} / {_locals ()}"
00:00:16 verbose #263 > >
00:00:16 verbose #264 > >     let timeoutTask = async {
00:00:16 verbose #265 > >         do! Async.Sleep timeout
00:00:16 verbose #266 > >         return None, _locals
00:00:16 verbose #267 > >     }
00:00:16 verbose #268 > >
00:00:16 verbose #269 > >     let task = async {
00:00:16 verbose #270 > >         try
00:00:16 verbose #271 > >             return Async.RunSynchronously (fn, timeout) |> Some, _locals
00:00:16 verbose #272 > >         with
00:00:16 verbose #273 > >         | :? System.TimeoutException as ex ->
00:00:16 verbose #274 > >             let _locals () = $"ex: {ex |> SpiralSm.format_exception} / {_locals
00:00:16 verbose #275 > > ()}"
00:00:16 verbose #276 > >             return None, _locals
00:00:16 verbose #277 > >         | ex ->
00:00:16 verbose #278 > >             trace Critical
00:00:16 verbose #279 > >                 (fun () -> "runWithTimeoutStrict / async error")
00:00:16 verbose #280 > >                 (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals
00:00:16 verbose #281 > > ()}")
00:00:16 verbose #282 > >             return raise ex
00:00:16 verbose #283 > >     }
00:00:16 verbose #284 > >
00:00:16 verbose #285 > >     try
00:00:16 verbose #286 > >         [[| timeoutTask; task |]]
00:00:16 verbose #287 > >         |> Array.map Async.StartAsTask
00:00:16 verbose #288 > >         |> System.Threading.Tasks.Task.WhenAny
00:00:16 verbose #289 > >         |> fun task ->
00:00:16 verbose #290 > >             match task.Result.Result with
00:00:16 verbose #291 > >             | None, _locals ->
00:00:16 verbose #292 > >                 trace Debug (fun () -> "runWithTimeoutStrict") _locals
00:00:16 verbose #293 > >                 None
00:00:16 verbose #294 > >             | result, _ -> result
00:00:16 verbose #295 > >     with
00:00:16 verbose #296 > >     | :? System.AggregateException as ex when
00:00:16 verbose #297 > >         ex.InnerExceptions
00:00:16 verbose #298 > >         |> Seq.exists (function :? System.Threading.Tasks.TaskCanceledException
00:00:16 verbose #299 > > -> true | _ -> false)
00:00:16 verbose #300 > >         ->
00:00:16 verbose #301 > >         trace Warning
00:00:16 verbose #302 > >             (fun () -> "runWithTimeoutStrict")
00:00:16 verbose #303 > >             (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals ()}")
00:00:16 verbose #304 > >         None
00:00:16 verbose #305 > >     | ex ->
00:00:16 verbose #306 > >         trace Critical
00:00:16 verbose #307 > >             (fun () -> "runWithTimeoutStrict / task error")
00:00:16 verbose #308 > >             (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals ()}")
00:00:16 verbose #309 > >         None
00:00:16 verbose #310 > >
00:00:16 verbose #311 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #312 > > //// test
00:00:16 verbose #313 > >
00:00:16 verbose #314 > > Async.Sleep 60
00:00:16 verbose #315 > > |> runWithTimeoutStrict 10
00:00:16 verbose #316 > > |> _assertEqual None
00:00:16 verbose #317 > >
00:00:16 verbose #318 > > ╭─[ 82.75ms - stdout ]─────────────────────────────────────────────────────────╮
00:00:16 verbose #319 > > │ 00:00:01   debug #5 runWithTimeoutStrict / timeout: 10                  │
00:00:16 verbose #320 > > │ <null>                                                                       │
00:00:16 verbose #321 > > │                                                                              │
00:00:16 verbose #322 > > │                                                                              │
00:00:16 verbose #323 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #324 > >
00:00:16 verbose #325 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #326 > > //// test
00:00:16 verbose #327 > >
00:00:16 verbose #328 > > Async.Sleep 10
00:00:16 verbose #329 > > |> runWithTimeoutStrict 60
00:00:16 verbose #330 > > |> _assertEqual (Some ())
00:00:16 verbose #331 > >
00:00:16 verbose #332 > > ╭─[ 80.81ms - stdout ]─────────────────────────────────────────────────────────╮
00:00:16 verbose #333 > > │ Some ()                                                                      │
00:00:16 verbose #334 > > │                                                                              │
00:00:16 verbose #335 > > │                                                                              │
00:00:16 verbose #336 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #337 > >
00:00:16 verbose #338 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #339 > > //// test
00:00:16 verbose #340 > >
00:00:16 verbose #341 > > async {
00:00:16 verbose #342 > >     raise (exn "error")
00:00:16 verbose #343 > > }
00:00:16 verbose #344 > > |> runWithTimeoutStrict 60
00:00:16 verbose #345 > > |> _assertEqual None
00:00:16 verbose #346 > >
00:00:16 verbose #347 > > ╭─[ 84.65ms - stdout ]─────────────────────────────────────────────────────────╮
00:00:16 verbose #348 > > │ 00:00:01 critical #6 runWithTimeoutStrict / async error / ex:           │
00:00:16 verbose #349 > > │ System.Exception: error / timeout: 60                                        │
00:00:16 verbose #350 > > │ 00:00:01 critical #7 runWithTimeoutStrict / task error / ex:            │
00:00:16 verbose #351 > > │ System.AggregateException: One or more errors occurred. (error) / timeout:   │
00:00:16 verbose #352 > > │ 60                                                                           │
00:00:16 verbose #353 > > │ <null>                                                                       │
00:00:16 verbose #354 > > │                                                                              │
00:00:16 verbose #355 > > │                                                                              │
00:00:16 verbose #356 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #357 > >
00:00:16 verbose #358 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #359 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #360 > > │ ## awaitValueTask                                                            │
00:00:16 verbose #361 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #362 > >
00:00:16 verbose #363 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #364 > > let inline awaitValueTaskUnit (task : System.Threading.Tasks.ValueTask) =
00:00:16 verbose #365 > >     task.AsTask () |> Async.AwaitTask
00:00:16 verbose #366 > >
00:00:16 verbose #367 > > let inline awaitValueTask (task : System.Threading.Tasks.ValueTask<_>) =
00:00:16 verbose #368 > >     task.AsTask () |> Async.AwaitTask
00:00:16 verbose #369 > >
00:00:16 verbose #370 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #371 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #372 > > │ ## init                                                                      │
00:00:16 verbose #373 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #374 > >
00:00:16 verbose #375 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #376 > > let inline init x = async {
00:00:16 verbose #377 > >     return x
00:00:16 verbose #378 > > }
00:00:16 verbose #379 > >
00:00:16 verbose #380 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #381 > > //// test
00:00:16 verbose #382 > >
00:00:16 verbose #383 > > init 1
00:00:16 verbose #384 > > |> Async.RunSynchronously
00:00:16 verbose #385 > > |> _assertEqual 1
00:00:16 verbose #386 > >
00:00:16 verbose #387 > > ╭─[ 18.68ms - stdout ]─────────────────────────────────────────────────────────╮
00:00:16 verbose #388 > > │ 1                                                                            │
00:00:16 verbose #389 > > │                                                                              │
00:00:16 verbose #390 > > │                                                                              │
00:00:16 verbose #391 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #392 > >
00:00:16 verbose #393 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #394 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #395 > > │ ## withCancellationToken                                                     │
00:00:16 verbose #396 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #397 > >
00:00:16 verbose #398 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #399 > > let inline withCancellationToken (ct : System.Threading.CancellationToken) fn =
00:00:16 verbose #400 > >     Async.StartImmediateAsTask (fn, ct)
00:00:16 verbose #401 > >     |> Async.AwaitTask
00:00:16 verbose #402 > >
00:00:16 verbose #403 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #404 > > //// test
00:00:16 verbose #405 > >
00:00:16 verbose #406 > > let cts = new System.Threading.CancellationTokenSource ()
00:00:16 verbose #407 > >
00:00:16 verbose #408 > > async {
00:00:16 verbose #409 > >     let run = async {
00:00:16 verbose #410 > >         do! Async.Sleep 100
00:00:16 verbose #411 > >         return 1
00:00:16 verbose #412 > >     }
00:00:16 verbose #413 > >
00:00:16 verbose #414 > >     let! child =
00:00:16 verbose #415 > >         run
00:00:16 verbose #416 > >         |> withCancellationToken cts.Token
00:00:16 verbose #417 > >         |> catch
00:00:16 verbose #418 > >         |> Async.StartChild
00:00:16 verbose #419 > >
00:00:16 verbose #420 > >     do! Async.Sleep 50
00:00:16 verbose #421 > >     cts.Cancel ()
00:00:16 verbose #422 > >     return! child
00:00:16 verbose #423 > > }
00:00:16 verbose #424 > > |> Async.RunSynchronously
00:00:16 verbose #425 > > |> Result.mapError _.Message
00:00:16 verbose #426 > > |> _assertEqual (Error ("A task was canceled."))
00:00:16 verbose #427 > >
00:00:16 verbose #428 > > ╭─[ 138.47ms - stdout ]────────────────────────────────────────────────────────╮
00:00:16 verbose #429 > > │ Error "A task was canceled."                                                 │
00:00:16 verbose #430 > > │                                                                              │
00:00:16 verbose #431 > > │                                                                              │
00:00:16 verbose #432 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #433 > >
00:00:16 verbose #434 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #435 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #436 > > │ ## retryAsync                                                                │
00:00:16 verbose #437 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #438 > >
00:00:16 verbose #439 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #440 > > let inline retryAsync retries fn =
00:00:16 verbose #441 > >     let rec loop retry lastError = async {
00:00:16 verbose #442 > >         try
00:00:16 verbose #443 > >             return!
00:00:16 verbose #444 > >                 if retry <= retries
00:00:16 verbose #445 > >                 then fn |> map Ok
00:00:16 verbose #446 > >                 else lastError |> Error |> init
00:00:16 verbose #447 > >         with ex ->
00:00:16 verbose #448 > >             trace Debug (fun () -> $"Async.retryAsync / retry: {retry}/{retries}
00:00:16 verbose #449 > > / ex: {ex |> SpiralSm.format_exception}") _locals
00:00:16 verbose #450 > >             do! Async.Sleep 30
00:00:16 verbose #451 > >             return! loop (retry + 1) (ex |> SpiralSm.format_exception)
00:00:16 verbose #452 > >     }
00:00:16 verbose #453 > >     loop 1 "Async.retryAsync / invalid retries / retries: {retries}"
00:00:16 verbose #454 > >
00:00:16 verbose #455 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #456 > > //// test
00:00:16 verbose #457 > >
00:00:16 verbose #458 > > let retry_fn_test = ref 0
00:00:16 verbose #459 > > async {
00:00:16 verbose #460 > >     retry_fn_test.Value <- retry_fn_test.Value + 1
00:00:16 verbose #461 > >     return retry_fn_test.Value
00:00:16 verbose #462 > > }
00:00:16 verbose #463 > > |> retryAsync 3
00:00:16 verbose #464 > > |> Async.RunSynchronously
00:00:16 verbose #465 > > |> _assertEqual (Ok 1)
00:00:16 verbose #466 > >
00:00:16 verbose #467 > > ╭─[ 61.99ms - stdout ]─────────────────────────────────────────────────────────╮
00:00:16 verbose #468 > > │ Ok 1                                                                         │
00:00:16 verbose #469 > > │                                                                              │
00:00:16 verbose #470 > > │                                                                              │
00:00:16 verbose #471 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #472 > >
00:00:16 verbose #473 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #474 > > //// test
00:00:16 verbose #475 > >
00:00:16 verbose #476 > > let retry_fn_test = ref 0
00:00:16 verbose #477 > > async {
00:00:16 verbose #478 > >     return
00:00:16 verbose #479 > >         if retry_fn_test.Value >= 2
00:00:16 verbose #480 > >         then retry_fn_test.Value
00:00:16 verbose #481 > >         else
00:00:16 verbose #482 > >             retry_fn_test.Value <- retry_fn_test.Value + 1
00:00:16 verbose #483 > >             failwith "test"
00:00:16 verbose #484 > > }
00:00:16 verbose #485 > > |> retryAsync 3
00:00:16 verbose #486 > > |> Async.RunSynchronously
00:00:16 verbose #487 > > |> _assertEqual (Ok 2)
00:00:17 verbose #488 > >
00:00:17 verbose #489 > > ╭─[ 156.56ms - stdout ]────────────────────────────────────────────────────────╮
00:00:17 verbose #490 > > │ 00:00:02   debug #8 Async.retryAsync / retry: 1/3 / ex:                 │
00:00:17 verbose #491 > > │ System.Exception: test                                                       │
00:00:17 verbose #492 > > │ 00:00:02   debug #9 Async.retryAsync / retry: 2/3 / ex:                 │
00:00:17 verbose #493 > > │ System.Exception: test                                                       │
00:00:17 verbose #494 > > │ Ok 2                                                                         │
00:00:17 verbose #495 > > │                                                                              │
00:00:17 verbose #496 > > │                                                                              │
00:00:17 verbose #497 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 verbose #498 > >
00:00:17 verbose #499 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 verbose #500 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 verbose #501 > > │ ## fold                                                                      │
00:00:17 verbose #502 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 verbose #503 > >
00:00:17 verbose #504 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:17 verbose #505 > > let fold folder state array =
00:00:17 verbose #506 > >     let rec loop acc i =
00:00:17 verbose #507 > >         async {
00:00:17 verbose #508 > >             if i < Array.length array then
00:00:17 verbose #509 > >                 let! newAcc = folder acc array.[[i]]
00:00:17 verbose #510 > >                 return! loop newAcc (i + 1)
00:00:17 verbose #511 > >             else
00:00:17 verbose #512 > >                 return acc
00:00:17 verbose #513 > >         }
00:00:17 verbose #514 > >     loop state 0
00:00:17 verbose #515 > 00:00:16 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 24788 }
00:00:17 verbose #516 > 00:00:16   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:00:17 verbose #517 >     "nbconvert",
00:00:17 verbose #518 >     "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb",
00:00:17 verbose #519 >     "--to",
00:00:17 verbose #520 >     "html",
00:00:17 verbose #521 >     "--HTMLExporter.theme=dark",
00:00:17 verbose #522 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:17 verbose #523 > 00:00:17 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb to html
00:00:17 verbose #524 > 00:00:17 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:17 verbose #525 > 00:00:17 verbose #7 !   validate(nb)
00:00:18 verbose #526 > 00:00:17 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:18 verbose #527 > 00:00:17 verbose #9 !   return _pygments_highlight(
00:00:18 verbose #528 > 00:00:17 verbose #10 ! [NbConvertApp] Writing 332769 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.html
00:00:18 verbose #529 > 00:00:18 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 894 }
00:00:18 verbose #530 > 00:00:18   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 894 }
00:00:18 verbose #531 > 00:00:18   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:00:18 verbose #532 >     "-c",
00:00:18 verbose #533 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:00:18 verbose #534 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:18 verbose #535 > 00:00:18 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:18 verbose #536 > 00:00:18   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:18 verbose #537 > 00:00:18   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 25741 }
00:00:18   debug #538 runtime.execute_with_options_async / { exit_code = 0; output_length = 29584 }
00:00:18   debug #1 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path Async.dib --retries 3
00:00:18   debug #539 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path AsyncSeq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:18 verbose #540 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "AsyncSeq.dib", "--retries", "3"])) }
00:00:18 verbose #541 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:00:18 verbose #542 >     "repl",
00:00:18 verbose #543 >     "--exit-after-run",
00:00:18 verbose #544 >     "--run",
00:00:18 verbose #545 >     "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib",
00:00:18 verbose #546 >     "--output-path",
00:00:18 verbose #547 >     "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb",
00:00:18 verbose #548 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:20 verbose #549 > >
00:00:20 verbose #550 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 verbose #551 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 verbose #552 > > │ # AsyncSeq (Polyglot)                                                        │
00:00:20 verbose #553 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:33 verbose #554 > >
00:00:33 verbose #555 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:33 verbose #556 > > #r
00:00:33 verbose #557 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
00:00:33 verbose #558 > > dard2.1/FSharp.Control.AsyncSeq.dll"
00:00:33 verbose #559 > > #r
00:00:33 verbose #560 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
00:00:33 verbose #561 > > 0/System.Reactive.dll"
00:00:33 verbose #562 > > #r
00:00:33 verbose #563 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib
00:00:33 verbose #564 > > netstandard2.0/System.Reactive.Linq.dll"
00:00:33 verbose #565 > >
00:00:33 verbose #566 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:33 verbose #567 > > #if !INTERACTIVE
00:00:33 verbose #568 > > open Lib
00:00:33 verbose #569 > > #endif
00:00:33 verbose #570 > >
00:00:33 verbose #571 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:33 verbose #572 > > open Common
00:00:33 verbose #573 > >
00:00:33 verbose #574 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:33 verbose #575 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:33 verbose #576 > > │ ## subscribeEvent                                                            │
00:00:33 verbose #577 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:33 verbose #578 > >
00:00:33 verbose #579 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:33 verbose #580 > > let inline subscribeEvent (event: IEvent<'H, 'A>) map =
00:00:33 verbose #581 > >     let observable = System.Reactive.Linq.Observable.FromEventPattern<'H,
00:00:33 verbose #582 > > 'A>(event.AddHandler, event.RemoveHandler)
00:00:33 verbose #583 > >     System.Reactive.Linq.Observable.Select (observable, fun event -> map
00:00:33 verbose #584 > > event.EventArgs)
00:00:33 verbose #585 > >     |> FSharp.Control.AsyncSeq.ofObservableBuffered
00:00:33 verbose #586 > >
00:00:33 verbose #587 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:33 verbose #588 > > //// test
00:00:33 verbose #589 > >
00:00:33 verbose #590 > > type TestEvent () as self =
00:00:33 verbose #591 > >     member val Calls = [[]] with get, set
00:00:33 verbose #592 > >     member val Event = Event<ErrorEventHandler, ErrorEventArgs> () with get
00:00:33 verbose #593 > >
00:00:33 verbose #594 > >     member _.AddCall text =
00:00:33 verbose #595 > >         self.Calls <- self.Calls @ [[ text ]]
00:00:33 verbose #596 > >
00:00:33 verbose #597 > >     member _.EventInterface =
00:00:33 verbose #598 > >         { new IEvent<ErrorEventHandler, ErrorEventArgs> with
00:00:33 verbose #599 > >             member _.AddHandler handler =
00:00:33 verbose #600 > >                 self.AddCall "AddHandler"
00:00:33 verbose #601 > >                 self.Event.Publish.AddHandler handler
00:00:33 verbose #602 > >
00:00:33 verbose #603 > >             member _.RemoveHandler handler =
00:00:33 verbose #604 > >                 self.AddCall "RemoveHandler"
00:00:33 verbose #605 > >                 self.Event.Publish.RemoveHandler handler
00:00:33 verbose #606 > >
00:00:33 verbose #607 > >             member _.Subscribe observer =
00:00:33 verbose #608 > >                 self.AddCall "IObservable.Subscribe"
00:00:33 verbose #609 > >                 let disposable = self.Event.Publish.Subscribe observer
00:00:33 verbose #610 > >                 new_disposable (fun () ->
00:00:33 verbose #611 > >                     self.AddCall "IObservable.Dispose"
00:00:33 verbose #612 > >                     disposable.Dispose ()
00:00:33 verbose #613 > >                 )
00:00:33 verbose #614 > >         }
00:00:33 verbose #615 > >
00:00:33 verbose #616 > >     member _.Subscribe () =
00:00:33 verbose #617 > >         subscribeEvent
00:00:33 verbose #618 > >             self.EventInterface
00:00:33 verbose #619 > >             (fun args ->
00:00:33 verbose #620 > >                 let result = args.GetException () |> SpiralSm.format_exception
00:00:33 verbose #621 > >                 self.AddCall $"TestEvent.Subscribe({result})"
00:00:33 verbose #622 > >                 result
00:00:33 verbose #623 > >             )
00:00:33 verbose #624 > >
00:00:33 verbose #625 > >     member _.Iter subscription =
00:00:33 verbose #626 > >         subscription
00:00:33 verbose #627 > >         |> FSharp.Control.AsyncSeq.iteriAsync (fun i error -> async {
00:00:33 verbose #628 > >             self.AddCall $"TestEvent.Iter({i}: {error})"
00:00:33 verbose #629 > >         })
00:00:33 verbose #630 > >
00:00:33 verbose #631 > >     member _.WaitCall text = async {
00:00:33 verbose #632 > >         while self.Calls |> List.last <> text do
00:00:33 verbose #633 > >             do! Async.SwitchToThreadPool ()
00:00:33 verbose #634 > >     }
00:00:33 verbose #635 > >
00:00:33 verbose #636 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:33 verbose #637 > > //// test
00:00:33 verbose #638 > >
00:00:33 verbose #639 > > let testEvent = TestEvent ()
00:00:33 verbose #640 > >
00:00:33 verbose #641 > > async {
00:00:33 verbose #642 > >     testEvent.AddCall "1"
00:00:33 verbose #643 > >     let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild
00:00:33 verbose #644 > >     do! testEvent.WaitCall "AddHandler"
00:00:33 verbose #645 > >     testEvent.AddCall "2"
00:00:33 verbose #646 > >     do! child
00:00:33 verbose #647 > >     testEvent.AddCall "3"
00:00:33 verbose #648 > > }
00:00:33 verbose #649 > > |> Async.runWithTimeout 300
00:00:33 verbose #650 > > |> _assertEqual None
00:00:33 verbose #651 > >
00:00:33 verbose #652 > > testEvent.Calls
00:00:33 verbose #653 > > |> Seq.toList
00:00:33 verbose #654 > > |> _assertEqual [[ "1"; "AddHandler"; "2"; "RemoveHandler" ]]
00:00:34 verbose #655 > >
00:00:34 verbose #656 > > ╭─[ 434.24ms - stdout ]────────────────────────────────────────────────────────╮
00:00:34 verbose #657 > > │ 00:00:01   debug #1 runWithTimeoutAsync / timeout: 300                  │
00:00:34 verbose #658 > > │ <null>                                                                       │
00:00:34 verbose #659 > > │                                                                              │
00:00:34 verbose #660 > > │ ["1"; "AddHandler"; "2"; "RemoveHandler"]                                    │
00:00:34 verbose #661 > > │                                                                              │
00:00:34 verbose #662 > > │                                                                              │
00:00:34 verbose #663 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:34 verbose #664 > >
00:00:34 verbose #665 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:34 verbose #666 > > //// test
00:00:34 verbose #667 > >
00:00:34 verbose #668 > > let testEvent = TestEvent ()
00:00:34 verbose #669 > >
00:00:34 verbose #670 > > async {
00:00:34 verbose #671 > >     testEvent.AddCall "1"
00:00:34 verbose #672 > >     let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild
00:00:34 verbose #673 > >     do! testEvent.WaitCall "AddHandler"
00:00:34 verbose #674 > >     testEvent.AddCall "2"
00:00:34 verbose #675 > >     use _ = testEvent.EventInterface.Subscribe (fun args ->
00:00:34 verbose #676 > >         testEvent.AddCall $"testEvent.EventInterface.Subscribe({args})"
00:00:34 verbose #677 > >     )
00:00:34 verbose #678 > >     testEvent.AddCall "3"
00:00:34 verbose #679 > >     do! child
00:00:34 verbose #680 > >     testEvent.AddCall "4"
00:00:34 verbose #681 > > }
00:00:34 verbose #682 > > |> Async.runWithTimeout 300
00:00:34 verbose #683 > > |> _assertEqual None
00:00:34 verbose #684 > >
00:00:34 verbose #685 > > testEvent.Calls
00:00:34 verbose #686 > > |> _assertEqual [[ "1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3";
00:00:34 verbose #687 > > "RemoveHandler"; "IObservable.Dispose" ]]
00:00:34 verbose #688 > >
00:00:34 verbose #689 > > ╭─[ 373.16ms - stdout ]────────────────────────────────────────────────────────╮
00:00:34 verbose #690 > > │ 00:00:01   debug #2 runWithTimeoutAsync / timeout: 300                  │
00:00:34 verbose #691 > > │ <null>                                                                       │
00:00:34 verbose #692 > > │                                                                              │
00:00:34 verbose #693 > > │ ["1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3"; "RemoveHandler";      │
00:00:34 verbose #694 > > │ "IObservable.Dispose"]                                                       │
00:00:34 verbose #695 > > │                                                                              │
00:00:34 verbose #696 > > │                                                                              │
00:00:34 verbose #697 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:34 verbose #698 > >
00:00:34 verbose #699 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:34 verbose #700 > > //// test
00:00:34 verbose #701 > >
00:00:34 verbose #702 > > let testEvent = TestEvent ()
00:00:34 verbose #703 > >
00:00:34 verbose #704 > > async {
00:00:34 verbose #705 > >     testEvent.AddCall "1"
00:00:34 verbose #706 > >     let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild
00:00:34 verbose #707 > >     do! testEvent.WaitCall "AddHandler"
00:00:34 verbose #708 > >     testEvent.AddCall "2"
00:00:34 verbose #709 > >     use _ = testEvent.EventInterface.Subscribe (fun args ->
00:00:34 verbose #710 > >         async {
00:00:34 verbose #711 > >             do! testEvent.WaitCall "TestEvent.Iter(0: System.Exception: error)"
00:00:34 verbose #712 > >             testEvent.AddCall
00:00:34 verbose #713 > > $"testEvent.EventInterface.Subscribe({args.GetException () |>
00:00:34 verbose #714 > > SpiralSm.format_exception})"
00:00:34 verbose #715 > >         }
00:00:34 verbose #716 > >         |> Async.RunSynchronously
00:00:34 verbose #717 > >     )
00:00:34 verbose #718 > >     testEvent.AddCall "3"
00:00:34 verbose #719 > >     testEvent.Event.Trigger (null, ErrorEventArgs (Exception "error"))
00:00:34 verbose #720 > >     testEvent.AddCall "4"
00:00:34 verbose #721 > >     do! child
00:00:34 verbose #722 > >     testEvent.AddCall "5"
00:00:34 verbose #723 > > }
00:00:34 verbose #724 > > |> Async.runWithTimeout 300
00:00:34 verbose #725 > > |> _assertEqual None
00:00:34 verbose #726 > >
00:00:34 verbose #727 > > testEvent.Calls
00:00:34 verbose #728 > > |> _assertEqual [[
00:00:34 verbose #729 > >     "1"
00:00:34 verbose #730 > >     "AddHandler"
00:00:34 verbose #731 > >     "2"
00:00:34 verbose #732 > >     "IObservable.Subscribe"
00:00:34 verbose #733 > >     "3"
00:00:34 verbose #734 > >     "TestEvent.Subscribe(System.Exception: error)"
00:00:34 verbose #735 > >     "TestEvent.Iter(0: System.Exception: error)"
00:00:34 verbose #736 > >     "testEvent.EventInterface.Subscribe(System.Exception: error)"
00:00:34 verbose #737 > >     "4"
00:00:34 verbose #738 > >     "RemoveHandler"
00:00:34 verbose #739 > >     "IObservable.Dispose"
00:00:34 verbose #740 > > ]]
00:00:34 verbose #741 > >
00:00:34 verbose #742 > > ╭─[ 380.85ms - stdout ]────────────────────────────────────────────────────────╮
00:00:34 verbose #743 > > │ 00:00:02   debug #3 runWithTimeoutAsync / timeout: 300                  │
00:00:34 verbose #744 > > │ <null>                                                                       │
00:00:34 verbose #745 > > │                                                                              │
00:00:34 verbose #746 > > │ ["1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3";                       │
00:00:34 verbose #747 > > │ "TestEvent.Subscribe(System.Exception: error)";                              │
00:00:34 verbose #748 > > │  "TestEvent.Iter(0: System.Exception: error)";                               │
00:00:34 verbose #749 > > │ "testEvent.EventInterface.Subscribe(System.Exception: error)"; "4";          │
00:00:34 verbose #750 > > │  "RemoveHandler"; "IObservable.Dispose"]                                     │
00:00:34 verbose #751 > > │                                                                              │
00:00:34 verbose #752 > > │                                                                              │
00:00:34 verbose #753 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:34 verbose #754 > >
00:00:34 verbose #755 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:34 verbose #756 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:34 verbose #757 > > │ ## subscribeToken                                                            │
00:00:34 verbose #758 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:34 verbose #759 > >
00:00:34 verbose #760 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:34 verbose #761 > > let subscribeToken (token : System.Threading.CancellationToken) =
00:00:34 verbose #762 > >     let tcs = new System.Threading.Tasks.TaskCompletionSource ()
00:00:34 verbose #763 > >     System.Action tcs.SetResult |> token.Register |> ignore
00:00:34 verbose #764 > >     let start = System.DateTime.Now.Ticks
00:00:34 verbose #765 > >     FSharp.Control.AsyncSeq.unfoldAsync
00:00:34 verbose #766 > >         (fun () -> async {
00:00:34 verbose #767 > >             do! tcs.Task |> Async.AwaitTask
00:00:34 verbose #768 > >             return Some (System.DateTime.Now.Ticks - start, ())
00:00:34 verbose #769 > >         })
00:00:34 verbose #770 > >         ()
00:00:34 verbose #771 > >
00:00:34 verbose #772 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:34 verbose #773 > > //// test
00:00:34 verbose #774 > >
00:00:34 verbose #775 > > let cts = new System.Threading.CancellationTokenSource ()
00:00:34 verbose #776 > >
00:00:34 verbose #777 > > async {
00:00:34 verbose #778 > >     let! child =
00:00:34 verbose #779 > >         cts.Token
00:00:34 verbose #780 > >         |> subscribeToken
00:00:34 verbose #781 > >         |> FSharp.Control.AsyncSeq.tryFirst
00:00:34 verbose #782 > >         |> Async.StartChild
00:00:34 verbose #783 > >
00:00:34 verbose #784 > >     do! Async.Sleep 100
00:00:34 verbose #785 > >     cts.Cancel ()
00:00:34 verbose #786 > >     return! child
00:00:34 verbose #787 > > }
00:00:34 verbose #788 > > |> Async.RunSynchronously
00:00:34 verbose #789 > > |> Option.get
00:00:34 verbose #790 > > |> fun x -> x > 900000
00:00:34 verbose #791 > > |> _assertEqual true
00:00:35 verbose #792 > >
00:00:35 verbose #793 > > ╭─[ 133.48ms - stdout ]────────────────────────────────────────────────────────╮
00:00:35 verbose #794 > > │ true                                                                         │
00:00:35 verbose #795 > > │                                                                              │
00:00:35 verbose #796 > > │                                                                              │
00:00:35 verbose #797 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:35 verbose #798 > 00:00:16 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 10886 }
00:00:35 verbose #799 > 00:00:16   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:00:35 verbose #800 >     "nbconvert",
00:00:35 verbose #801 >     "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb",
00:00:35 verbose #802 >     "--to",
00:00:35 verbose #803 >     "html",
00:00:35 verbose #804 >     "--HTMLExporter.theme=dark",
00:00:35 verbose #805 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:35 verbose #806 > 00:00:16 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb to html
00:00:35 verbose #807 > 00:00:16 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:35 verbose #808 > 00:00:16 verbose #7 !   validate(nb)
00:00:36 verbose #809 > 00:00:17 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:36 verbose #810 > 00:00:17 verbose #9 !   return _pygments_highlight(
00:00:36 verbose #811 > 00:00:17 verbose #10 ! [NbConvertApp] Writing 303112 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.html
00:00:36 verbose #812 > 00:00:17 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 900 }
00:00:36 verbose #813 > 00:00:17   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 900 }
00:00:36 verbose #814 > 00:00:17   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:00:36 verbose #815 >     "-c",
00:00:36 verbose #816 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:00:36 verbose #817 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:36 verbose #818 > 00:00:17 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:36 verbose #819 > 00:00:17   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:36 verbose #820 > 00:00:17   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 11845 }
00:00:36   debug #821 runtime.execute_with_options_async / { exit_code = 0; output_length = 15205 }
00:00:36   debug #2 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path AsyncSeq.dib --retries 3
00:00:36   debug #822 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path Common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:36 verbose #823 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Common.dib", "--retries", "3"])) }
00:00:36 verbose #824 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:00:36 verbose #825 >     "repl",
00:00:36 verbose #826 >     "--exit-after-run",
00:00:36 verbose #827 >     "--run",
00:00:36 verbose #828 >     "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib",
00:00:36 verbose #829 >     "--output-path",
00:00:36 verbose #830 >     "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb",
00:00:36 verbose #831 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:38 verbose #832 > >
00:00:38 verbose #833 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:38 verbose #834 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:38 verbose #835 > > │ # Common (Polyglot)                                                          │
00:00:38 verbose #836 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:50 verbose #837 > >
00:00:50 verbose #838 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:50 verbose #839 > > #if !INTERACTIVE
00:00:50 verbose #840 > > open Lib
00:00:50 verbose #841 > > #endif
00:00:50 verbose #842 > >
00:00:50 verbose #843 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:50 verbose #844 > > let nl = System.Environment.NewLine
00:00:50 verbose #845 > > let q = @""""
00:00:50 verbose #846 > >
00:00:50 verbose #847 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:50 verbose #848 > > let inline cons head tail = head :: tail
00:00:50 verbose #849 > >
00:00:50 verbose #850 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:50 verbose #851 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:50 verbose #852 > > │ ## memoize                                                                   │
00:00:50 verbose #853 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:50 verbose #854 > >
00:00:50 verbose #855 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:50 verbose #856 > > let inline memoize fn =
00:00:50 verbose #857 > >     let result = lazy fn ()
00:00:50 verbose #858 > >     fun () -> result.Value
00:00:50 verbose #859 > >
00:00:50 verbose #860 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:50 verbose #861 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:50 verbose #862 > > │ ## TraceLevel                                                                │
00:00:50 verbose #863 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:50 verbose #864 > >
00:00:50 verbose #865 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:50 verbose #866 > > type TraceLevel =
00:00:50 verbose #867 > >     | Verbose
00:00:50 verbose #868 > >     | Debug
00:00:50 verbose #869 > >     | Info
00:00:50 verbose #870 > >     | Warning
00:00:50 verbose #871 > >     | Critical
00:00:50 verbose #872 > >
00:00:50 verbose #873 > > let inline _locals () = ""
00:00:50 verbose #874 > >
00:00:50 verbose #875 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:50 verbose #876 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:50 verbose #877 > > │ ## trace                                                                     │
00:00:50 verbose #878 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:50 verbose #879 > >
00:00:50 verbose #880 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:50 verbose #881 > > let to_trace_level = function
00:00:50 verbose #882 > >     | Verbose -> SpiralTrace.TraceLevel.US0_0
00:00:50 verbose #883 > >     | Debug -> SpiralTrace.TraceLevel.US0_1
00:00:50 verbose #884 > >     | Info -> SpiralTrace.TraceLevel.US0_2
00:00:50 verbose #885 > >     | Warning -> SpiralTrace.TraceLevel.US0_3
00:00:50 verbose #886 > >     | Critical -> SpiralTrace.TraceLevel.US0_4
00:00:50 verbose #887 > >
00:00:50 verbose #888 > > let trace level fn locals =
00:00:50 verbose #889 > >     let level = level |> to_trace_level
00:00:50 verbose #890 > >     SpiralTrace.trace level fn locals
00:00:50 verbose #891 > >
00:00:50 verbose #892 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:50 verbose #893 > > //// test
00:00:50 verbose #894 > >
00:00:50 verbose #895 > > trace Debug (fun () -> "test") _locals
00:00:50 verbose #896 > >
00:00:50 verbose #897 > > ╭─[ 29.31ms - stdout ]─────────────────────────────────────────────────────────╮
00:00:50 verbose #898 > > │ 00:00:00   debug #1 test                                                │
00:00:50 verbose #899 > > │                                                                              │
00:00:50 verbose #900 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:50 verbose #901 > 00:00:14 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 3413 }
00:00:50 verbose #902 > 00:00:14   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:00:50 verbose #903 >     "nbconvert",
00:00:50 verbose #904 >     "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb",
00:00:50 verbose #905 >     "--to",
00:00:50 verbose #906 >     "html",
00:00:50 verbose #907 >     "--HTMLExporter.theme=dark",
00:00:50 verbose #908 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:51 verbose #909 > 00:00:14 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb to html
00:00:51 verbose #910 > 00:00:14 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:51 verbose #911 > 00:00:14 verbose #7 !   validate(nb)
00:00:51 verbose #912 > 00:00:15 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:51 verbose #913 > 00:00:15 verbose #9 !   return _pygments_highlight(
00:00:52 verbose #914 > 00:00:15 verbose #10 ! [NbConvertApp] Writing 280733 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.html
00:00:52 verbose #915 > 00:00:15 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 }
00:00:52 verbose #916 > 00:00:15   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 }
00:00:52 verbose #917 > 00:00:15   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:00:52 verbose #918 >     "-c",
00:00:52 verbose #919 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:00:52 verbose #920 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:52 verbose #921 > 00:00:15 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:52 verbose #922 > 00:00:15   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:52 verbose #923 > 00:00:15   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 4368 }
00:00:52   debug #924 runtime.execute_with_options_async / { exit_code = 0; output_length = 7348 }
00:00:52   debug #3 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path Common.dib --retries 3
00:00:52   debug #925 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path CommonFSharp.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:52 verbose #926 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "CommonFSharp.dib", "--retries", "3"])) }
00:00:52 verbose #927 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:00:52 verbose #928 >     "repl",
00:00:52 verbose #929 >     "--exit-after-run",
00:00:52 verbose #930 >     "--run",
00:00:52 verbose #931 >     "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib",
00:00:52 verbose #932 >     "--output-path",
00:00:52 verbose #933 >     "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb",
00:00:52 verbose #934 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:53 verbose #935 > >
00:00:53 verbose #936 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:53 verbose #937 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:53 verbose #938 > > │ # CommonFSharp (Polyglot)                                                    │
00:00:53 verbose #939 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:06 verbose #940 > >
00:01:06 verbose #941 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:06 verbose #942 > > open Common
00:01:06 verbose #943 > >
00:01:06 verbose #944 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:06 verbose #945 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:06 verbose #946 > > │ ## getUnionCaseName                                                          │
00:01:06 verbose #947 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:06 verbose #948 > >
00:01:06 verbose #949 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:06 verbose #950 > > let inline getUnionCaseName<'T> (x: 'T) =
00:01:06 verbose #951 > >     match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with
00:01:06 verbose #952 > >     | case, _ -> case.Name
00:01:06 verbose #953 > >
00:01:06 verbose #954 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:06 verbose #955 > > //// test
00:01:06 verbose #956 > >
00:01:06 verbose #957 > > TraceLevel.Critical
00:01:06 verbose #958 > > |> getUnionCaseName
00:01:06 verbose #959 > > |> _assertEqual (nameof TraceLevel.Critical)
00:01:06 verbose #960 > >
00:01:06 verbose #961 > > ╭─[ 47.27ms - stdout ]─────────────────────────────────────────────────────────╮
00:01:06 verbose #962 > > │ "Critical"                                                                   │
00:01:06 verbose #963 > > │                                                                              │
00:01:06 verbose #964 > > │                                                                              │
00:01:06 verbose #965 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:06 verbose #966 > 00:00:13 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 1845 }
00:01:06 verbose #967 > 00:00:13   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:01:06 verbose #968 >     "nbconvert",
00:01:06 verbose #969 >     "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb",
00:01:06 verbose #970 >     "--to",
00:01:06 verbose #971 >     "html",
00:01:06 verbose #972 >     "--HTMLExporter.theme=dark",
00:01:06 verbose #973 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:06 verbose #974 > 00:00:14 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb to html
00:01:06 verbose #975 > 00:00:14 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:06 verbose #976 > 00:00:14 verbose #7 !   validate(nb)
00:01:07 verbose #977 > 00:00:14 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:07 verbose #978 > 00:00:14 verbose #9 !   return _pygments_highlight(
00:01:07 verbose #979 > 00:00:14 verbose #10 ! [NbConvertApp] Writing 275590 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.html
00:01:07 verbose #980 > 00:00:14 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 908 }
00:01:07 verbose #981 > 00:00:14   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 908 }
00:01:07 verbose #982 > 00:00:14   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:01:07 verbose #983 >     "-c",
00:01:07 verbose #984 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:01:07 verbose #985 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:07 verbose #986 > 00:00:15 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:07 verbose #987 > 00:00:15   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:07 verbose #988 > 00:00:15   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 2812 }
00:01:07   debug #989 runtime.execute_with_options_async / { exit_code = 0; output_length = 5770 }
00:01:07   debug #4 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path CommonFSharp.dib --retries 3
00:01:07   debug #990 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path FileSystem.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:07 verbose #991 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "FileSystem.dib", "--retries", "3"])) }
00:01:07 verbose #992 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:01:07 verbose #993 >     "repl",
00:01:07 verbose #994 >     "--exit-after-run",
00:01:07 verbose #995 >     "--run",
00:01:07 verbose #996 >     "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib",
00:01:07 verbose #997 >     "--output-path",
00:01:07 verbose #998 >     "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb",
00:01:07 verbose #999 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:01:09 verbose #1000 > >
00:01:09 verbose #1001 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:09 verbose #1002 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:09 verbose #1003 > > │ # FileSystem (Polyglot)                                                      │
00:01:09 verbose #1004 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:11 verbose #1005 > >
00:01:11 verbose #1006 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:11 verbose #1007 > > #r
00:01:11 verbose #1008 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
00:01:11 verbose #1009 > > dard2.1/FSharp.Control.AsyncSeq.dll"
00:01:11 verbose #1010 > > #r
00:01:11 verbose #1011 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
00:01:11 verbose #1012 > > 0/System.Reactive.dll"
00:01:11 verbose #1013 > > #r
00:01:11 verbose #1014 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib
00:01:11 verbose #1015 > > netstandard2.0/System.Reactive.Linq.dll"
00:01:11 verbose #1016 > > #r
00:01:11 verbose #1017 > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
00:01:23 verbose #1018 > >
00:01:23 verbose #1019 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:23 verbose #1020 > > #if !INTERACTIVE
00:01:23 verbose #1021 > > open Lib
00:01:23 verbose #1022 > > #endif
00:01:23 verbose #1023 > >
00:01:23 verbose #1024 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:23 verbose #1025 > > open Common
00:01:23 verbose #1026 > > open SpiralFileSystem.Operators
00:01:23 verbose #1027 > >
00:01:23 verbose #1028 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:23 verbose #1029 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:23 verbose #1030 > > │ ## watchDirectory                                                            │
00:01:23 verbose #1031 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:23 verbose #1032 > >
00:01:23 verbose #1033 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:23 verbose #1034 > > [[<RequireQualifiedAccess>]]
00:01:23 verbose #1035 > > type FileSystemChangeType =
00:01:23 verbose #1036 > >     | Failure
00:01:23 verbose #1037 > >     | Changed
00:01:23 verbose #1038 > >     | Created
00:01:23 verbose #1039 > >     | Deleted
00:01:23 verbose #1040 > >     | Renamed
00:01:23 verbose #1041 > >
00:01:23 verbose #1042 > > [[<RequireQualifiedAccess>]]
00:01:23 verbose #1043 > > type FileSystemChange =
00:01:23 verbose #1044 > >     | Failure of exn: exn
00:01:23 verbose #1045 > >     | Changed of path: string * content: string option
00:01:23 verbose #1046 > >     | Created of path: string * content: string option
00:01:23 verbose #1047 > >     | Deleted of path: string
00:01:23 verbose #1048 > >     | Renamed of oldPath: string * (string * string option)
00:01:23 verbose #1049 > >
00:01:23 verbose #1050 > >
00:01:23 verbose #1051 > > let inline watchDirectoryWithFilter filter shouldReadContent path =
00:01:23 verbose #1052 > >     let fullPath = path |> System.IO.Path.GetFullPath
00:01:23 verbose #1053 > >     let _locals () = $"filter: {filter} / {_locals ()}"
00:01:23 verbose #1054 > >
00:01:23 verbose #1055 > >     let watcher =
00:01:23 verbose #1056 > >         new System.IO.FileSystemWatcher (
00:01:23 verbose #1057 > >             Path = fullPath,
00:01:23 verbose #1058 > >             NotifyFilter = filter,
00:01:23 verbose #1059 > >             EnableRaisingEvents = true,
00:01:23 verbose #1060 > >             IncludeSubdirectories = true
00:01:23 verbose #1061 > >         )
00:01:23 verbose #1062 > >
00:01:23 verbose #1063 > >     let inline getEventPath (path : string) =
00:01:23 verbose #1064 > >         path |> SpiralSm.trim |> SpiralSm.replace fullPath "" |>
00:01:23 verbose #1065 > > SpiralSm.trim_start [[| '/'; '\\' |]]
00:01:23 verbose #1066 > >
00:01:23 verbose #1067 > >     let inline ticks () =
00:01:23 verbose #1068 > >         System.DateTime.UtcNow.Ticks
00:01:23 verbose #1069 > >
00:01:23 verbose #1070 > >     let changedStream =
00:01:23 verbose #1071 > >         AsyncSeq.subscribeEvent
00:01:23 verbose #1072 > >             watcher.Changed
00:01:23 verbose #1073 > >             (fun event ->
00:01:23 verbose #1074 > >                 ticks (),
00:01:23 verbose #1075 > >                 [[ FileSystemChange.Changed (getEventPath event.FullPath, None)
00:01:23 verbose #1076 > > ]]
00:01:23 verbose #1077 > >             )
00:01:23 verbose #1078 > >
00:01:23 verbose #1079 > >     let deletedStream =
00:01:23 verbose #1080 > >         AsyncSeq.subscribeEvent
00:01:23 verbose #1081 > >             watcher.Deleted
00:01:23 verbose #1082 > >             (fun event ->
00:01:23 verbose #1083 > >                 ticks (),
00:01:23 verbose #1084 > >                 [[ FileSystemChange.Deleted (getEventPath event.FullPath) ]]
00:01:23 verbose #1085 > >             )
00:01:23 verbose #1086 > >
00:01:23 verbose #1087 > >     let createdStream =
00:01:23 verbose #1088 > >         AsyncSeq.subscribeEvent
00:01:23 verbose #1089 > >             watcher.Created
00:01:23 verbose #1090 > >             (fun event ->
00:01:23 verbose #1091 > >                 let path = getEventPath event.FullPath
00:01:23 verbose #1092 > >                 ticks (), [[
00:01:23 verbose #1093 > >                     FileSystemChange.Created (path, None)
00:01:23 verbose #1094 > >                     if SpiralPlatform.is_windows () then
00:01:23 verbose #1095 > >                         FileSystemChange.Changed (path, None)
00:01:23 verbose #1096 > >                 ]])
00:01:23 verbose #1097 > >
00:01:23 verbose #1098 > >     let renamedStream =
00:01:23 verbose #1099 > >         AsyncSeq.subscribeEvent
00:01:23 verbose #1100 > >             watcher.Renamed
00:01:23 verbose #1101 > >             (fun event ->
00:01:23 verbose #1102 > >                 ticks (), [[
00:01:23 verbose #1103 > >                     FileSystemChange.Renamed (
00:01:23 verbose #1104 > >                         getEventPath event.OldFullPath,
00:01:23 verbose #1105 > >                         (getEventPath event.FullPath, None)
00:01:23 verbose #1106 > >                     )
00:01:23 verbose #1107 > >                 ]]
00:01:23 verbose #1108 > >             )
00:01:23 verbose #1109 > >
00:01:23 verbose #1110 > >     let failureStream =
00:01:23 verbose #1111 > >         AsyncSeq.subscribeEvent
00:01:23 verbose #1112 > >             watcher.Error
00:01:23 verbose #1113 > >             (fun event -> ticks (), [[ FileSystemChange.Failure
00:01:23 verbose #1114 > > (event.GetException ()) ]])
00:01:23 verbose #1115 > >
00:01:23 verbose #1116 > >     let stream =
00:01:23 verbose #1117 > >         [[
00:01:23 verbose #1118 > >             changedStream
00:01:23 verbose #1119 > >             deletedStream
00:01:23 verbose #1120 > >             createdStream
00:01:23 verbose #1121 > >             renamedStream
00:01:23 verbose #1122 > >             failureStream
00:01:23 verbose #1123 > >         ]]
00:01:23 verbose #1124 > >         |> FSharp.Control.AsyncSeq.mergeAll
00:01:23 verbose #1125 > >         |> FSharp.Control.AsyncSeq.map (fun (t, events) ->
00:01:23 verbose #1126 > >             events
00:01:23 verbose #1127 > >             |> List.fold
00:01:23 verbose #1128 > >                 (fun (i, events) event ->
00:01:23 verbose #1129 > >                     i + 1L,
00:01:23 verbose #1130 > >                     (t + i, event) :: events)
00:01:23 verbose #1131 > >                 (0L, [[]])
00:01:23 verbose #1132 > >             |> snd
00:01:23 verbose #1133 > >             |> List.rev
00:01:23 verbose #1134 > >         )
00:01:23 verbose #1135 > >         |> FSharp.Control.AsyncSeq.concatSeq
00:01:23 verbose #1136 > >         |> FSharp.Control.AsyncSeq.mapAsyncParallel (fun (t, event) -> async {
00:01:23 verbose #1137 > >             match shouldReadContent event, event with
00:01:23 verbose #1138 > >             | true, FileSystemChange.Changed (path, _) ->
00:01:23 verbose #1139 > >                 do! Async.Sleep 5
00:01:23 verbose #1140 > >                 let! content = fullPath </> path |>
00:01:23 verbose #1141 > > SpiralFileSystem.read_all_text_retry_async
00:01:23 verbose #1142 > >                 return t, FileSystemChange.Changed (path, content)
00:01:23 verbose #1143 > >             | true, FileSystemChange.Created (path, _) ->
00:01:23 verbose #1144 > >                 do! Async.Sleep 5
00:01:23 verbose #1145 > >                 let! content = fullPath </> path |>
00:01:23 verbose #1146 > > SpiralFileSystem.read_all_text_retry_async
00:01:23 verbose #1147 > >                 return t, FileSystemChange.Created (path, content)
00:01:23 verbose #1148 > >             | true, FileSystemChange.Renamed (oldPath, (newPath, _)) ->
00:01:23 verbose #1149 > >                 let! content = fullPath </> newPath |>
00:01:23 verbose #1150 > > SpiralFileSystem.read_all_text_retry_async
00:01:23 verbose #1151 > >                 return t, FileSystemChange.Renamed (oldPath, (newPath, content))
00:01:23 verbose #1152 > >             | _ -> return t, event
00:01:23 verbose #1153 > >         })
00:01:23 verbose #1154 > >
00:01:23 verbose #1155 > >     let disposable =
00:01:23 verbose #1156 > >         new_disposable (fun () ->
00:01:23 verbose #1157 > >             trace Debug (fun () -> "FileSystem.watchWithFilter / Disposing watch
00:01:23 verbose #1158 > > stream") _locals
00:01:23 verbose #1159 > >             watcher.EnableRaisingEvents <- false
00:01:23 verbose #1160 > >             watcher.Dispose ()
00:01:23 verbose #1161 > >         )
00:01:23 verbose #1162 > >
00:01:23 verbose #1163 > >     stream, disposable
00:01:23 verbose #1164 > >
00:01:23 verbose #1165 > > let inline watchDirectory path =
00:01:23 verbose #1166 > >     watchDirectoryWithFilter
00:01:23 verbose #1167 > >         (System.IO.NotifyFilters.FileName
00:01:23 verbose #1168 > >         // ||| System.IO.NotifyFilters.DirectoryName
00:01:23 verbose #1169 > >         // ||| System.IO.NotifyFilters.Attributes
00:01:23 verbose #1170 > >         //// ||| System.IO.NotifyFilters.Size
00:01:23 verbose #1171 > >         ||| System.IO.NotifyFilters.LastWrite
00:01:23 verbose #1172 > >         //// ||| System.IO.NotifyFilters.LastAccess
00:01:23 verbose #1173 > >         // ||| System.IO.NotifyFilters.CreationTime
00:01:23 verbose #1174 > >         // ||| System.IO.NotifyFilters.Security
00:01:23 verbose #1175 > >         )
00:01:23 verbose #1176 > >         path
00:01:23 verbose #1177 > >
00:01:23 verbose #1178 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:23 verbose #1179 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:23 verbose #1180 > > │ ### testEventsRaw (test)                                                     │
00:01:23 verbose #1181 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:23 verbose #1182 > >
00:01:23 verbose #1183 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:23 verbose #1184 > > //// test
00:01:23 verbose #1185 > >
00:01:23 verbose #1186 > > let inline testEventsRaw
00:01:23 verbose #1187 > >     (watchFn : (_ -> bool) -> string -> FSharp.Control.AsyncSeq<int64 *
00:01:23 verbose #1188 > > FileSystemChange> * IDisposable)
00:01:23 verbose #1189 > >     write
00:01:23 verbose #1190 > >     =
00:01:23 verbose #1191 > >     let struct (tempDir, tempDisposable) =
00:01:23 verbose #1192 > >         "FileSystem.testEventsRaw"
00:01:23 verbose #1193 > >         |> SpiralCrypto.hash_text
00:01:23 verbose #1194 > >         |> SpiralFileSystem.create_temp_dir'
00:01:23 verbose #1195 > >     let stream, disposable = watchFn (fun _ -> true) tempDir
00:01:23 verbose #1196 > >
00:01:23 verbose #1197 > >     let events = System.Collections.Concurrent.ConcurrentBag ()
00:01:23 verbose #1198 > >
00:01:23 verbose #1199 > >     let inline iter () =
00:01:23 verbose #1200 > >         stream
00:01:23 verbose #1201 > >         |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun event -> async {
00:01:23 verbose #1202 > > events.Add event })
00:01:23 verbose #1203 > >
00:01:23 verbose #1204 > >     let run = async {
00:01:23 verbose #1205 > >         let! _ = iter () |> Async.StartChild
00:01:23 verbose #1206 > >         do! Async.Sleep 250
00:01:23 verbose #1207 > >         return! write tempDir
00:01:23 verbose #1208 > >     }
00:01:23 verbose #1209 > >
00:01:23 verbose #1210 > >     try
00:01:23 verbose #1211 > >         run
00:01:23 verbose #1212 > >         |> Async.runWithTimeout 60000
00:01:23 verbose #1213 > >         |> _assertEqual (Some ())
00:01:23 verbose #1214 > >     finally
00:01:23 verbose #1215 > >         disposable.Dispose ()
00:01:23 verbose #1216 > >         tempDisposable.Dispose ()
00:01:23 verbose #1217 > >
00:01:23 verbose #1218 > >     let eventsLog =
00:01:23 verbose #1219 > >         events
00:01:23 verbose #1220 > >         |> Seq.toList
00:01:23 verbose #1221 > >         |> List.sortBy fst
00:01:23 verbose #1222 > >         |> List.fold
00:01:23 verbose #1223 > >             (fun (prev, acc) (ticks, event) ->
00:01:23 verbose #1224 > >                 ticks, (ticks, (if prev = 0L then 0L else ticks - prev), event)
00:01:23 verbose #1225 > > :: acc
00:01:23 verbose #1226 > >             )
00:01:23 verbose #1227 > >             (0L, [[]])
00:01:23 verbose #1228 > >         |> snd
00:01:23 verbose #1229 > >         |> List.rev
00:01:23 verbose #1230 > >         |> List.map (fun (diff, n, event) -> $"{n} / {diff} / {event}" |>
00:01:23 verbose #1231 > > SpiralSm.ellipsis_end 100L)
00:01:23 verbose #1232 > >         |> SpiralSm.concat "\n"
00:01:23 verbose #1233 > >     let _locals () = $"eventsLog: \n{eventsLog} / {_locals ()}"
00:01:23 verbose #1234 > >     trace Debug (fun () -> "FileSystem.testEventsRaw") _locals
00:01:23 verbose #1235 > >
00:01:23 verbose #1236 > >     events
00:01:23 verbose #1237 > >     |> Seq.toList
00:01:23 verbose #1238 > >     |> List.sortBy fst
00:01:23 verbose #1239 > >     |> List.map snd
00:01:23 verbose #1240 > >     |> List.fold
00:01:23 verbose #1241 > >         (fun acc event ->
00:01:23 verbose #1242 > >             match acc, event with
00:01:23 verbose #1243 > >             | FileSystemChange.Changed (lastPath, Some lastContent) as lastEvent
00:01:23 verbose #1244 > > :: acc,
00:01:23 verbose #1245 > >                 FileSystemChange.Changed (path, Some content)
00:01:23 verbose #1246 > >                 when lastPath = path && content |> SpiralSm.starts_with
00:01:23 verbose #1247 > > lastContent
00:01:23 verbose #1248 > >                 ->
00:01:23 verbose #1249 > >                 event :: acc
00:01:23 verbose #1250 > >             | _ -> event :: acc
00:01:23 verbose #1251 > >         )
00:01:23 verbose #1252 > >         [[]]
00:01:23 verbose #1253 > >     |> List.rev
00:01:23 verbose #1254 > >
00:01:23 verbose #1255 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:23 verbose #1256 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:23 verbose #1257 > > │ #### fast (test)                                                             │
00:01:23 verbose #1258 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:23 verbose #1259 > >
00:01:23 verbose #1260 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:23 verbose #1261 > > //// test
00:01:23 verbose #1262 > >
00:01:23 verbose #1263 > > let inline write path = async {
00:01:23 verbose #1264 > >     let n = 2
00:01:23 verbose #1265 > >
00:01:23 verbose #1266 > >     for i = 1 to n do
00:01:23 verbose #1267 > >         do! $"a{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:23 verbose #1268 > > $"file{i}.txt")
00:01:23 verbose #1269 > >
00:01:23 verbose #1270 > >     do! Async.Sleep 250
00:01:23 verbose #1271 > >
00:01:23 verbose #1272 > >     for i = 1 to n do
00:01:23 verbose #1273 > >         do! $"b{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:23 verbose #1274 > > $"file{i}.txt")
00:01:23 verbose #1275 > >
00:01:23 verbose #1276 > >     do! Async.Sleep 250
00:01:23 verbose #1277 > >
00:01:23 verbose #1278 > >     for i = 1 to n do
00:01:23 verbose #1279 > >         do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path
00:01:23 verbose #1280 > > </> $"file_{i}.txt") |> Async.Ignore
00:01:23 verbose #1281 > >
00:01:23 verbose #1282 > >     do! Async.Sleep 250
00:01:23 verbose #1283 > >
00:01:23 verbose #1284 > >     for i = 1 to n do
00:01:23 verbose #1285 > >         do! $"c{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:23 verbose #1286 > > $"file_{i}.txt")
00:01:23 verbose #1287 > >
00:01:23 verbose #1288 > >     do! Async.Sleep 250
00:01:23 verbose #1289 > >
00:01:23 verbose #1290 > >     for i = 1 to n do
00:01:23 verbose #1291 > >         do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |>
00:01:23 verbose #1292 > > Async.Ignore
00:01:23 verbose #1293 > >
00:01:23 verbose #1294 > >     do! Async.Sleep 250
00:01:23 verbose #1295 > > }
00:01:23 verbose #1296 > >
00:01:23 verbose #1297 > > let inline run () =
00:01:23 verbose #1298 > >     let events = testEventsRaw watchDirectory write
00:01:23 verbose #1299 > >
00:01:23 verbose #1300 > >     events
00:01:23 verbose #1301 > >     |> _sequenceEqual [[
00:01:23 verbose #1302 > >         FileSystemChange.Created ("file1.txt", Some "a1")
00:01:23 verbose #1303 > >         FileSystemChange.Changed ("file1.txt", Some "a1")
00:01:23 verbose #1304 > >         FileSystemChange.Created ("file2.txt", Some "a2")
00:01:23 verbose #1305 > >         FileSystemChange.Changed ("file2.txt", Some "a2")
00:01:23 verbose #1306 > >
00:01:23 verbose #1307 > >         FileSystemChange.Changed ("file1.txt", Some "b1")
00:01:23 verbose #1308 > >         FileSystemChange.Changed ("file2.txt", Some "b2")
00:01:23 verbose #1309 > >
00:01:23 verbose #1310 > >         FileSystemChange.Renamed ("file1.txt", ("file_1.txt", Some "b1"))
00:01:23 verbose #1311 > >         FileSystemChange.Renamed ("file2.txt", ("file_2.txt", Some "b2"))
00:01:23 verbose #1312 > >
00:01:23 verbose #1313 > >         FileSystemChange.Changed ("file_1.txt", Some "c1")
00:01:23 verbose #1314 > >         FileSystemChange.Changed ("file_2.txt", Some "c2")
00:01:23 verbose #1315 > >
00:01:23 verbose #1316 > >         FileSystemChange.Deleted "file_1.txt"
00:01:23 verbose #1317 > >         FileSystemChange.Deleted "file_2.txt"
00:01:23 verbose #1318 > >     ]]
00:01:23 verbose #1319 > >
00:01:23 verbose #1320 > > run
00:01:23 verbose #1321 > > |> retry_fn 3
00:01:23 verbose #1322 > > |> _assertEqual (Some ())
00:01:25 verbose #1323 > >
00:01:25 verbose #1324 > > ╭─[ 2.35s - stdout ]───────────────────────────────────────────────────────────╮
00:01:25 verbose #1325 > > │ Some ()                                                                      │
00:01:25 verbose #1326 > > │                                                                              │
00:01:25 verbose #1327 > > │ 00:00:03   debug #1 FileSystem.watchWithFilter / Disposing watch stream │
00:01:25 verbose #1328 > > │ / filter: FileName, LastWrite                                                │
00:01:25 verbose #1329 > > │ 00:00:03   debug #2 FileSystem.testEventsRaw / eventsLog:               │
00:01:25 verbose #1330 > > │ 0 / 638612294332230399 / Created ("file1.txt", Some "a1")                    │
00:01:25 verbose #1331 > > │ 12571 / 638612294332242970 / Changed ("file1.txt", Some "a1")                │
00:01:25 verbose #1332 > > │ 2164 / 638612294332245134 / Created ("file2.txt", Some "a2")                 │
00:01:25 verbose #1333 > > │ 48 / 638612294332245182 / Changed ("file2.txt", Some "a2")                   │
00:01:25 verbose #1334 > > │ 2484465 / 638612294334729647 / Changed ("file1.txt", Some "b1")              │
00:01:25 verbose #1335 > > │ 602 / 638612294334730249 / Changed ("file1.txt", Some "b1")                  │
00:01:25 verbose #1336 > > │ 4559 / 638612294334734808 / Changed ("file2.txt", Some "b2")                 │
00:01:25 verbose #1337 > > │ 213 / 638612294334735021 / Changed ("file2.txt", Some "b2")                  │
00:01:25 verbose #1338 > > │ 2554524 / 638612294337289545 / Renamed ("file1.txt", ("file_1.txt", Some     │
00:01:25 verbose #1339 > > │ "b1"))                                                                       │
00:01:25 verbose #1340 > > │ 5669 / 638612294337295214 / Renamed ("file2.txt", ("file_2.txt", Some "b2")) │
00:01:25 verbose #1341 > > │ 2528134 / 638612294339823348 / Changed ("file_1.txt", Some "c1")             │
00:01:25 verbose #1342 > > │ 808 / 638612294339824156 / Changed ("file_1.txt", Some "c1")                 │
00:01:25 verbose #1343 > > │ 3764 / 638612294339827920 / Changed ("file_2.txt", Some "c2")                │
00:01:25 verbose #1344 > > │ 337 / 638612294339828257 / Changed ("file_2.txt", Some "c2")                 │
00:01:25 verbose #1345 > > │ 2551734 / 638612294342379991 / Deleted "file_1.txt"                          │
00:01:25 verbose #1346 > > │ 1511 / 638612294342381502 / Deleted "file_2.txt"                             │
00:01:25 verbose #1347 > > │ [Created ("file1.txt", Some "a1"); Changed ("file1.txt", Some "a1"); Created │
00:01:25 verbose #1348 > > │ ("file2.txt", Some "a2");                                                    │
00:01:25 verbose #1349 > > │  Changed ("file2.txt", Some "a2"); Changed ("file1.txt", Some "b1"); Changed │
00:01:25 verbose #1350 > > │ ("file2.txt", Some "b2");                                                    │
00:01:25 verbose #1351 > > │  Renamed ("file1.txt", ("file_1.txt", Some "b1")); Renamed ("file2.txt",     │
00:01:25 verbose #1352 > > │ ("file_2.txt", Some "b2"));                                                  │
00:01:25 verbose #1353 > > │  Changed ("file_1.txt", Some "c1"); Changed ("file_2.txt", Some "c2");       │
00:01:25 verbose #1354 > > │ Deleted "file_1.txt"; Deleted "file_2.txt"]                                  │
00:01:25 verbose #1355 > > │                                                                              │
00:01:25 verbose #1356 > > │ Some ()                                                                      │
00:01:25 verbose #1357 > > │                                                                              │
00:01:25 verbose #1358 > > │                                                                              │
00:01:25 verbose #1359 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:25 verbose #1360 > >
00:01:25 verbose #1361 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:25 verbose #1362 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:25 verbose #1363 > > │ #### slow (test)                                                             │
00:01:25 verbose #1364 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:25 verbose #1365 > >
00:01:25 verbose #1366 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:25 verbose #1367 > > //// test
00:01:25 verbose #1368 > >
00:01:25 verbose #1369 > > let inline write path = async {
00:01:25 verbose #1370 > >     let n = 2
00:01:25 verbose #1371 > >
00:01:25 verbose #1372 > >     let contents =
00:01:25 verbose #1373 > >         [[ 1 .. n ]]
00:01:25 verbose #1374 > >         |> List.map (string >> String.replicate 1_000_000)
00:01:25 verbose #1375 > >
00:01:25 verbose #1376 > >     for i = 1 to n do
00:01:25 verbose #1377 > >         do! $"{contents.[[i - 1]]}a" |> SpiralFileSystem.write_all_text_async
00:01:25 verbose #1378 > > (path </> $"file{i}.txt")
00:01:25 verbose #1379 > >
00:01:25 verbose #1380 > >     do! Async.Sleep 1500
00:01:25 verbose #1381 > >
00:01:25 verbose #1382 > >     for i = 1 to n do
00:01:25 verbose #1383 > >         do! $"{contents.[[i - 1]]}b" |> SpiralFileSystem.write_all_text_async
00:01:25 verbose #1384 > > (path </> $"file{i}.txt")
00:01:25 verbose #1385 > >
00:01:25 verbose #1386 > >     do! Async.Sleep 1500
00:01:25 verbose #1387 > >
00:01:25 verbose #1388 > >     for i = 1 to n do
00:01:25 verbose #1389 > >         do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path
00:01:25 verbose #1390 > > </> $"file_{i}.txt") |> Async.Ignore
00:01:25 verbose #1391 > >
00:01:25 verbose #1392 > >     do! Async.Sleep 1500
00:01:25 verbose #1393 > >
00:01:25 verbose #1394 > >     for i = 1 to n do
00:01:25 verbose #1395 > >         do! $"{contents.[[i - 1]]}c" |> SpiralFileSystem.write_all_text_async
00:01:25 verbose #1396 > > (path </> $"file_{i}.txt")
00:01:25 verbose #1397 > >
00:01:25 verbose #1398 > >     do! Async.Sleep 1500
00:01:25 verbose #1399 > >
00:01:25 verbose #1400 > >     for i = 1 to n do
00:01:25 verbose #1401 > >         do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |>
00:01:25 verbose #1402 > > Async.Ignore
00:01:25 verbose #1403 > >
00:01:25 verbose #1404 > >     do! Async.Sleep 1500
00:01:25 verbose #1405 > > }
00:01:25 verbose #1406 > >
00:01:25 verbose #1407 > > let inline run () =
00:01:25 verbose #1408 > >     let events =
00:01:25 verbose #1409 > >         testEventsRaw watchDirectory write
00:01:25 verbose #1410 > >         |> List.map (function
00:01:25 verbose #1411 > >             | FileSystemChange.Changed (path, Some content) ->
00:01:25 verbose #1412 > >                 FileSystemChange.Changed (path, content |> Seq.distinct |>
00:01:25 verbose #1413 > > Seq.map string |> SpiralSm.concat "" |> Some)
00:01:25 verbose #1414 > >             | FileSystemChange.Created (path, Some content) ->
00:01:25 verbose #1415 > >                 FileSystemChange.Created (path, content |> Seq.distinct |>
00:01:25 verbose #1416 > > Seq.map string |> SpiralSm.concat "" |> Some)
00:01:25 verbose #1417 > >             | FileSystemChange.Renamed (oldPath, (newPath, Some content)) ->
00:01:25 verbose #1418 > >                 FileSystemChange.Renamed (
00:01:25 verbose #1419 > >                     oldPath,
00:01:25 verbose #1420 > >                     (newPath, content |> Seq.distinct |> Seq.map string |>
00:01:25 verbose #1421 > > SpiralSm.concat "" |> Some)
00:01:25 verbose #1422 > >                 )
00:01:25 verbose #1423 > >             | event -> event
00:01:25 verbose #1424 > >         )
00:01:25 verbose #1425 > >
00:01:25 verbose #1426 > >     events
00:01:25 verbose #1427 > >     |> _sequenceEqual [[
00:01:25 verbose #1428 > >         FileSystemChange.Created ("file1.txt", Some "1a")
00:01:25 verbose #1429 > >         FileSystemChange.Changed ("file1.txt", Some "1a")
00:01:25 verbose #1430 > >         FileSystemChange.Created ("file2.txt", Some "2a")
00:01:25 verbose #1431 > >         FileSystemChange.Changed ("file2.txt", Some "2a")
00:01:25 verbose #1432 > >
00:01:25 verbose #1433 > >         FileSystemChange.Changed ("file1.txt", Some "1b")
00:01:25 verbose #1434 > >         FileSystemChange.Changed ("file2.txt", Some "2b")
00:01:25 verbose #1435 > >
00:01:25 verbose #1436 > >         FileSystemChange.Renamed ("file1.txt", ("file_1.txt", Some "1b"))
00:01:25 verbose #1437 > >         FileSystemChange.Renamed ("file2.txt", ("file_2.txt", Some "2b"))
00:01:25 verbose #1438 > >
00:01:25 verbose #1439 > >         FileSystemChange.Changed ("file_1.txt", Some "1c")
00:01:25 verbose #1440 > >         FileSystemChange.Changed ("file_2.txt", Some "2c")
00:01:25 verbose #1441 > >
00:01:25 verbose #1442 > >         FileSystemChange.Deleted "file_1.txt"
00:01:25 verbose #1443 > >         FileSystemChange.Deleted "file_2.txt"
00:01:25 verbose #1444 > >     ]]
00:01:25 verbose #1445 > >
00:01:25 verbose #1446 > > run
00:01:25 verbose #1447 > > |> retry_fn 5
00:01:25 verbose #1448 > > |> _assertEqual (Some ())
00:01:38 verbose #1449 > >
00:01:38 verbose #1450 > > ╭─[ 12.69s - stdout ]──────────────────────────────────────────────────────────╮
00:01:38 verbose #1451 > > │ Some ()                                                                      │
00:01:38 verbose #1452 > > │                                                                              │
00:01:38 verbose #1453 > > │ 00:00:12   debug #3 FileSystem.watchWithFilter / Disposing watch stream │
00:01:38 verbose #1454 > > │ / filter: FileName, LastWrite                                                │
00:01:38 verbose #1455 > > │ 00:00:15   debug #4 FileSystem.testEventsRaw / eventsLog:               │
00:01:38 verbose #1456 > > │ 0 / 638612294356851226 / Created                                             │
00:01:38 verbose #1457 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1458 > > │  ...11111111111111111111111111111111111111111111111a")                       │
00:01:38 verbose #1459 > > │ 3019 / 638612294356854245 / Changed                                          │
00:01:38 verbose #1460 > > │   ("file1.txt"...11111111111111111111111111111111111111111111111a")          │
00:01:38 verbose #1461 > > │ 409 / 638612294356854654 / Changed                                           │
00:01:38 verbose #1462 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1463 > > │ 89 / 638612294356854743 / Changed                                            │
00:01:38 verbose #1464 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1465 > > │ ...11111111111111111111111111111111111111111111111a")                        │
00:01:38 verbose #1466 > > │ 374 / 638612294356855117 / Changed                                           │
00:01:38 verbose #1467 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1468 > > │ 374 / 638612294356855491 / Changed                                           │
00:01:38 verbose #1469 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1470 > > │ 100 / 638612294356855591 / Changed                                           │
00:01:38 verbose #1471 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1472 > > │ 214 / 638612294356855805 / Changed                                           │
00:01:38 verbose #1473 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1474 > > │ 66 / 638612294356855871 / Changed                                            │
00:01:38 verbose #1475 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1476 > > │ ...11111111111111111111111111111111111111111111111a")                        │
00:01:38 verbose #1477 > > │ 215 / 638612294356856086 / Changed                                           │
00:01:38 verbose #1478 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1479 > > │ 79 / 638612294356856165 / Changed                                            │
00:01:38 verbose #1480 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1481 > > │ ...11111111111111111111111111111111111111111111111a")                        │
00:01:38 verbose #1482 > > │ 219 / 638612294356856384 / Changed                                           │
00:01:38 verbose #1483 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1484 > > │ 105 / 638612294356856489 / Changed                                           │
00:01:38 verbose #1485 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1486 > > │ 279 / 638612294356856768 / Changed                                           │
00:01:38 verbose #1487 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1488 > > │ 202 / 638612294356856970 / Changed                                           │
00:01:38 verbose #1489 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1490 > > │ 90 / 638612294356857060 / Changed                                            │
00:01:38 verbose #1491 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1492 > > │ ...11111111111111111111111111111111111111111111111a")                        │
00:01:38 verbose #1493 > > │ 191 / 638612294356857251 / Changed                                           │
00:01:38 verbose #1494 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1495 > > │ 195 / 638612294356857446 / Changed                                           │
00:01:38 verbose #1496 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1497 > > │ 108 / 638612294356857554 / Changed                                           │
00:01:38 verbose #1498 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1499 > > │ 354 / 638612294356857908 / Changed                                           │
00:01:38 verbose #1500 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1501 > > │ 65 / 638612294356857973 / Changed                                            │
00:01:38 verbose #1502 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1503 > > │ ...11111111111111111111111111111111111111111111111a")                        │
00:01:38 verbose #1504 > > │ 170 / 638612294356858143 / Changed                                           │
00:01:38 verbose #1505 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1506 > > │ 238 / 638612294356858381 / Changed                                           │
00:01:38 verbose #1507 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1508 > > │ 170 / 638612294356858551 / Changed                                           │
00:01:38 verbose #1509 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1510 > > │ 137 / 638612294356858688 / Changed                                           │
00:01:38 verbose #1511 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1512 > > │ 199 / 638612294356858887 / Changed                                           │
00:01:38 verbose #1513 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1514 > > │ 48 / 638612294356858935 / Changed                                            │
00:01:38 verbose #1515 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1516 > > │ ...11111111111111111111111111111111111111111111111a")                        │
00:01:38 verbose #1517 > > │ 217 / 638612294356859152 / Changed                                           │
00:01:38 verbose #1518 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1519 > > │ 60 / 638612294356859212 / Changed                                            │
00:01:38 verbose #1520 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1521 > > │ ...11111111111111111111111111111111111111111111111a")                        │
00:01:38 verbose #1522 > > │ 180 / 638612294356859392 / Changed                                           │
00:01:38 verbose #1523 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1524 > > │ 73 / 638612294356859465 / Changed                                            │
00:01:38 verbose #1525 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1526 > > │ ...11111111111111111111111111111111111111111111111a")                        │
00:01:38 verbose #1527 > > │ 216 / 638612294356859681 / Changed                                           │
00:01:38 verbose #1528 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1529 > > │ 61 / 638612294356859742 / Changed                                            │
00:01:38 verbose #1530 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1531 > > │ ...11111111111111111111111111111111111111111111111a")                        │
00:01:38 verbose #1532 > > │ 324 / 638612294356860066 / Changed                                           │
00:01:38 verbose #1533 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1534 > > │ 99 / 638612294356860165 / Changed                                            │
00:01:38 verbose #1535 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1536 > > │ ...11111111111111111111111111111111111111111111111a")                        │
00:01:38 verbose #1537 > > │ 220 / 638612294356860385 / Changed                                           │
00:01:38 verbose #1538 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1539 > > │ 60 / 638612294356860445 / Changed                                            │
00:01:38 verbose #1540 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1541 > > │ ...11111111111111111111111111111111111111111111111a")                        │
00:01:38 verbose #1542 > > │ 285 / 638612294356860730 / Changed                                           │
00:01:38 verbose #1543 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1544 > > │ 69 / 638612294356860799 / Changed                                            │
00:01:38 verbose #1545 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1546 > > │ ...11111111111111111111111111111111111111111111111a")                        │
00:01:38 verbose #1547 > > │ 46 / 638612294356860845 / Changed                                            │
00:01:38 verbose #1548 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1549 > > │ ...11111111111111111111111111111111111111111111111a")                        │
00:01:38 verbose #1550 > > │ 316 / 638612294356861161 / Changed                                           │
00:01:38 verbose #1551 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1552 > > │ 76 / 638612294356861237 / Changed                                            │
00:01:38 verbose #1553 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1554 > > │ ...11111111111111111111111111111111111111111111111a")                        │
00:01:38 verbose #1555 > > │ 251 / 638612294356861488 / Changed                                           │
00:01:38 verbose #1556 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111a")         │
00:01:38 verbose #1557 > > │ 69 / 638612294356861557 / Changed                                            │
00:01:38 verbose #1558 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1559 > > │ ...11111111111111111111111111111111111111111111111a")                        │
00:01:38 verbose #1560 > > │ 6830 / 638612294356868387 / Changed                                          │
00:01:38 verbose #1561 > > │   ("file1.txt"...11111111111111111111111111111111111111111111111a")          │
00:01:38 verbose #1562 > > │ 26446 / 638612294356894833 / Created                                         │
00:01:38 verbose #1563 > > │   ("file2.txt...22222222222222222222222222222222222222222222222a")           │
00:01:38 verbose #1564 > > │ 569 / 638612294356895402 / Changed                                           │
00:01:38 verbose #1565 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1566 > > │ 480 / 638612294356895882 / Changed                                           │
00:01:38 verbose #1567 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1568 > > │ 616 / 638612294356896498 / Changed                                           │
00:01:38 verbose #1569 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1570 > > │ 116 / 638612294356896614 / Changed                                           │
00:01:38 verbose #1571 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1572 > > │ 277 / 638612294356896891 / Changed                                           │
00:01:38 verbose #1573 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1574 > > │ 221 / 638612294356897112 / Changed                                           │
00:01:38 verbose #1575 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1576 > > │ 248 / 638612294356897360 / Changed                                           │
00:01:38 verbose #1577 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1578 > > │ 153 / 638612294356897513 / Changed                                           │
00:01:38 verbose #1579 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1580 > > │ 223 / 638612294356897736 / Changed                                           │
00:01:38 verbose #1581 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1582 > > │ 140 / 638612294356897876 / Changed                                           │
00:01:38 verbose #1583 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1584 > > │ 225 / 638612294356898101 / Changed                                           │
00:01:38 verbose #1585 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1586 > > │ 173 / 638612294356898274 / Changed                                           │
00:01:38 verbose #1587 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1588 > > │ 167 / 638612294356898441 / Changed                                           │
00:01:38 verbose #1589 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1590 > > │ 161 / 638612294356898602 / Changed                                           │
00:01:38 verbose #1591 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1592 > > │ 556 / 638612294356899158 / Changed                                           │
00:01:38 verbose #1593 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1594 > > │ 63 / 638612294356899221 / Changed                                            │
00:01:38 verbose #1595 > > │   ("file2.txt",                                                              │
00:01:38 verbose #1596 > > │ ...22222222222222222222222222222222222222222222222a")                        │
00:01:38 verbose #1597 > > │ 277 / 638612294356899498 / Changed                                           │
00:01:38 verbose #1598 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1599 > > │ 154 / 638612294356899652 / Changed                                           │
00:01:38 verbose #1600 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1601 > > │ 215 / 638612294356899867 / Changed                                           │
00:01:38 verbose #1602 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1603 > > │ 57 / 638612294356899924 / Changed                                            │
00:01:38 verbose #1604 > > │   ("file2.txt",                                                              │
00:01:38 verbose #1605 > > │ ...22222222222222222222222222222222222222222222222a")                        │
00:01:38 verbose #1606 > > │ 768 / 638612294356900692 / Changed                                           │
00:01:38 verbose #1607 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1608 > > │ 88 / 638612294356900780 / Changed                                            │
00:01:38 verbose #1609 > > │   ("file2.txt",                                                              │
00:01:38 verbose #1610 > > │ ...22222222222222222222222222222222222222222222222a")                        │
00:01:38 verbose #1611 > > │ 217 / 638612294356900997 / Changed                                           │
00:01:38 verbose #1612 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1613 > > │ 139 / 638612294356901136 / Changed                                           │
00:01:38 verbose #1614 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1615 > > │ 168 / 638612294356901304 / Changed                                           │
00:01:38 verbose #1616 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1617 > > │ 988 / 638612294356902292 / Changed                                           │
00:01:38 verbose #1618 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1619 > > │ 71 / 638612294356902363 / Changed                                            │
00:01:38 verbose #1620 > > │   ("file2.txt",                                                              │
00:01:38 verbose #1621 > > │ ...22222222222222222222222222222222222222222222222a")                        │
00:01:38 verbose #1622 > > │ 219 / 638612294356902582 / Changed                                           │
00:01:38 verbose #1623 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1624 > > │ 134 / 638612294356902716 / Changed                                           │
00:01:38 verbose #1625 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1626 > > │ 190 / 638612294356902906 / Changed                                           │
00:01:38 verbose #1627 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1628 > > │ 161 / 638612294356903067 / Changed                                           │
00:01:38 verbose #1629 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1630 > > │ 161 / 638612294356903228 / Changed                                           │
00:01:38 verbose #1631 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1632 > > │ 157 / 638612294356903385 / Changed                                           │
00:01:38 verbose #1633 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1634 > > │ 179 / 638612294356903564 / Changed                                           │
00:01:38 verbose #1635 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1636 > > │ 178 / 638612294356903742 / Changed                                           │
00:01:38 verbose #1637 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1638 > > │ 153 / 638612294356903895 / Changed                                           │
00:01:38 verbose #1639 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1640 > > │ 201 / 638612294356904096 / Changed                                           │
00:01:38 verbose #1641 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1642 > > │ 144 / 638612294356904240 / Changed                                           │
00:01:38 verbose #1643 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1644 > > │ 159 / 638612294356904399 / Changed                                           │
00:01:38 verbose #1645 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1646 > > │ 190 / 638612294356904589 / Changed                                           │
00:01:38 verbose #1647 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1648 > > │ 153 / 638612294356904742 / Changed                                           │
00:01:38 verbose #1649 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1650 > > │ 159 / 638612294356904901 / Changed                                           │
00:01:38 verbose #1651 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1652 > > │ 170 / 638612294356905071 / Changed                                           │
00:01:38 verbose #1653 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1654 > > │ 185 / 638612294356905256 / Changed                                           │
00:01:38 verbose #1655 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1656 > > │ 194 / 638612294356905450 / Changed                                           │
00:01:38 verbose #1657 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1658 > > │ 160 / 638612294356905610 / Changed                                           │
00:01:38 verbose #1659 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1660 > > │ 174 / 638612294356905784 / Changed                                           │
00:01:38 verbose #1661 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1662 > > │ 155 / 638612294356905939 / Changed                                           │
00:01:38 verbose #1663 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1664 > > │ 284 / 638612294356906223 / Changed                                           │
00:01:38 verbose #1665 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1666 > > │ 233 / 638612294356906456 / Changed                                           │
00:01:38 verbose #1667 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1668 > > │ 153 / 638612294356906609 / Changed                                           │
00:01:38 verbose #1669 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1670 > > │ 168 / 638612294356906777 / Changed                                           │
00:01:38 verbose #1671 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1672 > > │ 163 / 638612294356906940 / Changed                                           │
00:01:38 verbose #1673 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1674 > > │ 253 / 638612294356907193 / Changed                                           │
00:01:38 verbose #1675 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1676 > > │ 222 / 638612294356907415 / Changed                                           │
00:01:38 verbose #1677 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1678 > > │ 177 / 638612294356907592 / Changed                                           │
00:01:38 verbose #1679 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1680 > > │ 209 / 638612294356907801 / Changed                                           │
00:01:38 verbose #1681 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1682 > > │ 146 / 638612294356907947 / Changed                                           │
00:01:38 verbose #1683 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1684 > > │ 147 / 638612294356908094 / Changed                                           │
00:01:38 verbose #1685 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1686 > > │ 154 / 638612294356908248 / Changed                                           │
00:01:38 verbose #1687 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1688 > > │ 165 / 638612294356908413 / Changed                                           │
00:01:38 verbose #1689 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1690 > > │ 173 / 638612294356908586 / Changed                                           │
00:01:38 verbose #1691 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1692 > > │ 176 / 638612294356908762 / Changed                                           │
00:01:38 verbose #1693 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1694 > > │ 178 / 638612294356908940 / Changed                                           │
00:01:38 verbose #1695 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1696 > > │ 208 / 638612294356909148 / Changed                                           │
00:01:38 verbose #1697 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1698 > > │ 139 / 638612294356909287 / Changed                                           │
00:01:38 verbose #1699 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1700 > > │ 263 / 638612294356909550 / Changed                                           │
00:01:38 verbose #1701 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1702 > > │ 178 / 638612294356909728 / Changed                                           │
00:01:38 verbose #1703 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1704 > > │ 285 / 638612294356910013 / Changed                                           │
00:01:38 verbose #1705 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1706 > > │ 56 / 638612294356910069 / Changed                                            │
00:01:38 verbose #1707 > > │   ("file2.txt",                                                              │
00:01:38 verbose #1708 > > │ ...22222222222222222222222222222222222222222222222a")                        │
00:01:38 verbose #1709 > > │ 148 / 638612294356910217 / Changed                                           │
00:01:38 verbose #1710 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1711 > > │ 166 / 638612294356910383 / Changed                                           │
00:01:38 verbose #1712 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1713 > > │ 170 / 638612294356910553 / Changed                                           │
00:01:38 verbose #1714 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1715 > > │ 172 / 638612294356910725 / Changed                                           │
00:01:38 verbose #1716 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1717 > > │ 160 / 638612294356910885 / Changed                                           │
00:01:38 verbose #1718 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1719 > > │ 215 / 638612294356911100 / Changed                                           │
00:01:38 verbose #1720 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1721 > > │ 714 / 638612294356911814 / Changed                                           │
00:01:38 verbose #1722 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1723 > > │ 304 / 638612294356912118 / Changed                                           │
00:01:38 verbose #1724 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1725 > > │ 196 / 638612294356912314 / Changed                                           │
00:01:38 verbose #1726 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1727 > > │ 142 / 638612294356912456 / Changed                                           │
00:01:38 verbose #1728 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1729 > > │ 195 / 638612294356912651 / Changed                                           │
00:01:38 verbose #1730 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1731 > > │ 864 / 638612294356913515 / Changed                                           │
00:01:38 verbose #1732 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1733 > > │ 104 / 638612294356913619 / Changed                                           │
00:01:38 verbose #1734 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1735 > > │ 218 / 638612294356913837 / Changed                                           │
00:01:38 verbose #1736 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1737 > > │ 137 / 638612294356913974 / Changed                                           │
00:01:38 verbose #1738 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1739 > > │ 155 / 638612294356914129 / Changed                                           │
00:01:38 verbose #1740 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1741 > > │ 248 / 638612294356914377 / Changed                                           │
00:01:38 verbose #1742 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1743 > > │ 197 / 638612294356914574 / Changed                                           │
00:01:38 verbose #1744 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1745 > > │ 169 / 638612294356914743 / Changed                                           │
00:01:38 verbose #1746 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1747 > > │ 198 / 638612294356914941 / Changed                                           │
00:01:38 verbose #1748 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1749 > > │ 239 / 638612294356915180 / Changed                                           │
00:01:38 verbose #1750 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1751 > > │ 305 / 638612294356915485 / Changed                                           │
00:01:38 verbose #1752 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1753 > > │ 63 / 638612294356915548 / Changed                                            │
00:01:38 verbose #1754 > > │   ("file2.txt",                                                              │
00:01:38 verbose #1755 > > │ ...22222222222222222222222222222222222222222222222a")                        │
00:01:38 verbose #1756 > > │ 212 / 638612294356915760 / Changed                                           │
00:01:38 verbose #1757 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1758 > > │ 228 / 638612294356915988 / Changed                                           │
00:01:38 verbose #1759 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1760 > > │ 172 / 638612294356916160 / Changed                                           │
00:01:38 verbose #1761 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1762 > > │ 133 / 638612294356916293 / Changed                                           │
00:01:38 verbose #1763 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1764 > > │ 1154 / 638612294356917447 / Changed                                          │
00:01:38 verbose #1765 > > │   ("file2.txt"...22222222222222222222222222222222222222222222222a")          │
00:01:38 verbose #1766 > > │ 99 / 638612294356917546 / Changed                                            │
00:01:38 verbose #1767 > > │   ("file2.txt",                                                              │
00:01:38 verbose #1768 > > │ ...22222222222222222222222222222222222222222222222a")                        │
00:01:38 verbose #1769 > > │ 150 / 638612294356917696 / Changed                                           │
00:01:38 verbose #1770 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1771 > > │ 144 / 638612294356917840 / Changed                                           │
00:01:38 verbose #1772 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1773 > > │ 166 / 638612294356918006 / Changed                                           │
00:01:38 verbose #1774 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1775 > > │ 119 / 638612294356918125 / Changed                                           │
00:01:38 verbose #1776 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222a")         │
00:01:38 verbose #1777 > > │ 15065141 / 638612294371983266 / Changed                                      │
00:01:38 verbose #1778 > > │   ("file1....11111111111111111111111111111111111111111111111b")              │
00:01:38 verbose #1779 > > │ 2348 / 638612294371985614 / Changed                                          │
00:01:38 verbose #1780 > > │   ("file1.txt"...11111111111111111111111111111111111111111111111b")          │
00:01:38 verbose #1781 > > │ 122 / 638612294371985736 / Changed                                           │
00:01:38 verbose #1782 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1783 > > │ 248 / 638612294371985984 / Changed                                           │
00:01:38 verbose #1784 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1785 > > │ 59 / 638612294371986043 / Changed                                            │
00:01:38 verbose #1786 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1787 > > │ ...11111111111111111111111111111111111111111111111b")                        │
00:01:38 verbose #1788 > > │ 312 / 638612294371986355 / Changed                                           │
00:01:38 verbose #1789 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1790 > > │ 664 / 638612294371987019 / Changed                                           │
00:01:38 verbose #1791 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1792 > > │ 118 / 638612294371987137 / Changed                                           │
00:01:38 verbose #1793 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1794 > > │ 277 / 638612294371987414 / Changed                                           │
00:01:38 verbose #1795 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1796 > > │ 238 / 638612294371987652 / Changed                                           │
00:01:38 verbose #1797 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1798 > > │ 54 / 638612294371987706 / Changed                                            │
00:01:38 verbose #1799 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1800 > > │ ...11111111111111111111111111111111111111111111111b")                        │
00:01:38 verbose #1801 > > │ 182 / 638612294371987888 / Changed                                           │
00:01:38 verbose #1802 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1803 > > │ 170 / 638612294371988058 / Changed                                           │
00:01:38 verbose #1804 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1805 > > │ 273 / 638612294371988331 / Changed                                           │
00:01:38 verbose #1806 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1807 > > │ 183 / 638612294371988514 / Changed                                           │
00:01:38 verbose #1808 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1809 > > │ 158 / 638612294371988672 / Changed                                           │
00:01:38 verbose #1810 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1811 > > │ 160 / 638612294371988832 / Changed                                           │
00:01:38 verbose #1812 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1813 > > │ 150 / 638612294371988982 / Changed                                           │
00:01:38 verbose #1814 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1815 > > │ 168 / 638612294371989150 / Changed                                           │
00:01:38 verbose #1816 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1817 > > │ 171 / 638612294371989321 / Changed                                           │
00:01:38 verbose #1818 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1819 > > │ 156 / 638612294371989477 / Changed                                           │
00:01:38 verbose #1820 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1821 > > │ 152 / 638612294371989629 / Changed                                           │
00:01:38 verbose #1822 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1823 > > │ 1607 / 638612294371991236 / Changed                                          │
00:01:38 verbose #1824 > > │   ("file1.txt"...11111111111111111111111111111111111111111111111b")          │
00:01:38 verbose #1825 > > │ 104 / 638612294371991340 / Changed                                           │
00:01:38 verbose #1826 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1827 > > │ 199 / 638612294371991539 / Changed                                           │
00:01:38 verbose #1828 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1829 > > │ 194 / 638612294371991733 / Changed                                           │
00:01:38 verbose #1830 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1831 > > │ 1161 / 638612294371992894 / Changed                                          │
00:01:38 verbose #1832 > > │   ("file1.txt"...11111111111111111111111111111111111111111111111b")          │
00:01:38 verbose #1833 > > │ 144 / 638612294371993038 / Changed                                           │
00:01:38 verbose #1834 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1835 > > │ 167 / 638612294371993205 / Changed                                           │
00:01:38 verbose #1836 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1837 > > │ 201 / 638612294371993406 / Changed                                           │
00:01:38 verbose #1838 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1839 > > │ 131 / 638612294371993537 / Changed                                           │
00:01:38 verbose #1840 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1841 > > │ 154 / 638612294371993691 / Changed                                           │
00:01:38 verbose #1842 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1843 > > │ 157 / 638612294371993848 / Changed                                           │
00:01:38 verbose #1844 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1845 > > │ 188 / 638612294371994036 / Changed                                           │
00:01:38 verbose #1846 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1847 > > │ 721 / 638612294371994757 / Changed                                           │
00:01:38 verbose #1848 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1849 > > │ 129 / 638612294371994886 / Changed                                           │
00:01:38 verbose #1850 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1851 > > │ 195 / 638612294371995081 / Changed                                           │
00:01:38 verbose #1852 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1853 > > │ 162 / 638612294371995243 / Changed                                           │
00:01:38 verbose #1854 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1855 > > │ 175 / 638612294371995418 / Changed                                           │
00:01:38 verbose #1856 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1857 > > │ 173 / 638612294371995591 / Changed                                           │
00:01:38 verbose #1858 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1859 > > │ 163 / 638612294371995754 / Changed                                           │
00:01:38 verbose #1860 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1861 > > │ 688 / 638612294371996442 / Changed                                           │
00:01:38 verbose #1862 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1863 > > │ 56 / 638612294371996498 / Changed                                            │
00:01:38 verbose #1864 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1865 > > │ ...11111111111111111111111111111111111111111111111b")                        │
00:01:38 verbose #1866 > > │ 156 / 638612294371996654 / Changed                                           │
00:01:38 verbose #1867 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1868 > > │ 181 / 638612294371996835 / Changed                                           │
00:01:38 verbose #1869 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1870 > > │ 155 / 638612294371996990 / Changed                                           │
00:01:38 verbose #1871 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1872 > > │ 165 / 638612294371997155 / Changed                                           │
00:01:38 verbose #1873 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1874 > > │ 141 / 638612294371997296 / Changed                                           │
00:01:38 verbose #1875 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1876 > > │ 182 / 638612294371997478 / Changed                                           │
00:01:38 verbose #1877 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1878 > > │ 669 / 638612294371998147 / Changed                                           │
00:01:38 verbose #1879 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1880 > > │ 67 / 638612294371998214 / Changed                                            │
00:01:38 verbose #1881 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1882 > > │ ...11111111111111111111111111111111111111111111111b")                        │
00:01:38 verbose #1883 > > │ 117 / 638612294371998331 / Changed                                           │
00:01:38 verbose #1884 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1885 > > │ 158 / 638612294371998489 / Changed                                           │
00:01:38 verbose #1886 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1887 > > │ 167 / 638612294371998656 / Changed                                           │
00:01:38 verbose #1888 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1889 > > │ 664 / 638612294371999320 / Changed                                           │
00:01:38 verbose #1890 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1891 > > │ 54 / 638612294371999374 / Changed                                            │
00:01:38 verbose #1892 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1893 > > │ ...11111111111111111111111111111111111111111111111b")                        │
00:01:38 verbose #1894 > > │ 172 / 638612294371999546 / Changed                                           │
00:01:38 verbose #1895 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1896 > > │ 720 / 638612294372000266 / Changed                                           │
00:01:38 verbose #1897 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1898 > > │ 80 / 638612294372000346 / Changed                                            │
00:01:38 verbose #1899 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1900 > > │ ...11111111111111111111111111111111111111111111111b")                        │
00:01:38 verbose #1901 > > │ 171 / 638612294372000517 / Changed                                           │
00:01:38 verbose #1902 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1903 > > │ 165 / 638612294372000682 / Changed                                           │
00:01:38 verbose #1904 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1905 > > │ 174 / 638612294372000856 / Changed                                           │
00:01:38 verbose #1906 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1907 > > │ 762 / 638612294372001618 / Changed                                           │
00:01:38 verbose #1908 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1909 > > │ 79 / 638612294372001697 / Changed                                            │
00:01:38 verbose #1910 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1911 > > │ ...11111111111111111111111111111111111111111111111b")                        │
00:01:38 verbose #1912 > > │ 132 / 638612294372001829 / Changed                                           │
00:01:38 verbose #1913 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1914 > > │ 161 / 638612294372001990 / Changed                                           │
00:01:38 verbose #1915 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1916 > > │ 189 / 638612294372002179 / Changed                                           │
00:01:38 verbose #1917 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1918 > > │ 634 / 638612294372002813 / Changed                                           │
00:01:38 verbose #1919 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1920 > > │ 53 / 638612294372002866 / Changed                                            │
00:01:38 verbose #1921 > > │   ("file1.txt",                                                              │
00:01:38 verbose #1922 > > │ ...11111111111111111111111111111111111111111111111b")                        │
00:01:38 verbose #1923 > > │ 200 / 638612294372003066 / Changed                                           │
00:01:38 verbose #1924 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1925 > > │ 166 / 638612294372003232 / Changed                                           │
00:01:38 verbose #1926 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1927 > > │ 146 / 638612294372003378 / Changed                                           │
00:01:38 verbose #1928 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1929 > > │ 153 / 638612294372003531 / Changed                                           │
00:01:38 verbose #1930 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1931 > > │ 173 / 638612294372003704 / Changed                                           │
00:01:38 verbose #1932 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1933 > > │ 179 / 638612294372003883 / Changed                                           │
00:01:38 verbose #1934 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1935 > > │ 181 / 638612294372004064 / Changed                                           │
00:01:38 verbose #1936 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1937 > > │ 192 / 638612294372004256 / Changed                                           │
00:01:38 verbose #1938 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1939 > > │ 144 / 638612294372004400 / Changed                                           │
00:01:38 verbose #1940 > > │   ("file1.txt",...11111111111111111111111111111111111111111111111b")         │
00:01:38 verbose #1941 > > │ 17083 / 638612294372021483 / Changed                                         │
00:01:38 verbose #1942 > > │   ("file1.txt...11111111111111111111111111111111111111111111111b")           │
00:01:38 verbose #1943 > > │ 35073 / 638612294372056556 / Changed                                         │
00:01:38 verbose #1944 > > │   ("file2.txt...22222222222222222222222222222222222222222222222b")           │
00:01:38 verbose #1945 > > │ 656 / 638612294372057212 / Changed                                           │
00:01:38 verbose #1946 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1947 > > │ 498 / 638612294372057710 / Changed                                           │
00:01:38 verbose #1948 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1949 > > │ 339 / 638612294372058049 / Changed                                           │
00:01:38 verbose #1950 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1951 > > │ 307 / 638612294372058356 / Changed                                           │
00:01:38 verbose #1952 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1953 > > │ 332 / 638612294372058688 / Changed                                           │
00:01:38 verbose #1954 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1955 > > │ 583 / 638612294372059271 / Changed                                           │
00:01:38 verbose #1956 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1957 > > │ 309 / 638612294372059580 / Changed                                           │
00:01:38 verbose #1958 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1959 > > │ 344 / 638612294372059924 / Changed                                           │
00:01:38 verbose #1960 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1961 > > │ 310 / 638612294372060234 / Changed                                           │
00:01:38 verbose #1962 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1963 > > │ 316 / 638612294372060550 / Changed                                           │
00:01:38 verbose #1964 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1965 > > │ 316 / 638612294372060866 / Changed                                           │
00:01:38 verbose #1966 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1967 > > │ 293 / 638612294372061159 / Changed                                           │
00:01:38 verbose #1968 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1969 > > │ 473 / 638612294372061632 / Changed                                           │
00:01:38 verbose #1970 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1971 > > │ 348 / 638612294372061980 / Changed                                           │
00:01:38 verbose #1972 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1973 > > │ 329 / 638612294372062309 / Changed                                           │
00:01:38 verbose #1974 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1975 > > │ 253 / 638612294372062562 / Changed                                           │
00:01:38 verbose #1976 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1977 > > │ 226 / 638612294372062788 / Changed                                           │
00:01:38 verbose #1978 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1979 > > │ 231 / 638612294372063019 / Changed                                           │
00:01:38 verbose #1980 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1981 > > │ 221 / 638612294372063240 / Changed                                           │
00:01:38 verbose #1982 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1983 > > │ 231 / 638612294372063471 / Changed                                           │
00:01:38 verbose #1984 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1985 > > │ 3174 / 638612294372066645 / Changed                                          │
00:01:38 verbose #1986 > > │   ("file2.txt"...22222222222222222222222222222222222222222222222b")          │
00:01:38 verbose #1987 > > │ 77 / 638612294372066722 / Changed                                            │
00:01:38 verbose #1988 > > │   ("file2.txt",                                                              │
00:01:38 verbose #1989 > > │ ...22222222222222222222222222222222222222222222222b")                        │
00:01:38 verbose #1990 > > │ 248 / 638612294372066970 / Changed                                           │
00:01:38 verbose #1991 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1992 > > │ 177 / 638612294372067147 / Changed                                           │
00:01:38 verbose #1993 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1994 > > │ 181 / 638612294372067328 / Changed                                           │
00:01:38 verbose #1995 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1996 > > │ 214 / 638612294372067542 / Changed                                           │
00:01:38 verbose #1997 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #1998 > > │ 175 / 638612294372067717 / Changed                                           │
00:01:38 verbose #1999 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2000 > > │ 184 / 638612294372067901 / Changed                                           │
00:01:38 verbose #2001 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2002 > > │ 129 / 638612294372068030 / Changed                                           │
00:01:38 verbose #2003 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2004 > > │ 247 / 638612294372068277 / Changed                                           │
00:01:38 verbose #2005 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2006 > > │ 170 / 638612294372068447 / Changed                                           │
00:01:38 verbose #2007 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2008 > > │ 216 / 638612294372068663 / Changed                                           │
00:01:38 verbose #2009 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2010 > > │ 111 / 638612294372068774 / Changed                                           │
00:01:38 verbose #2011 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2012 > > │ 239 / 638612294372069013 / Changed                                           │
00:01:38 verbose #2013 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2014 > > │ 222 / 638612294372069235 / Changed                                           │
00:01:38 verbose #2015 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2016 > > │ 342 / 638612294372069577 / Changed                                           │
00:01:38 verbose #2017 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2018 > > │ 64 / 638612294372069641 / Changed                                            │
00:01:38 verbose #2019 > > │   ("file2.txt",                                                              │
00:01:38 verbose #2020 > > │ ...22222222222222222222222222222222222222222222222b")                        │
00:01:38 verbose #2021 > > │ 41 / 638612294372069682 / Changed                                            │
00:01:38 verbose #2022 > > │   ("file2.txt",                                                              │
00:01:38 verbose #2023 > > │ ...22222222222222222222222222222222222222222222222b")                        │
00:01:38 verbose #2024 > > │ 238 / 638612294372069920 / Changed                                           │
00:01:38 verbose #2025 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2026 > > │ 175 / 638612294372070095 / Changed                                           │
00:01:38 verbose #2027 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2028 > > │ 178 / 638612294372070273 / Changed                                           │
00:01:38 verbose #2029 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2030 > > │ 211 / 638612294372070484 / Changed                                           │
00:01:38 verbose #2031 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2032 > > │ 172 / 638612294372070656 / Changed                                           │
00:01:38 verbose #2033 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2034 > > │ 288 / 638612294372070944 / Changed                                           │
00:01:38 verbose #2035 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2036 > > │ 172 / 638612294372071116 / Changed                                           │
00:01:38 verbose #2037 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2038 > > │ 208 / 638612294372071324 / Changed                                           │
00:01:38 verbose #2039 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2040 > > │ 170 / 638612294372071494 / Changed                                           │
00:01:38 verbose #2041 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2042 > > │ 206 / 638612294372071700 / Changed                                           │
00:01:38 verbose #2043 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2044 > > │ 424 / 638612294372072124 / Changed                                           │
00:01:38 verbose #2045 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2046 > > │ 66 / 638612294372072190 / Changed                                            │
00:01:38 verbose #2047 > > │   ("file2.txt",                                                              │
00:01:38 verbose #2048 > > │ ...22222222222222222222222222222222222222222222222b")                        │
00:01:38 verbose #2049 > > │ 260 / 638612294372072450 / Changed                                           │
00:01:38 verbose #2050 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2051 > > │ 71 / 638612294372072521 / Changed                                            │
00:01:38 verbose #2052 > > │   ("file2.txt",                                                              │
00:01:38 verbose #2053 > > │ ...22222222222222222222222222222222222222222222222b")                        │
00:01:38 verbose #2054 > > │ 250 / 638612294372072771 / Changed                                           │
00:01:38 verbose #2055 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2056 > > │ 175 / 638612294372072946 / Changed                                           │
00:01:38 verbose #2057 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2058 > > │ 232 / 638612294372073178 / Changed                                           │
00:01:38 verbose #2059 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2060 > > │ 234 / 638612294372073412 / Changed                                           │
00:01:38 verbose #2061 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2062 > > │ 219 / 638612294372073631 / Changed                                           │
00:01:38 verbose #2063 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2064 > > │ 182 / 638612294372073813 / Changed                                           │
00:01:38 verbose #2065 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2066 > > │ 184 / 638612294372073997 / Changed                                           │
00:01:38 verbose #2067 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2068 > > │ 199 / 638612294372074196 / Changed                                           │
00:01:38 verbose #2069 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2070 > > │ 174 / 638612294372074370 / Changed                                           │
00:01:38 verbose #2071 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2072 > > │ 245 / 638612294372074615 / Changed                                           │
00:01:38 verbose #2073 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2074 > > │ 58 / 638612294372074673 / Changed                                            │
00:01:38 verbose #2075 > > │   ("file2.txt",                                                              │
00:01:38 verbose #2076 > > │ ...22222222222222222222222222222222222222222222222b")                        │
00:01:38 verbose #2077 > > │ 236 / 638612294372074909 / Changed                                           │
00:01:38 verbose #2078 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2079 > > │ 247 / 638612294372075156 / Changed                                           │
00:01:38 verbose #2080 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2081 > > │ 171 / 638612294372075327 / Changed                                           │
00:01:38 verbose #2082 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2083 > > │ 209 / 638612294372075536 / Changed                                           │
00:01:38 verbose #2084 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2085 > > │ 172 / 638612294372075708 / Changed                                           │
00:01:38 verbose #2086 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2087 > > │ 165 / 638612294372075873 / Changed                                           │
00:01:38 verbose #2088 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2089 > > │ 242 / 638612294372076115 / Changed                                           │
00:01:38 verbose #2090 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2091 > > │ 255 / 638612294372076370 / Changed                                           │
00:01:38 verbose #2092 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2093 > > │ 189 / 638612294372076559 / Changed                                           │
00:01:38 verbose #2094 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2095 > > │ 178 / 638612294372076737 / Changed                                           │
00:01:38 verbose #2096 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2097 > > │ 216 / 638612294372076953 / Changed                                           │
00:01:38 verbose #2098 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2099 > > │ 118 / 638612294372077071 / Changed                                           │
00:01:38 verbose #2100 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2101 > > │ 220 / 638612294372077291 / Changed                                           │
00:01:38 verbose #2102 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2103 > > │ 177 / 638612294372077468 / Changed                                           │
00:01:38 verbose #2104 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2105 > > │ 152 / 638612294372077620 / Changed                                           │
00:01:38 verbose #2106 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2107 > > │ 233 / 638612294372077853 / Changed                                           │
00:01:38 verbose #2108 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2109 > > │ 171 / 638612294372078024 / Changed                                           │
00:01:38 verbose #2110 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2111 > > │ 211 / 638612294372078235 / Changed                                           │
00:01:38 verbose #2112 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2113 > > │ 120 / 638612294372078355 / Changed                                           │
00:01:38 verbose #2114 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2115 > > │ 223 / 638612294372078578 / Changed                                           │
00:01:38 verbose #2116 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2117 > > │ 179 / 638612294372078757 / Changed                                           │
00:01:38 verbose #2118 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2119 > > │ 301 / 638612294372079058 / Changed                                           │
00:01:38 verbose #2120 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2121 > > │ 63 / 638612294372079121 / Changed                                            │
00:01:38 verbose #2122 > > │   ("file2.txt",                                                              │
00:01:38 verbose #2123 > > │ ...22222222222222222222222222222222222222222222222b")                        │
00:01:38 verbose #2124 > > │ 181 / 638612294372079302 / Changed                                           │
00:01:38 verbose #2125 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2126 > > │ 207 / 638612294372079509 / Changed                                           │
00:01:38 verbose #2127 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2128 > > │ 170 / 638612294372079679 / Changed                                           │
00:01:38 verbose #2129 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2130 > > │ 177 / 638612294372079856 / Changed                                           │
00:01:38 verbose #2131 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2132 > > │ 209 / 638612294372080065 / Changed                                           │
00:01:38 verbose #2133 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2134 > > │ 266 / 638612294372080331 / Changed                                           │
00:01:38 verbose #2135 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2136 > > │ 55 / 638612294372080386 / Changed                                            │
00:01:38 verbose #2137 > > │   ("file2.txt",                                                              │
00:01:38 verbose #2138 > > │ ...22222222222222222222222222222222222222222222222b")                        │
00:01:38 verbose #2139 > > │ 244 / 638612294372080630 / Changed                                           │
00:01:38 verbose #2140 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2141 > > │ 223 / 638612294372080853 / Changed                                           │
00:01:38 verbose #2142 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2143 > > │ 177 / 638612294372081030 / Changed                                           │
00:01:38 verbose #2144 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2145 > > │ 201 / 638612294372081231 / Changed                                           │
00:01:38 verbose #2146 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2147 > > │ 204 / 638612294372081435 / Changed                                           │
00:01:38 verbose #2148 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2149 > > │ 112 / 638612294372081547 / Changed                                           │
00:01:38 verbose #2150 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2151 > > │ 123 / 638612294372081670 / Changed                                           │
00:01:38 verbose #2152 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2153 > > │ 263 / 638612294372081933 / Changed                                           │
00:01:38 verbose #2154 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2155 > > │ 178 / 638612294372082111 / Changed                                           │
00:01:38 verbose #2156 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2157 > > │ 176 / 638612294372082287 / Changed                                           │
00:01:38 verbose #2158 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2159 > > │ 206 / 638612294372082493 / Changed                                           │
00:01:38 verbose #2160 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2161 > > │ 179 / 638612294372082672 / Changed                                           │
00:01:38 verbose #2162 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2163 > > │ 175 / 638612294372082847 / Changed                                           │
00:01:38 verbose #2164 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2165 > > │ 204 / 638612294372083051 / Changed                                           │
00:01:38 verbose #2166 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2167 > > │ 125 / 638612294372083176 / Changed                                           │
00:01:38 verbose #2168 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2169 > > │ 233 / 638612294372083409 / Changed                                           │
00:01:38 verbose #2170 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2171 > > │ 181 / 638612294372083590 / Changed                                           │
00:01:38 verbose #2172 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2173 > > │ 207 / 638612294372083797 / Changed                                           │
00:01:38 verbose #2174 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2175 > > │ 171 / 638612294372083968 / Changed                                           │
00:01:38 verbose #2176 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2177 > > │ 200 / 638612294372084168 / Changed                                           │
00:01:38 verbose #2178 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2179 > > │ 185 / 638612294372084353 / Changed                                           │
00:01:38 verbose #2180 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2181 > > │ 151 / 638612294372084504 / Changed                                           │
00:01:38 verbose #2182 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2183 > > │ 249 / 638612294372084753 / Changed                                           │
00:01:38 verbose #2184 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2185 > > │ 175 / 638612294372084928 / Changed                                           │
00:01:38 verbose #2186 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2187 > > │ 201 / 638612294372085129 / Changed                                           │
00:01:38 verbose #2188 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2189 > > │ 170 / 638612294372085299 / Changed                                           │
00:01:38 verbose #2190 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2191 > > │ 175 / 638612294372085474 / Changed                                           │
00:01:38 verbose #2192 > > │   ("file2.txt",...22222222222222222222222222222222222222222222222b")         │
00:01:38 verbose #2193 > > │ 50 / 638612294372085524 / Changed                                            │
00:01:38 verbose #2194 > > │   ("file2.txt",                                                              │
00:01:38 verbose #2195 > > │ ...22222222222222222222222222222222222222222222222b")                        │
00:01:38 verbose #2196 > > │ 15016711 / 638612294387102235 / Renamed                                      │
00:01:38 verbose #2197 > > │   ("file1....1111111111111111111111111111111111111111111111b"))              │
00:01:38 verbose #2198 > > │ 545 / 638612294387102780 / Renamed                                           │
00:01:38 verbose #2199 > > │   ("file2.txt",...2222222222222222222222222222222222222222222222b"))         │
00:01:38 verbose #2200 > > │ 15052290 / 638612294402155070 / Changed                                      │
00:01:38 verbose #2201 > > │   ("file_1...11111111111111111111111111111111111111111111111c")              │
00:01:38 verbose #2202 > > │ 682 / 638612294402155752 / Changed                                           │
00:01:38 verbose #2203 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2204 > > │ 607 / 638612294402156359 / Changed                                           │
00:01:38 verbose #2205 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2206 > > │ 403 / 638612294402156762 / Changed                                           │
00:01:38 verbose #2207 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2208 > > │ 128 / 638612294402156890 / Changed                                           │
00:01:38 verbose #2209 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2210 > > │ 132 / 638612294402157022 / Changed                                           │
00:01:38 verbose #2211 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2212 > > │ 1541 / 638612294402158563 / Changed                                          │
00:01:38 verbose #2213 > > │   ("file_1.txt...11111111111111111111111111111111111111111111111c")          │
00:01:38 verbose #2214 > > │ 122 / 638612294402158685 / Changed                                           │
00:01:38 verbose #2215 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2216 > > │ 221 / 638612294402158906 / Changed                                           │
00:01:38 verbose #2217 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2218 > > │ 427 / 638612294402159333 / Changed                                           │
00:01:38 verbose #2219 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2220 > > │ 365 / 638612294402159698 / Changed                                           │
00:01:38 verbose #2221 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2222 > > │ 372 / 638612294402160070 / Changed                                           │
00:01:38 verbose #2223 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2224 > > │ 58 / 638612294402160128 / Changed                                            │
00:01:38 verbose #2225 > > │   ("file_1.txt",...11111111111111111111111111111111111111111111111c")        │
00:01:38 verbose #2226 > > │ 153 / 638612294402160281 / Changed                                           │
00:01:38 verbose #2227 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2228 > > │ 274 / 638612294402160555 / Changed                                           │
00:01:38 verbose #2229 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2230 > > │ 280 / 638612294402160835 / Changed                                           │
00:01:38 verbose #2231 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2232 > > │ 245 / 638612294402161080 / Changed                                           │
00:01:38 verbose #2233 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2234 > > │ 256 / 638612294402161336 / Changed                                           │
00:01:38 verbose #2235 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2236 > > │ 258 / 638612294402161594 / Changed                                           │
00:01:38 verbose #2237 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2238 > > │ 351 / 638612294402161945 / Changed                                           │
00:01:38 verbose #2239 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2240 > > │ 7463 / 638612294402169408 / Changed                                          │
00:01:38 verbose #2241 > > │   ("file_1.txt...11111111111111111111111111111111111111111111111c")          │
00:01:38 verbose #2242 > > │ 181 / 638612294402169589 / Changed                                           │
00:01:38 verbose #2243 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2244 > > │ 406 / 638612294402169995 / Changed                                           │
00:01:38 verbose #2245 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2246 > > │ 78 / 638612294402170073 / Changed                                            │
00:01:38 verbose #2247 > > │   ("file_1.txt",...11111111111111111111111111111111111111111111111c")        │
00:01:38 verbose #2248 > > │ 849 / 638612294402170922 / Changed                                           │
00:01:38 verbose #2249 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2250 > > │ 204 / 638612294402171126 / Changed                                           │
00:01:38 verbose #2251 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2252 > > │ 356 / 638612294402171482 / Changed                                           │
00:01:38 verbose #2253 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2254 > > │ 262 / 638612294402171744 / Changed                                           │
00:01:38 verbose #2255 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2256 > > │ 409 / 638612294402172153 / Changed                                           │
00:01:38 verbose #2257 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2258 > > │ 250 / 638612294402172403 / Changed                                           │
00:01:38 verbose #2259 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2260 > > │ 76 / 638612294402172479 / Changed                                            │
00:01:38 verbose #2261 > > │   ("file_1.txt",...11111111111111111111111111111111111111111111111c")        │
00:01:38 verbose #2262 > > │ 207 / 638612294402172686 / Changed                                           │
00:01:38 verbose #2263 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2264 > > │ 182 / 638612294402172868 / Changed                                           │
00:01:38 verbose #2265 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2266 > > │ 270 / 638612294402173138 / Changed                                           │
00:01:38 verbose #2267 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2268 > > │ 287 / 638612294402173425 / Changed                                           │
00:01:38 verbose #2269 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2270 > > │ 211 / 638612294402173636 / Changed                                           │
00:01:38 verbose #2271 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2272 > > │ 167 / 638612294402173803 / Changed                                           │
00:01:38 verbose #2273 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2274 > > │ 177 / 638612294402173980 / Changed                                           │
00:01:38 verbose #2275 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2276 > > │ 150 / 638612294402174130 / Changed                                           │
00:01:38 verbose #2277 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2278 > > │ 159 / 638612294402174289 / Changed                                           │
00:01:38 verbose #2279 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2280 > > │ 159 / 638612294402174448 / Changed                                           │
00:01:38 verbose #2281 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2282 > > │ 206 / 638612294402174654 / Changed                                           │
00:01:38 verbose #2283 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2284 > > │ 148 / 638612294402174802 / Changed                                           │
00:01:38 verbose #2285 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2286 > > │ 162 / 638612294402174964 / Changed                                           │
00:01:38 verbose #2287 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2288 > > │ 169 / 638612294402175133 / Changed                                           │
00:01:38 verbose #2289 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2290 > > │ 167 / 638612294402175300 / Changed                                           │
00:01:38 verbose #2291 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2292 > > │ 179 / 638612294402175479 / Changed                                           │
00:01:38 verbose #2293 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2294 > > │ 179 / 638612294402175658 / Changed                                           │
00:01:38 verbose #2295 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2296 > > │ 168 / 638612294402175826 / Changed                                           │
00:01:38 verbose #2297 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2298 > > │ 192 / 638612294402176018 / Changed                                           │
00:01:38 verbose #2299 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2300 > > │ 188 / 638612294402176206 / Changed                                           │
00:01:38 verbose #2301 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2302 > > │ 163 / 638612294402176369 / Changed                                           │
00:01:38 verbose #2303 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2304 > > │ 176 / 638612294402176545 / Changed                                           │
00:01:38 verbose #2305 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2306 > > │ 180 / 638612294402176725 / Changed                                           │
00:01:38 verbose #2307 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2308 > > │ 159 / 638612294402176884 / Changed                                           │
00:01:38 verbose #2309 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2310 > > │ 165 / 638612294402177049 / Changed                                           │
00:01:38 verbose #2311 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2312 > > │ 168 / 638612294402177217 / Changed                                           │
00:01:38 verbose #2313 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2314 > > │ 157 / 638612294402177374 / Changed                                           │
00:01:38 verbose #2315 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2316 > > │ 162 / 638612294402177536 / Changed                                           │
00:01:38 verbose #2317 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2318 > > │ 177 / 638612294402177713 / Changed                                           │
00:01:38 verbose #2319 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2320 > > │ 160 / 638612294402177873 / Changed                                           │
00:01:38 verbose #2321 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2322 > > │ 226 / 638612294402178099 / Changed                                           │
00:01:38 verbose #2323 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2324 > > │ 201 / 638612294402178300 / Changed                                           │
00:01:38 verbose #2325 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2326 > > │ 174 / 638612294402178474 / Changed                                           │
00:01:38 verbose #2327 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2328 > > │ 157 / 638612294402178631 / Changed                                           │
00:01:38 verbose #2329 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2330 > > │ 186 / 638612294402178817 / Changed                                           │
00:01:38 verbose #2331 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2332 > > │ 172 / 638612294402178989 / Changed                                           │
00:01:38 verbose #2333 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2334 > > │ 161 / 638612294402179150 / Changed                                           │
00:01:38 verbose #2335 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2336 > > │ 202 / 638612294402179352 / Changed                                           │
00:01:38 verbose #2337 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2338 > > │ 155 / 638612294402179507 / Changed                                           │
00:01:38 verbose #2339 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2340 > > │ 160 / 638612294402179667 / Changed                                           │
00:01:38 verbose #2341 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2342 > > │ 167 / 638612294402179834 / Changed                                           │
00:01:38 verbose #2343 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2344 > > │ 165 / 638612294402179999 / Changed                                           │
00:01:38 verbose #2345 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2346 > > │ 169 / 638612294402180168 / Changed                                           │
00:01:38 verbose #2347 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2348 > > │ 169 / 638612294402180337 / Changed                                           │
00:01:38 verbose #2349 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2350 > > │ 173 / 638612294402180510 / Changed                                           │
00:01:38 verbose #2351 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2352 > > │ 206 / 638612294402180716 / Changed                                           │
00:01:38 verbose #2353 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2354 > > │ 180 / 638612294402180896 / Changed                                           │
00:01:38 verbose #2355 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2356 > > │ 166 / 638612294402181062 / Changed                                           │
00:01:38 verbose #2357 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2358 > > │ 160 / 638612294402181222 / Changed                                           │
00:01:38 verbose #2359 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2360 > > │ 163 / 638612294402181385 / Changed                                           │
00:01:38 verbose #2361 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2362 > > │ 167 / 638612294402181552 / Changed                                           │
00:01:38 verbose #2363 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2364 > > │ 173 / 638612294402181725 / Changed                                           │
00:01:38 verbose #2365 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2366 > > │ 254 / 638612294402181979 / Changed                                           │
00:01:38 verbose #2367 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2368 > > │ 157 / 638612294402182136 / Changed                                           │
00:01:38 verbose #2369 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2370 > > │ 165 / 638612294402182301 / Changed                                           │
00:01:38 verbose #2371 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2372 > > │ 396 / 638612294402182697 / Changed                                           │
00:01:38 verbose #2373 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2374 > > │ 1847 / 638612294402184544 / Changed                                          │
00:01:38 verbose #2375 > > │   ("file_1.txt...11111111111111111111111111111111111111111111111c")          │
00:01:38 verbose #2376 > > │ 122 / 638612294402184666 / Changed                                           │
00:01:38 verbose #2377 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2378 > > │ 219 / 638612294402184885 / Changed                                           │
00:01:38 verbose #2379 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2380 > > │ 258 / 638612294402185143 / Changed                                           │
00:01:38 verbose #2381 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2382 > > │ 497 / 638612294402185640 / Changed                                           │
00:01:38 verbose #2383 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2384 > > │ 243 / 638612294402185883 / Changed                                           │
00:01:38 verbose #2385 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2386 > > │ 202 / 638612294402186085 / Changed                                           │
00:01:38 verbose #2387 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2388 > > │ 178 / 638612294402186263 / Changed                                           │
00:01:38 verbose #2389 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2390 > > │ 170 / 638612294402186433 / Changed                                           │
00:01:38 verbose #2391 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2392 > > │ 131 / 638612294402186564 / Changed                                           │
00:01:38 verbose #2393 > > │   ("file_1.txt"...11111111111111111111111111111111111111111111111c")         │
00:01:38 verbose #2394 > > │ 49015 / 638612294402235579 / Changed                                         │
00:01:38 verbose #2395 > > │   ("file_2.tx...22222222222222222222222222222222222222222222222c")           │
00:01:38 verbose #2396 > > │ 158 / 638612294402235737 / Changed                                           │
00:01:38 verbose #2397 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2398 > > │ 515 / 638612294402236252 / Changed                                           │
00:01:38 verbose #2399 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2400 > > │ 114 / 638612294402236366 / Changed                                           │
00:01:38 verbose #2401 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2402 > > │ 347 / 638612294402236713 / Changed                                           │
00:01:38 verbose #2403 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2404 > > │ 193 / 638612294402236906 / Changed                                           │
00:01:38 verbose #2405 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2406 > > │ 174 / 638612294402237080 / Changed                                           │
00:01:38 verbose #2407 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2408 > > │ 218 / 638612294402237298 / Changed                                           │
00:01:38 verbose #2409 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2410 > > │ 56 / 638612294402237354 / Changed                                            │
00:01:38 verbose #2411 > > │   ("file_2.txt",...22222222222222222222222222222222222222222222222c")        │
00:01:38 verbose #2412 > > │ 242 / 638612294402237596 / Changed                                           │
00:01:38 verbose #2413 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2414 > > │ 197 / 638612294402237793 / Changed                                           │
00:01:38 verbose #2415 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2416 > > │ 216 / 638612294402238009 / Changed                                           │
00:01:38 verbose #2417 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2418 > > │ 185 / 638612294402238194 / Changed                                           │
00:01:38 verbose #2419 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2420 > > │ 195 / 638612294402238389 / Changed                                           │
00:01:38 verbose #2421 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2422 > > │ 193 / 638612294402238582 / Changed                                           │
00:01:38 verbose #2423 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2424 > > │ 200 / 638612294402238782 / Changed                                           │
00:01:38 verbose #2425 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2426 > > │ 553 / 638612294402239335 / Changed                                           │
00:01:38 verbose #2427 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2428 > > │ 198 / 638612294402239533 / Changed                                           │
00:01:38 verbose #2429 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2430 > > │ 200 / 638612294402239733 / Changed                                           │
00:01:38 verbose #2431 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2432 > > │ 275 / 638612294402240008 / Changed                                           │
00:01:38 verbose #2433 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2434 > > │ 256 / 638612294402240264 / Changed                                           │
00:01:38 verbose #2435 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2436 > > │ 341 / 638612294402240605 / Changed                                           │
00:01:38 verbose #2437 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2438 > > │ 327 / 638612294402240932 / Changed                                           │
00:01:38 verbose #2439 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2440 > > │ 348 / 638612294402241280 / Changed                                           │
00:01:38 verbose #2441 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2442 > > │ 316 / 638612294402241596 / Changed                                           │
00:01:38 verbose #2443 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2444 > > │ 253 / 638612294402241849 / Changed                                           │
00:01:38 verbose #2445 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2446 > > │ 573 / 638612294402242422 / Changed                                           │
00:01:38 verbose #2447 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2448 > > │ 217 / 638612294402242639 / Changed                                           │
00:01:38 verbose #2449 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2450 > > │ 210 / 638612294402242849 / Changed                                           │
00:01:38 verbose #2451 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2452 > > │ 198 / 638612294402243047 / Changed                                           │
00:01:38 verbose #2453 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2454 > > │ 182 / 638612294402243229 / Changed                                           │
00:01:38 verbose #2455 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2456 > > │ 204 / 638612294402243433 / Changed                                           │
00:01:38 verbose #2457 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2458 > > │ 208 / 638612294402243641 / Changed                                           │
00:01:38 verbose #2459 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2460 > > │ 200 / 638612294402243841 / Changed                                           │
00:01:38 verbose #2461 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2462 > > │ 230 / 638612294402244071 / Changed                                           │
00:01:38 verbose #2463 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2464 > > │ 240 / 638612294402244311 / Changed                                           │
00:01:38 verbose #2465 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2466 > > │ 207 / 638612294402244518 / Changed                                           │
00:01:38 verbose #2467 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2468 > > │ 209 / 638612294402244727 / Changed                                           │
00:01:38 verbose #2469 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2470 > > │ 210 / 638612294402244937 / Changed                                           │
00:01:38 verbose #2471 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2472 > > │ 213 / 638612294402245150 / Changed                                           │
00:01:38 verbose #2473 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2474 > > │ 196 / 638612294402245346 / Changed                                           │
00:01:38 verbose #2475 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2476 > > │ 219 / 638612294402245565 / Changed                                           │
00:01:38 verbose #2477 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2478 > > │ 219 / 638612294402245784 / Changed                                           │
00:01:38 verbose #2479 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2480 > > │ 204 / 638612294402245988 / Changed                                           │
00:01:38 verbose #2481 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2482 > > │ 212 / 638612294402246200 / Changed                                           │
00:01:38 verbose #2483 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2484 > > │ 213 / 638612294402246413 / Changed                                           │
00:01:38 verbose #2485 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2486 > > │ 200 / 638612294402246613 / Changed                                           │
00:01:38 verbose #2487 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2488 > > │ 203 / 638612294402246816 / Changed                                           │
00:01:38 verbose #2489 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2490 > > │ 206 / 638612294402247022 / Changed                                           │
00:01:38 verbose #2491 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2492 > > │ 213 / 638612294402247235 / Changed                                           │
00:01:38 verbose #2493 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2494 > > │ 242 / 638612294402247477 / Changed                                           │
00:01:38 verbose #2495 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2496 > > │ 204 / 638612294402247681 / Changed                                           │
00:01:38 verbose #2497 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2498 > > │ 214 / 638612294402247895 / Changed                                           │
00:01:38 verbose #2499 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2500 > > │ 200 / 638612294402248095 / Changed                                           │
00:01:38 verbose #2501 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2502 > > │ 216 / 638612294402248311 / Changed                                           │
00:01:38 verbose #2503 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2504 > > │ 215 / 638612294402248526 / Changed                                           │
00:01:38 verbose #2505 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2506 > > │ 234 / 638612294402248760 / Changed                                           │
00:01:38 verbose #2507 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2508 > > │ 191 / 638612294402248951 / Changed                                           │
00:01:38 verbose #2509 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2510 > > │ 214 / 638612294402249165 / Changed                                           │
00:01:38 verbose #2511 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2512 > > │ 203 / 638612294402249368 / Changed                                           │
00:01:38 verbose #2513 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2514 > > │ 211 / 638612294402249579 / Changed                                           │
00:01:38 verbose #2515 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2516 > > │ 206 / 638612294402249785 / Changed                                           │
00:01:38 verbose #2517 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2518 > > │ 200 / 638612294402249985 / Changed                                           │
00:01:38 verbose #2519 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2520 > > │ 201 / 638612294402250186 / Changed                                           │
00:01:38 verbose #2521 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2522 > > │ 206 / 638612294402250392 / Changed                                           │
00:01:38 verbose #2523 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2524 > > │ 223 / 638612294402250615 / Changed                                           │
00:01:38 verbose #2525 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2526 > > │ 227 / 638612294402250842 / Changed                                           │
00:01:38 verbose #2527 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2528 > > │ 208 / 638612294402251050 / Changed                                           │
00:01:38 verbose #2529 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2530 > > │ 196 / 638612294402251246 / Changed                                           │
00:01:38 verbose #2531 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2532 > > │ 205 / 638612294402251451 / Changed                                           │
00:01:38 verbose #2533 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2534 > > │ 217 / 638612294402251668 / Changed                                           │
00:01:38 verbose #2535 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2536 > > │ 202 / 638612294402251870 / Changed                                           │
00:01:38 verbose #2537 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2538 > > │ 233 / 638612294402252103 / Changed                                           │
00:01:38 verbose #2539 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2540 > > │ 200 / 638612294402252303 / Changed                                           │
00:01:38 verbose #2541 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2542 > > │ 206 / 638612294402252509 / Changed                                           │
00:01:38 verbose #2543 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2544 > > │ 214 / 638612294402252723 / Changed                                           │
00:01:38 verbose #2545 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2546 > > │ 201 / 638612294402252924 / Changed                                           │
00:01:38 verbose #2547 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2548 > > │ 224 / 638612294402253148 / Changed                                           │
00:01:38 verbose #2549 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2550 > > │ 221 / 638612294402253369 / Changed                                           │
00:01:38 verbose #2551 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2552 > > │ 288 / 638612294402253657 / Changed                                           │
00:01:38 verbose #2553 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2554 > > │ 259 / 638612294402253916 / Changed                                           │
00:01:38 verbose #2555 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2556 > > │ 59 / 638612294402253975 / Changed                                            │
00:01:38 verbose #2557 > > │   ("file_2.txt",...22222222222222222222222222222222222222222222222c")        │
00:01:38 verbose #2558 > > │ 184 / 638612294402254159 / Changed                                           │
00:01:38 verbose #2559 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2560 > > │ 214 / 638612294402254373 / Changed                                           │
00:01:38 verbose #2561 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2562 > > │ 201 / 638612294402254574 / Changed                                           │
00:01:38 verbose #2563 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2564 > > │ 198 / 638612294402254772 / Changed                                           │
00:01:38 verbose #2565 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2566 > > │ 214 / 638612294402254986 / Changed                                           │
00:01:38 verbose #2567 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2568 > > │ 231 / 638612294402255217 / Changed                                           │
00:01:38 verbose #2569 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2570 > > │ 209 / 638612294402255426 / Changed                                           │
00:01:38 verbose #2571 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2572 > > │ 209 / 638612294402255635 / Changed                                           │
00:01:38 verbose #2573 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2574 > > │ 215 / 638612294402255850 / Changed                                           │
00:01:38 verbose #2575 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2576 > > │ 242 / 638612294402256092 / Changed                                           │
00:01:38 verbose #2577 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2578 > > │ 210 / 638612294402256302 / Changed                                           │
00:01:38 verbose #2579 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2580 > > │ 218 / 638612294402256520 / Changed                                           │
00:01:38 verbose #2581 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2582 > > │ 199 / 638612294402256719 / Changed                                           │
00:01:38 verbose #2583 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2584 > > │ 234 / 638612294402256953 / Changed                                           │
00:01:38 verbose #2585 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2586 > > │ 200 / 638612294402257153 / Changed                                           │
00:01:38 verbose #2587 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2588 > > │ 183 / 638612294402257336 / Changed                                           │
00:01:38 verbose #2589 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2590 > > │ 219 / 638612294402257555 / Changed                                           │
00:01:38 verbose #2591 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2592 > > │ 193 / 638612294402257748 / Changed                                           │
00:01:38 verbose #2593 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2594 > > │ 188 / 638612294402257936 / Changed                                           │
00:01:38 verbose #2595 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2596 > > │ 186 / 638612294402258122 / Changed                                           │
00:01:38 verbose #2597 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2598 > > │ 209 / 638612294402258331 / Changed                                           │
00:01:38 verbose #2599 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2600 > > │ 186 / 638612294402258517 / Changed                                           │
00:01:38 verbose #2601 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2602 > > │ 180 / 638612294402258697 / Changed                                           │
00:01:38 verbose #2603 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2604 > > │ 191 / 638612294402258888 / Changed                                           │
00:01:38 verbose #2605 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2606 > > │ 174 / 638612294402259062 / Changed                                           │
00:01:38 verbose #2607 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2608 > > │ 188 / 638612294402259250 / Changed                                           │
00:01:38 verbose #2609 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2610 > > │ 220 / 638612294402259470 / Changed                                           │
00:01:38 verbose #2611 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2612 > > │ 178 / 638612294402259648 / Changed                                           │
00:01:38 verbose #2613 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2614 > > │ 218 / 638612294402259866 / Changed                                           │
00:01:38 verbose #2615 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2616 > > │ 196 / 638612294402260062 / Changed                                           │
00:01:38 verbose #2617 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2618 > > │ 185 / 638612294402260247 / Changed                                           │
00:01:38 verbose #2619 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2620 > > │ 178 / 638612294402260425 / Changed                                           │
00:01:38 verbose #2621 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2622 > > │ 197 / 638612294402260622 / Changed                                           │
00:01:38 verbose #2623 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2624 > > │ 193 / 638612294402260815 / Changed                                           │
00:01:38 verbose #2625 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2626 > > │ 186 / 638612294402261001 / Changed                                           │
00:01:38 verbose #2627 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2628 > > │ 230 / 638612294402261231 / Changed                                           │
00:01:38 verbose #2629 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2630 > > │ 181 / 638612294402261412 / Changed                                           │
00:01:38 verbose #2631 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2632 > > │ 177 / 638612294402261589 / Changed                                           │
00:01:38 verbose #2633 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2634 > > │ 190 / 638612294402261779 / Changed                                           │
00:01:38 verbose #2635 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2636 > > │ 180 / 638612294402261959 / Changed                                           │
00:01:38 verbose #2637 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2638 > > │ 195 / 638612294402262154 / Changed                                           │
00:01:38 verbose #2639 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2640 > > │ 191 / 638612294402262345 / Changed                                           │
00:01:38 verbose #2641 > > │   ("file_2.txt"...22222222222222222222222222222222222222222222222c")         │
00:01:38 verbose #2642 > > │ 52 / 638612294402262397 / Changed                                            │
00:01:38 verbose #2643 > > │   ("file_2.txt",...22222222222222222222222222222222222222222222222c")        │
00:01:38 verbose #2644 > > │ 14969198 / 638612294417231595 / Deleted "file_1.txt"                         │
00:01:38 verbose #2645 > > │ 3156 / 638612294417234751 / Deleted "file_2.txt"                             │
00:01:38 verbose #2646 > > │ [Created ("file1.txt", Some "1a"); Changed ("file1.txt", Some "1a"); Created │
00:01:38 verbose #2647 > > │ ("file2.txt", Some "2a");                                                    │
00:01:38 verbose #2648 > > │  Changed ("file2.txt", Some "2a"); Changed ("file1.txt", Some "1b"); Changed │
00:01:38 verbose #2649 > > │ ("file2.txt", Some "2b");                                                    │
00:01:38 verbose #2650 > > │  Renamed ("file1.txt", ("file_1.txt", Some "1b")); Renamed ("file2.txt",     │
00:01:38 verbose #2651 > > │ ("file_2.txt", Some "2b"));                                                  │
00:01:38 verbose #2652 > > │  Changed ("file_1.txt", Some "1c"); Changed ("file_2.txt", Some "2c");       │
00:01:38 verbose #2653 > > │ Deleted "file_1.txt"; Deleted "file_2.txt"]                                  │
00:01:38 verbose #2654 > > │                                                                              │
00:01:38 verbose #2655 > > │ Some ()                                                                      │
00:01:38 verbose #2656 > > │                                                                              │
00:01:38 verbose #2657 > > │                                                                              │
00:01:38 verbose #2658 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:38 verbose #2659 > >
00:01:38 verbose #2660 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:38 verbose #2661 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:38 verbose #2662 > > │ ### testEventsSorted (test)                                                  │
00:01:38 verbose #2663 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:38 verbose #2664 > >
00:01:38 verbose #2665 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:38 verbose #2666 > > //// test
00:01:38 verbose #2667 > >
00:01:38 verbose #2668 > > let inline sortEvent event =
00:01:38 verbose #2669 > >     match event with
00:01:38 verbose #2670 > >     | FileSystemChange.Failure _ -> 0
00:01:38 verbose #2671 > >     | FileSystemChange.Created _ -> 1
00:01:38 verbose #2672 > >     | FileSystemChange.Changed _ -> 2
00:01:38 verbose #2673 > >     | FileSystemChange.Renamed (_oldPath, _) -> 3
00:01:38 verbose #2674 > >     | FileSystemChange.Deleted _ -> 4
00:01:38 verbose #2675 > >
00:01:38 verbose #2676 > > let inline formatEvents events =
00:01:38 verbose #2677 > >     events
00:01:38 verbose #2678 > >     |> Seq.toList
00:01:38 verbose #2679 > >     |> List.sortBy (snd >> sortEvent)
00:01:38 verbose #2680 > >     |> List.choose (fun (ticks, event) ->
00:01:38 verbose #2681 > >         match event with
00:01:38 verbose #2682 > >         | FileSystemChange.Failure _ ->
00:01:38 verbose #2683 > >             None
00:01:38 verbose #2684 > >         | FileSystemChange.Changed (path, _) ->
00:01:38 verbose #2685 > >             Some (ticks, System.IO.Path.GetFileName path, nameof
00:01:38 verbose #2686 > > FileSystemChangeType.Changed)
00:01:38 verbose #2687 > >         | FileSystemChange.Created (path, _) ->
00:01:38 verbose #2688 > >             Some (ticks, System.IO.Path.GetFileName path, nameof
00:01:38 verbose #2689 > > FileSystemChangeType.Created)
00:01:38 verbose #2690 > >         | FileSystemChange.Deleted path ->
00:01:38 verbose #2691 > >             Some (ticks, System.IO.Path.GetFileName path, nameof
00:01:38 verbose #2692 > > FileSystemChangeType.Deleted)
00:01:38 verbose #2693 > >         | FileSystemChange.Renamed (_oldPath, (path, _)) ->
00:01:38 verbose #2694 > >             Some (ticks, System.IO.Path.GetFileName path, nameof
00:01:38 verbose #2695 > > FileSystemChangeType.Renamed)
00:01:38 verbose #2696 > >     )
00:01:38 verbose #2697 > >     |> List.sortBy (fun (_, path, _) -> path)
00:01:38 verbose #2698 > >     |> List.distinctBy (fun (_, path, event) -> path, event)
00:01:38 verbose #2699 > >
00:01:38 verbose #2700 > > let inline testEventsSorted
00:01:38 verbose #2701 > >     (watchFn : string -> FSharp.Control.AsyncSeq<int64 * FileSystemChange> *
00:01:38 verbose #2702 > > IDisposable)
00:01:38 verbose #2703 > >     write
00:01:38 verbose #2704 > >     =
00:01:38 verbose #2705 > >     let struct (tempDir, tempDisposable) =
00:01:38 verbose #2706 > >         "FileSystem.testEventsSorted"
00:01:38 verbose #2707 > >         |> SpiralCrypto.hash_text
00:01:38 verbose #2708 > >         |> SpiralFileSystem.create_temp_dir'
00:01:38 verbose #2709 > >     let stream, disposable = watchFn tempDir
00:01:38 verbose #2710 > >
00:01:38 verbose #2711 > >     let events = System.Collections.Concurrent.ConcurrentBag ()
00:01:38 verbose #2712 > >
00:01:38 verbose #2713 > >     let inline iter () =
00:01:38 verbose #2714 > >         stream
00:01:38 verbose #2715 > >         |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun event -> async {
00:01:38 verbose #2716 > > events.Add event })
00:01:38 verbose #2717 > >
00:01:38 verbose #2718 > >     let run = async {
00:01:38 verbose #2719 > >         let! _ = iter () |> Async.StartChild
00:01:38 verbose #2720 > >         do! Async.Sleep 250
00:01:38 verbose #2721 > >         return! write tempDir
00:01:38 verbose #2722 > >     }
00:01:38 verbose #2723 > >
00:01:38 verbose #2724 > >     try
00:01:38 verbose #2725 > >         run
00:01:38 verbose #2726 > >         |> Async.runWithTimeout 5000
00:01:38 verbose #2727 > >         |> _assertEqual (Some ())
00:01:38 verbose #2728 > >     finally
00:01:38 verbose #2729 > >         disposable.Dispose ()
00:01:38 verbose #2730 > >         tempDisposable.Dispose ()
00:01:38 verbose #2731 > >
00:01:38 verbose #2732 > >     let events = formatEvents events
00:01:38 verbose #2733 > >
00:01:38 verbose #2734 > >     let eventMap =
00:01:38 verbose #2735 > >         events
00:01:38 verbose #2736 > >         |> List.map (fun (ticks, path, event) -> path, (event, ticks))
00:01:38 verbose #2737 > >         |> List.groupBy fst
00:01:38 verbose #2738 > >         |> List.map (fun (path, events) ->
00:01:38 verbose #2739 > >             let event, _ticks =
00:01:38 verbose #2740 > >                 events
00:01:38 verbose #2741 > >                 |> List.map snd
00:01:38 verbose #2742 > >                 |> List.sortByDescending snd
00:01:38 verbose #2743 > >                 |> List.head
00:01:38 verbose #2744 > >
00:01:38 verbose #2745 > >             path, event
00:01:38 verbose #2746 > >         )
00:01:38 verbose #2747 > >         |> Map.ofList
00:01:38 verbose #2748 > >
00:01:38 verbose #2749 > >     let eventList =
00:01:38 verbose #2750 > >         events
00:01:38 verbose #2751 > >         |> List.map (fun (_ticks, path, event) -> path, event)
00:01:38 verbose #2752 > >
00:01:38 verbose #2753 > >     eventMap, eventList
00:01:38 verbose #2754 > >
00:01:38 verbose #2755 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:38 verbose #2756 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:38 verbose #2757 > > │ #### create and delete (test)                                                │
00:01:38 verbose #2758 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:38 verbose #2759 > >
00:01:38 verbose #2760 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:38 verbose #2761 > > //// test
00:01:38 verbose #2762 > >
00:01:38 verbose #2763 > > let inline write path = async {
00:01:38 verbose #2764 > >     let n = 3
00:01:38 verbose #2765 > >
00:01:38 verbose #2766 > >     for i = 1 to n do
00:01:38 verbose #2767 > >         do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:38 verbose #2768 > > $"file{i}.txt")
00:01:38 verbose #2769 > >
00:01:38 verbose #2770 > >     for i = 1 to n do
00:01:38 verbose #2771 > >         do! SpiralFileSystem.delete_file_async (path </> $"file{i}.txt") |>
00:01:38 verbose #2772 > > Async.Ignore
00:01:38 verbose #2773 > >
00:01:38 verbose #2774 > >     do! Async.Sleep 150
00:01:38 verbose #2775 > > }
00:01:38 verbose #2776 > >
00:01:38 verbose #2777 > > let inline run () =
00:01:38 verbose #2778 > >     let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false))
00:01:38 verbose #2779 > > write
00:01:38 verbose #2780 > >
00:01:38 verbose #2781 > >     [[
00:01:38 verbose #2782 > >         "file1.txt", nameof FileSystemChangeType.Created
00:01:38 verbose #2783 > >         "file1.txt", nameof FileSystemChangeType.Changed
00:01:38 verbose #2784 > >         "file1.txt", nameof FileSystemChangeType.Deleted
00:01:38 verbose #2785 > >
00:01:38 verbose #2786 > >         "file2.txt", nameof FileSystemChangeType.Created
00:01:38 verbose #2787 > >         "file2.txt", nameof FileSystemChangeType.Changed
00:01:38 verbose #2788 > >         "file2.txt", nameof FileSystemChangeType.Deleted
00:01:38 verbose #2789 > >
00:01:38 verbose #2790 > >         "file3.txt", nameof FileSystemChangeType.Created
00:01:38 verbose #2791 > >         "file3.txt", nameof FileSystemChangeType.Changed
00:01:38 verbose #2792 > >         "file3.txt", nameof FileSystemChangeType.Deleted
00:01:38 verbose #2793 > >     ]]
00:01:38 verbose #2794 > >     |> _sequenceEqual eventList
00:01:38 verbose #2795 > >
00:01:38 verbose #2796 > >     [[
00:01:38 verbose #2797 > >         "file1.txt", nameof FileSystemChangeType.Deleted
00:01:38 verbose #2798 > >         "file2.txt", nameof FileSystemChangeType.Deleted
00:01:38 verbose #2799 > >         "file3.txt", nameof FileSystemChangeType.Deleted
00:01:38 verbose #2800 > >     ]]
00:01:38 verbose #2801 > >     |> Map.ofList
00:01:38 verbose #2802 > >     |> _sequenceEqual eventMap
00:01:38 verbose #2803 > >
00:01:38 verbose #2804 > > run
00:01:38 verbose #2805 > > |> retry_fn 3
00:01:38 verbose #2806 > > |> _assertEqual (Some ())
00:01:39 verbose #2807 > >
00:01:39 verbose #2808 > > ╭─[ 1.07s - stdout ]───────────────────────────────────────────────────────────╮
00:01:39 verbose #2809 > > │ Some ()                                                                      │
00:01:39 verbose #2810 > > │                                                                              │
00:01:39 verbose #2811 > > │ 00:00:17   debug #5 FileSystem.watchWithFilter / Disposing watch stream │
00:01:39 verbose #2812 > > │ / filter: FileName, LastWrite                                                │
00:01:39 verbose #2813 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); ("file1.txt",           │
00:01:39 verbose #2814 > > │ "Deleted"); ("file2.txt", "Created");                                        │
00:01:39 verbose #2815 > > │  ("file2.txt", "Changed"); ("file2.txt", "Deleted"); ("file3.txt",           │
00:01:39 verbose #2816 > > │ "Created"); ("file3.txt", "Changed");                                        │
00:01:39 verbose #2817 > > │  ("file3.txt", "Deleted")]                                                   │
00:01:39 verbose #2818 > > │                                                                              │
00:01:39 verbose #2819 > > │ map [("file1.txt", "Deleted"); ("file2.txt", "Deleted"); ("file3.txt",       │
00:01:39 verbose #2820 > > │ "Deleted")]                                                                  │
00:01:39 verbose #2821 > > │                                                                              │
00:01:39 verbose #2822 > > │ Some ()                                                                      │
00:01:39 verbose #2823 > > │                                                                              │
00:01:39 verbose #2824 > > │                                                                              │
00:01:39 verbose #2825 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:39 verbose #2826 > >
00:01:39 verbose #2827 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:39 verbose #2828 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:39 verbose #2829 > > │ #### change (test)                                                           │
00:01:39 verbose #2830 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:39 verbose #2831 > >
00:01:39 verbose #2832 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:39 verbose #2833 > > //// test
00:01:39 verbose #2834 > >
00:01:39 verbose #2835 > > let inline write path = async {
00:01:39 verbose #2836 > >     let n = 2
00:01:39 verbose #2837 > >
00:01:39 verbose #2838 > >     for i = 1 to n do
00:01:39 verbose #2839 > >         do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:39 verbose #2840 > > $"file{i}.txt")
00:01:39 verbose #2841 > >
00:01:39 verbose #2842 > >     for i = 1 to n do
00:01:39 verbose #2843 > >         do! "" |> SpiralFileSystem.write_all_text_async (path </>
00:01:39 verbose #2844 > > $"file{i}.txt")
00:01:39 verbose #2845 > >
00:01:39 verbose #2846 > >     for i = 1 to n do
00:01:39 verbose #2847 > >         do! SpiralFileSystem.delete_file_async (path </> $"file{i}.txt") |>
00:01:39 verbose #2848 > > Async.Ignore
00:01:39 verbose #2849 > >
00:01:39 verbose #2850 > >     do! Async.Sleep 150
00:01:39 verbose #2851 > > }
00:01:39 verbose #2852 > >
00:01:39 verbose #2853 > > let inline run () =
00:01:39 verbose #2854 > >     let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false))
00:01:39 verbose #2855 > > write
00:01:39 verbose #2856 > >
00:01:39 verbose #2857 > >     [[
00:01:39 verbose #2858 > >         "file1.txt", nameof FileSystemChangeType.Created
00:01:39 verbose #2859 > >         "file1.txt", nameof FileSystemChangeType.Changed
00:01:39 verbose #2860 > >         "file1.txt", nameof FileSystemChangeType.Deleted
00:01:39 verbose #2861 > >
00:01:39 verbose #2862 > >         "file2.txt", nameof FileSystemChangeType.Created
00:01:39 verbose #2863 > >         "file2.txt", nameof FileSystemChangeType.Changed
00:01:39 verbose #2864 > >         "file2.txt", nameof FileSystemChangeType.Deleted
00:01:39 verbose #2865 > >     ]]
00:01:39 verbose #2866 > >     |> _sequenceEqual eventList
00:01:39 verbose #2867 > >
00:01:39 verbose #2868 > >     [[
00:01:39 verbose #2869 > >         "file1.txt", nameof FileSystemChangeType.Deleted
00:01:39 verbose #2870 > >         "file2.txt", nameof FileSystemChangeType.Deleted
00:01:39 verbose #2871 > >     ]]
00:01:39 verbose #2872 > >     |> Map.ofList
00:01:39 verbose #2873 > >     |> _sequenceEqual eventMap
00:01:39 verbose #2874 > >
00:01:39 verbose #2875 > > run
00:01:39 verbose #2876 > > |> retry_fn 3
00:01:39 verbose #2877 > > |> _assertEqual (Some ())
00:01:40 verbose #2878 > >
00:01:40 verbose #2879 > > ╭─[ 1.06s - stdout ]───────────────────────────────────────────────────────────╮
00:01:40 verbose #2880 > > │ Some ()                                                                      │
00:01:40 verbose #2881 > > │                                                                              │
00:01:40 verbose #2882 > > │ 00:00:18   debug #6 FileSystem.watchWithFilter / Disposing watch stream │
00:01:40 verbose #2883 > > │ / filter: FileName, LastWrite                                                │
00:01:40 verbose #2884 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); ("file1.txt",           │
00:01:40 verbose #2885 > > │ "Deleted"); ("file2.txt", "Created");                                        │
00:01:40 verbose #2886 > > │  ("file2.txt", "Changed"); ("file2.txt", "Deleted")]                         │
00:01:40 verbose #2887 > > │                                                                              │
00:01:40 verbose #2888 > > │ map [("file1.txt", "Deleted"); ("file2.txt", "Deleted")]                     │
00:01:40 verbose #2889 > > │                                                                              │
00:01:40 verbose #2890 > > │ Some ()                                                                      │
00:01:40 verbose #2891 > > │                                                                              │
00:01:40 verbose #2892 > > │                                                                              │
00:01:40 verbose #2893 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:40 verbose #2894 > >
00:01:40 verbose #2895 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:40 verbose #2896 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:40 verbose #2897 > > │ #### rename (test)                                                           │
00:01:40 verbose #2898 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:40 verbose #2899 > >
00:01:40 verbose #2900 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:40 verbose #2901 > > //// test
00:01:40 verbose #2902 > >
00:01:40 verbose #2903 > > let inline write path = async {
00:01:40 verbose #2904 > >     let n = 2
00:01:40 verbose #2905 > >
00:01:40 verbose #2906 > >     for i = 1 to n do
00:01:40 verbose #2907 > >         do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:40 verbose #2908 > > $"file{i}.txt")
00:01:40 verbose #2909 > >
00:01:40 verbose #2910 > >     for i = 1 to n do
00:01:40 verbose #2911 > >         do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path
00:01:40 verbose #2912 > > </> $"file_{i}.txt") |> Async.Ignore
00:01:40 verbose #2913 > >
00:01:40 verbose #2914 > >     for i = 1 to n do
00:01:40 verbose #2915 > >         do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |>
00:01:40 verbose #2916 > > Async.Ignore
00:01:40 verbose #2917 > >
00:01:40 verbose #2918 > >     do! Async.Sleep 150
00:01:40 verbose #2919 > > }
00:01:40 verbose #2920 > >
00:01:40 verbose #2921 > > let inline run () =
00:01:40 verbose #2922 > >     let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false))
00:01:40 verbose #2923 > > write
00:01:40 verbose #2924 > >
00:01:40 verbose #2925 > >     [[
00:01:40 verbose #2926 > >         "file1.txt", nameof FileSystemChangeType.Created
00:01:40 verbose #2927 > >         "file1.txt", nameof FileSystemChangeType.Changed
00:01:40 verbose #2928 > >         "file2.txt", nameof FileSystemChangeType.Created
00:01:40 verbose #2929 > >         "file2.txt", nameof FileSystemChangeType.Changed
00:01:40 verbose #2930 > >
00:01:40 verbose #2931 > >         "file_1.txt", nameof FileSystemChangeType.Renamed
00:01:40 verbose #2932 > >         "file_1.txt", nameof FileSystemChangeType.Deleted
00:01:40 verbose #2933 > >
00:01:40 verbose #2934 > >         "file_2.txt", nameof FileSystemChangeType.Renamed
00:01:40 verbose #2935 > >         "file_2.txt", nameof FileSystemChangeType.Deleted
00:01:40 verbose #2936 > >     ]]
00:01:40 verbose #2937 > >     |> _sequenceEqual eventList
00:01:40 verbose #2938 > >
00:01:40 verbose #2939 > >     [[
00:01:40 verbose #2940 > >         "file1.txt", nameof FileSystemChangeType.Changed
00:01:40 verbose #2941 > >         "file2.txt", nameof FileSystemChangeType.Changed
00:01:40 verbose #2942 > >         "file_1.txt", nameof FileSystemChangeType.Deleted
00:01:40 verbose #2943 > >         "file_2.txt", nameof FileSystemChangeType.Deleted
00:01:40 verbose #2944 > >     ]]
00:01:40 verbose #2945 > >     |> Map.ofList
00:01:40 verbose #2946 > >     |> _sequenceEqual eventMap
00:01:40 verbose #2947 > >
00:01:40 verbose #2948 > > run
00:01:40 verbose #2949 > > |> retry_fn 3
00:01:40 verbose #2950 > > |> _assertEqual (Some ())
00:01:42 verbose #2951 > >
00:01:42 verbose #2952 > > ╭─[ 1.11s - stdout ]───────────────────────────────────────────────────────────╮
00:01:42 verbose #2953 > > │ Some ()                                                                      │
00:01:42 verbose #2954 > > │                                                                              │
00:01:42 verbose #2955 > > │ 00:00:19   debug #7 FileSystem.watchWithFilter / Disposing watch stream │
00:01:42 verbose #2956 > > │ / filter: FileName, LastWrite                                                │
00:01:42 verbose #2957 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); ("file2.txt",           │
00:01:42 verbose #2958 > > │ "Created"); ("file2.txt", "Changed");                                        │
00:01:42 verbose #2959 > > │  ("file_1.txt", "Renamed"); ("file_1.txt", "Deleted"); ("file_2.txt",        │
00:01:42 verbose #2960 > > │ "Renamed"); ("file_2.txt", "Deleted")]                                       │
00:01:42 verbose #2961 > > │                                                                              │
00:01:42 verbose #2962 > > │ map [("file1.txt", "Changed"); ("file2.txt", "Changed"); ("file_1.txt",      │
00:01:42 verbose #2963 > > │ "Deleted"); ("file_2.txt", "Deleted")]                                       │
00:01:42 verbose #2964 > > │                                                                              │
00:01:42 verbose #2965 > > │ Some ()                                                                      │
00:01:42 verbose #2966 > > │                                                                              │
00:01:42 verbose #2967 > > │                                                                              │
00:01:42 verbose #2968 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:42 verbose #2969 > >
00:01:42 verbose #2970 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:42 verbose #2971 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:42 verbose #2972 > > │ #### full (test)                                                             │
00:01:42 verbose #2973 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:42 verbose #2974 > >
00:01:42 verbose #2975 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:42 verbose #2976 > > //// test
00:01:42 verbose #2977 > >
00:01:42 verbose #2978 > > let inline write path = async {
00:01:42 verbose #2979 > >     let n = 2
00:01:42 verbose #2980 > >
00:01:42 verbose #2981 > >     for i = 1 to n do
00:01:42 verbose #2982 > >         do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:42 verbose #2983 > > $"file{i}.txt")
00:01:42 verbose #2984 > >
00:01:42 verbose #2985 > >     for i = 1 to n do
00:01:42 verbose #2986 > >         do! "" |> SpiralFileSystem.write_all_text_async (path </>
00:01:42 verbose #2987 > > $"file{i}.txt")
00:01:42 verbose #2988 > >
00:01:42 verbose #2989 > >     for i = 1 to n do
00:01:42 verbose #2990 > >         do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path
00:01:42 verbose #2991 > > </> $"file_{i}.txt") |> Async.Ignore
00:01:42 verbose #2992 > >
00:01:42 verbose #2993 > >     for i = 1 to n do
00:01:42 verbose #2994 > >         do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </>
00:01:42 verbose #2995 > > $"file_{i}.txt")
00:01:42 verbose #2996 > >
00:01:42 verbose #2997 > >     for i = 1 to n do
00:01:42 verbose #2998 > >         do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |>
00:01:42 verbose #2999 > > Async.Ignore
00:01:42 verbose #3000 > >
00:01:42 verbose #3001 > >     do! Async.Sleep 150
00:01:42 verbose #3002 > > }
00:01:42 verbose #3003 > >
00:01:42 verbose #3004 > > let inline run () =
00:01:42 verbose #3005 > >     let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false))
00:01:42 verbose #3006 > > write
00:01:42 verbose #3007 > >
00:01:42 verbose #3008 > >     [[
00:01:42 verbose #3009 > >         "file1.txt", nameof FileSystemChangeType.Created
00:01:42 verbose #3010 > >         "file1.txt", nameof FileSystemChangeType.Changed
00:01:42 verbose #3011 > >         "file2.txt", nameof FileSystemChangeType.Created
00:01:42 verbose #3012 > >         "file2.txt", nameof FileSystemChangeType.Changed
00:01:42 verbose #3013 > >
00:01:42 verbose #3014 > >         "file_1.txt", nameof FileSystemChangeType.Changed
00:01:42 verbose #3015 > >         "file_1.txt", nameof FileSystemChangeType.Renamed
00:01:42 verbose #3016 > >         "file_1.txt", nameof FileSystemChangeType.Deleted
00:01:42 verbose #3017 > >
00:01:42 verbose #3018 > >         "file_2.txt", nameof FileSystemChangeType.Changed
00:01:42 verbose #3019 > >         "file_2.txt", nameof FileSystemChangeType.Renamed
00:01:42 verbose #3020 > >         "file_2.txt", nameof FileSystemChangeType.Deleted
00:01:42 verbose #3021 > >     ]]
00:01:42 verbose #3022 > >     |> _sequenceEqual eventList
00:01:42 verbose #3023 > >
00:01:42 verbose #3024 > >     [[
00:01:42 verbose #3025 > >         "file1.txt", nameof FileSystemChangeType.Changed
00:01:42 verbose #3026 > >         "file2.txt", nameof FileSystemChangeType.Changed
00:01:42 verbose #3027 > >         "file_1.txt", nameof FileSystemChangeType.Deleted
00:01:42 verbose #3028 > >         "file_2.txt", nameof FileSystemChangeType.Deleted
00:01:42 verbose #3029 > >     ]]
00:01:42 verbose #3030 > >     |> Map.ofList
00:01:42 verbose #3031 > >     |> _sequenceEqual eventMap
00:01:42 verbose #3032 > >
00:01:42 verbose #3033 > > run
00:01:42 verbose #3034 > > |> retry_fn 3
00:01:42 verbose #3035 > > |> _assertEqual (Some ())
00:01:43 verbose #3036 > >
00:01:43 verbose #3037 > > ╭─[ 1.22s - stdout ]───────────────────────────────────────────────────────────╮
00:01:43 verbose #3038 > > │ Some ()                                                                      │
00:01:43 verbose #3039 > > │                                                                              │
00:01:43 verbose #3040 > > │ 00:00:20   debug #8 FileSystem.watchWithFilter / Disposing watch stream │
00:01:43 verbose #3041 > > │ / filter: FileName, LastWrite                                                │
00:01:43 verbose #3042 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); ("file2.txt",           │
00:01:43 verbose #3043 > > │ "Created"); ("file2.txt", "Changed");                                        │
00:01:43 verbose #3044 > > │  ("file_1.txt", "Changed"); ("file_1.txt", "Renamed"); ("file_1.txt",        │
00:01:43 verbose #3045 > > │ "Deleted"); ("file_2.txt", "Changed");                                       │
00:01:43 verbose #3046 > > │  ("file_2.txt", "Renamed"); ("file_2.txt", "Deleted")]                       │
00:01:43 verbose #3047 > > │                                                                              │
00:01:43 verbose #3048 > > │ map [("file1.txt", "Changed"); ("file2.txt", "Changed"); ("file_1.txt",      │
00:01:43 verbose #3049 > > │ "Deleted"); ("file_2.txt", "Deleted")]                                       │
00:01:43 verbose #3050 > > │                                                                              │
00:01:43 verbose #3051 > > │ Some ()                                                                      │
00:01:43 verbose #3052 > > │                                                                              │
00:01:43 verbose #3053 > > │                                                                              │
00:01:43 verbose #3054 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:43 verbose #3055 > 00:00:35 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 164934 }
00:01:43 verbose #3056 > 00:00:35   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:01:43 verbose #3057 >     "nbconvert",
00:01:43 verbose #3058 >     "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb",
00:01:43 verbose #3059 >     "--to",
00:01:43 verbose #3060 >     "html",
00:01:43 verbose #3061 >     "--HTMLExporter.theme=dark",
00:01:43 verbose #3062 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:44 verbose #3063 > 00:00:36 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb to html
00:01:44 verbose #3064 > 00:00:36 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:44 verbose #3065 > 00:00:36 verbose #7 !   validate(nb)
00:01:44 verbose #3066 > 00:00:36 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:44 verbose #3067 > 00:00:36 verbose #9 !   return _pygments_highlight(
00:01:45 verbose #3068 > 00:00:37 verbose #10 ! [NbConvertApp] Writing 441354 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.html
00:01:45 verbose #3069 > 00:00:37 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 }
00:01:45 verbose #3070 > 00:00:37   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 }
00:01:45 verbose #3071 > 00:00:37   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:01:45 verbose #3072 >     "-c",
00:01:45 verbose #3073 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:01:45 verbose #3074 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:45 verbose #3075 > 00:00:37 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:45 verbose #3076 > 00:00:37   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:45 verbose #3077 > 00:00:37   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 165897 }
00:01:45   debug #3078 runtime.execute_with_options_async / { exit_code = 0; output_length = 172889 }
00:01:45   debug #5 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path FileSystem.dib --retries 3
00:01:45   debug #3079 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path Runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:45 verbose #3080 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Runtime.dib", "--retries", "3"])) }
00:01:45 verbose #3081 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:01:45 verbose #3082 >     "repl",
00:01:45 verbose #3083 >     "--exit-after-run",
00:01:45 verbose #3084 >     "--run",
00:01:45 verbose #3085 >     "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib",
00:01:45 verbose #3086 >     "--output-path",
00:01:45 verbose #3087 >     "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb",
00:01:45 verbose #3088 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:01:46 verbose #3089 > >
00:01:46 verbose #3090 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:46 verbose #3091 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:46 verbose #3092 > > │ # Runtime (Polyglot)                                                         │
00:01:46 verbose #3093 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:49 verbose #3094 > >
00:01:49 verbose #3095 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:49 verbose #3096 > > #r
00:01:49 verbose #3097 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
00:01:49 verbose #3098 > > dard2.1/FSharp.Control.AsyncSeq.dll"
00:01:49 verbose #3099 > > #r
00:01:49 verbose #3100 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
00:01:49 verbose #3101 > > 0/System.Reactive.dll"
00:01:49 verbose #3102 > > #r
00:01:49 verbose #3103 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib
00:01:49 verbose #3104 > > netstandard2.0/System.Reactive.Linq.dll"
00:01:49 verbose #3105 > > #r
00:01:49 verbose #3106 > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
00:02:01 verbose #3107 > >
00:02:01 verbose #3108 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:01 verbose #3109 > > #if !INTERACTIVE
00:02:01 verbose #3110 > > open Lib
00:02:01 verbose #3111 > > #endif
00:02:01 verbose #3112 > >
00:02:01 verbose #3113 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:01 verbose #3114 > > open Common
00:02:01 verbose #3115 > >
00:02:01 verbose #3116 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:01 verbose #3117 > > //// test
00:02:01 verbose #3118 > >
00:02:01 verbose #3119 > > open SpiralFileSystem.Operators
00:02:01 verbose #3120 > >
00:02:01 verbose #3121 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:01 verbose #3122 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:01 verbose #3123 > > │ ## parseArgs                                                                 │
00:02:01 verbose #3124 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:01 verbose #3125 > >
00:02:01 verbose #3126 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:01 verbose #3127 > > let inline parseArgs<'T when 'T :> Argu.IArgParserTemplate> args =
00:02:01 verbose #3128 > >     let assemblyName =
00:02:01 verbose #3129 > > System.Reflection.Assembly.GetEntryAssembly().GetName().Name
00:02:01 verbose #3130 > >     let errorHandler : Argu.IExiter =
00:02:01 verbose #3131 > >         if [[ "Microsoft.DotNet.Interactive.App"; "dotnet-repl" ]] |>
00:02:01 verbose #3132 > > List.contains assemblyName
00:02:01 verbose #3133 > >         then Argu.ExceptionExiter ()
00:02:01 verbose #3134 > >         else Argu.ProcessExiter (function Argu.ErrorCode.HelpText -> None | _ ->
00:02:01 verbose #3135 > > Some System.ConsoleColor.Red)
00:02:01 verbose #3136 > >
00:02:01 verbose #3137 > >     let parser =
00:02:01 verbose #3138 > >         Argu.ArgumentParser.Create<'T> (
00:02:01 verbose #3139 > >             programName = $"{assemblyName}{SpiralPlatform.get_executable_suffix
00:02:01 verbose #3140 > > ()}",
00:02:01 verbose #3141 > >             errorHandler = errorHandler
00:02:01 verbose #3142 > >         )
00:02:01 verbose #3143 > >
00:02:01 verbose #3144 > >     parser.ParseCommandLine args
00:02:01 verbose #3145 > >
00:02:01 verbose #3146 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:01 verbose #3147 > > //// test
00:02:01 verbose #3148 > >
00:02:01 verbose #3149 > > [[<RequireQualifiedAccess>]]
00:02:01 verbose #3150 > > type Arguments =
00:02:01 verbose #3151 > >     | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce;
00:02:01 verbose #3152 > > Argu.ArguAttributes.Last>]]
00:02:01 verbose #3153 > >         Paths of paths : string list
00:02:01 verbose #3154 > >
00:02:01 verbose #3155 > >     interface Argu.IArgParserTemplate with
00:02:01 verbose #3156 > >         member s.Usage =
00:02:01 verbose #3157 > >             match s with
00:02:01 verbose #3158 > >             | Paths _ -> nameof Paths
00:02:01 verbose #3159 > >
00:02:01 verbose #3160 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:01 verbose #3161 > > //// test
00:02:01 verbose #3162 > >
00:02:01 verbose #3163 > > Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
00:02:01 verbose #3164 > >
00:02:01 verbose #3165 > > ╭─[ 90.81ms - return value ]───────────────────────────────────────────────────╮
00:02:01 verbose #3166 > > │ "USAGE: dotnet-repl [--help] <paths>...                                      │
00:02:01 verbose #3167 > > │                                                                              │
00:02:01 verbose #3168 > > │ PATHS:                                                                       │
00:02:01 verbose #3169 > > │                                                                              │
00:02:01 verbose #3170 > > │     <paths>...            Paths                                              │
00:02:01 verbose #3171 > > │                                                                              │
00:02:01 verbose #3172 > > │ OPTIONS:                                                                     │
00:02:01 verbose #3173 > > │                                                                              │
00:02:01 verbose #3174 > > │     --help                display this list of options.                      │
00:02:01 verbose #3175 > > │ "                                                                            │
00:02:01 verbose #3176 > > │                                                                              │
00:02:01 verbose #3177 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:01 verbose #3178 > >
00:02:01 verbose #3179 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:01 verbose #3180 > > //// test
00:02:01 verbose #3181 > >
00:02:01 verbose #3182 > > fun () -> parseArgs<Arguments> [[||]] |> ignore
00:02:01 verbose #3183 > > |> _throwsC (fun ex _ ->
00:02:01 verbose #3184 > >     SpiralSm.format_exception ex
00:02:01 verbose #3185 > >     |> _stringContains "Argu.ArguParseException: ERROR: missing parameter
00:02:01 verbose #3186 > > '<paths>...'."
00:02:01 verbose #3187 > > )
00:02:01 verbose #3188 > >
00:02:01 verbose #3189 > > ╭─[ 65.64ms - stdout ]─────────────────────────────────────────────────────────╮
00:02:01 verbose #3190 > > │ <fun:it@3-3>                                                                 │
00:02:01 verbose #3191 > > │                                                                              │
00:02:01 verbose #3192 > > │ "Argu.ArguParseException: ERROR: missing parameter '<paths>...'.             │
00:02:01 verbose #3193 > > │ USAGE: dotnet-repl [--help] <paths>...                                       │
00:02:01 verbose #3194 > > │                                                                              │
00:02:01 verbose #3195 > > │ PATHS:                                                                       │
00:02:01 verbose #3196 > > │                                                                              │
00:02:01 verbose #3197 > > │     <paths>...            Paths                                              │
00:02:01 verbose #3198 > > │                                                                              │
00:02:01 verbose #3199 > > │ OPTIONS:                                                                     │
00:02:01 verbose #3200 > > │                                                                              │
00:02:01 verbose #3201 > > │     --help                display this list of options.                      │
00:02:01 verbose #3202 > > │ "                                                                            │
00:02:01 verbose #3203 > > │                                                                              │
00:02:01 verbose #3204 > > │                                                                              │
00:02:01 verbose #3205 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:01 verbose #3206 > >
00:02:01 verbose #3207 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:01 verbose #3208 > > let inline parseAllArgs<'T when 'T :> Argu.IArgParserTemplate> args =
00:02:01 verbose #3209 > >     args
00:02:01 verbose #3210 > >     |> parseArgs<'T>
00:02:01 verbose #3211 > >     |> fun results -> results.GetAllResults ()
00:02:01 verbose #3212 > >
00:02:01 verbose #3213 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:01 verbose #3214 > > //// test
00:02:01 verbose #3215 > >
00:02:01 verbose #3216 > > [[<RequireQualifiedAccess>]]
00:02:01 verbose #3217 > > type Arguments =
00:02:01 verbose #3218 > >     | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce;
00:02:01 verbose #3219 > > Argu.ArguAttributes.Last>]]
00:02:01 verbose #3220 > >         Paths of paths : string list
00:02:01 verbose #3221 > >
00:02:01 verbose #3222 > >     interface Argu.IArgParserTemplate with
00:02:01 verbose #3223 > >         member s.Usage =
00:02:01 verbose #3224 > >             match s with
00:02:01 verbose #3225 > >             | Paths _ -> nameof Paths
00:02:01 verbose #3226 > >
00:02:01 verbose #3227 > > parseAllArgs<Arguments> [[| "a b"; "c" |]]
00:02:01 verbose #3228 > > |> _assertEqual [[ Arguments.Paths [[ "a b"; "c" ]] ]]
00:02:01 verbose #3229 > >
00:02:01 verbose #3230 > > ╭─[ 57.29ms - stdout ]─────────────────────────────────────────────────────────╮
00:02:01 verbose #3231 > > │ [Paths ["a b"; "c"]]                                                         │
00:02:01 verbose #3232 > > │                                                                              │
00:02:01 verbose #3233 > > │                                                                              │
00:02:01 verbose #3234 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:01 verbose #3235 > >
00:02:01 verbose #3236 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:01 verbose #3237 > > let inline parseArgsMap<'T when 'T :> Argu.IArgParserTemplate> args =
00:02:01 verbose #3238 > >     args
00:02:01 verbose #3239 > >     |> parseAllArgs<'T>
00:02:01 verbose #3240 > >     |> List.groupBy CommonFSharp.getUnionCaseName<'T>
00:02:01 verbose #3241 > >     |> Map.ofList
00:02:01 verbose #3242 > >
00:02:01 verbose #3243 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:02:01 verbose #3244 > > //// test
00:02:01 verbose #3245 > >
00:02:01 verbose #3246 > > parseArgsMap<Arguments> [[| "a b"; "c" |]]
00:02:01 verbose #3247 > > |> _assertEqual (
00:02:01 verbose #3248 > >     [[ nameof Arguments.Paths, [[ Arguments.Paths [[ "a b"; "c" ]] ]] ]]
00:02:01 verbose #3249 > >     |> Map.ofList
00:02:01 verbose #3250 > > )
00:02:01 verbose #3251 > >
00:02:01 verbose #3252 > > ╭─[ 29.92ms - stdout ]─────────────────────────────────────────────────────────╮
00:02:01 verbose #3253 > > │ map [("Paths", [Paths ["a b"; "c"]])]                                        │
00:02:01 verbose #3254 > > │                                                                              │
00:02:01 verbose #3255 > > │                                                                              │
00:02:01 verbose #3256 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:01 verbose #3257 > 00:00:16 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 8856 }
00:02:01 verbose #3258 > 00:00:16   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:02:01 verbose #3259 >     "nbconvert",
00:02:01 verbose #3260 >     "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb",
00:02:01 verbose #3261 >     "--to",
00:02:01 verbose #3262 >     "html",
00:02:01 verbose #3263 >     "--HTMLExporter.theme=dark",
00:02:01 verbose #3264 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:02 verbose #3265 > 00:00:16 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb to html
00:02:02 verbose #3266 > 00:00:16 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:02:02 verbose #3267 > 00:00:16 verbose #7 !   validate(nb)
00:02:02 verbose #3268 > 00:00:17 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:02:02 verbose #3269 > 00:00:17 verbose #9 !   return _pygments_highlight(
00:02:02 verbose #3270 > 00:00:17 verbose #10 ! [NbConvertApp] Writing 292914 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.html
00:02:02 verbose #3271 > 00:00:17 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 }
00:02:02 verbose #3272 > 00:00:17   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 }
00:02:02 verbose #3273 > 00:00:17   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:02:02 verbose #3274 >     "-c",
00:02:02 verbose #3275 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:02:02 verbose #3276 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:03 verbose #3277 > 00:00:17 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:02:03 verbose #3278 > 00:00:17   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:02:03 verbose #3279 > 00:00:17   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 9813 }
00:02:03   debug #3280 runtime.execute_with_options_async / { exit_code = 0; output_length = 13000 }
00:02:03   debug #6 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path Runtime.dib --retries 3
00:00:00   debug #1 writeDibCode / output: Fs / path: Common.dib
00:00:00   debug #1 writeDibCode / output: Fs / path: CommonFSharp.dib
00:00:00   debug #1 writeDibCode / output: Fs / path: Async.dib
00:00:00   debug #1 writeDibCode / output: Fs / path: AsyncSeq.dib
00:00:00   debug #3 parseDibCode / output: Fs / file: CommonFSharp.dib
00:00:00   debug #5 parseDibCode / output: Fs / file: Async.dib
00:00:00   debug #3 parseDibCode / output: Fs / file: Common.dib
00:00:00   debug #5 parseDibCode / output: Fs / file: AsyncSeq.dib
00:00:00   debug #7 writeDibCode / output: Fs / path: Runtime.dib
00:00:00   debug #7 writeDibCode / output: Fs / path: FileSystem.dib
00:00:00   debug #9 parseDibCode / output: Fs / file: FileSystem.dib
00:00:00   debug #9 parseDibCode / output: Fs / file: Runtime.dib
In [ ]:
{ pwsh ../apps/spiral/builder/build.ps1 } | Invoke-Block
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00   debug #1 runtime.execute_with_options_async / { options = { command = ../../../workspace/target/release/spiral_builder dib --path spiral_builder.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:00 verbose #2 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "spiral_builder.dib"])) }
00:00:00 verbose #3 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:00:00 verbose #4 >     "repl",
00:00:00 verbose #5 >     "--exit-after-run",
00:00:00 verbose #6 >     "--run",
00:00:00 verbose #7 >     "/home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib",
00:00:00 verbose #8 >     "--output-path",
00:00:00 verbose #9 >     "/home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb",
00:00:00 verbose #10 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:01 verbose #11 > >
00:00:01 verbose #12 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:01 verbose #13 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:01 verbose #14 > > │ # spiral_builder                                                             │
00:00:01 verbose #15 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:04 verbose #16 > >
00:00:04 verbose #17 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:04 verbose #18 > > open file_system_operators
00:00:04 verbose #19 > > open rust.rust_operators
00:00:04 verbose #20 > > open rust
00:00:04 verbose #21 > > open sm'_operators
00:00:05 verbose #22 > >
00:00:05 verbose #23 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #24 > > //// test
00:00:05 verbose #25 > >
00:00:05 verbose #26 > > open testing
00:00:05 verbose #27 > >
00:00:05 verbose #28 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #29 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #30 > > │ ## get_args                                                                  │
00:00:05 verbose #31 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #32 > >
00:00:05 verbose #33 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #34 > > inl get_args () =
00:00:05 verbose #35 > >     {
00:00:05 verbose #36 > >         fsharp = "fsharp", {
00:00:05 verbose #37 > >             spi_path = "spi-path", 's'
00:00:05 verbose #38 > >         }
00:00:05 verbose #39 > >         cuda = "cuda", {
00:00:05 verbose #40 > >             py_path = "py-path", 'p'
00:00:05 verbose #41 > >             env = "env", 'e'
00:00:05 verbose #42 > >             deps = "deps", 'd'
00:00:05 verbose #43 > >         }
00:00:05 verbose #44 > >         fable = "fable", {
00:00:05 verbose #45 > >             fs_path = "fs-path", 'f'
00:00:05 verbose #46 > >             command = "command", 'c'
00:00:05 verbose #47 > >         }
00:00:05 verbose #48 > >         rust = "rust", {
00:00:05 verbose #49 > >             fs_path = "fs-path", 'f'
00:00:05 verbose #50 > >             deps = "deps", 'd'
00:00:05 verbose #51 > >             wasm = "wasm", 'w'
00:00:05 verbose #52 > >             contract = "contract", 'c'
00:00:05 verbose #53 > >         }
00:00:05 verbose #54 > >         typescript = "typescript", {
00:00:05 verbose #55 > >             fs_path = "fs-path", 'f'
00:00:05 verbose #56 > >             deps = "deps", 'd'
00:00:05 verbose #57 > >         }
00:00:05 verbose #58 > >         python = "python", {
00:00:05 verbose #59 > >             fs_path = "fs-path", 'f'
00:00:05 verbose #60 > >             deps = "deps", 'd'
00:00:05 verbose #61 > >         }
00:00:05 verbose #62 > >         dib = "dib", {
00:00:05 verbose #63 > >             path = "path", 'p'
00:00:05 verbose #64 > >             retries = "retries", 'r'
00:00:05 verbose #65 > >             working_directory = "working-directory", 'w'
00:00:05 verbose #66 > >         }
00:00:05 verbose #67 > >     }
00:00:05 verbose #68 > >
00:00:05 verbose #69 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #70 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #71 > > │ ## cuda_env                                                                  │
00:00:05 verbose #72 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #73 > >
00:00:05 verbose #74 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #75 > > union cuda_env =
00:00:05 verbose #76 > >     | Pip
00:00:05 verbose #77 > >     | Poetry
00:00:05 verbose #78 > >
00:00:05 verbose #79 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #80 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #81 > > │ ## get_command                                                               │
00:00:05 verbose #82 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #83 > >
00:00:05 verbose #84 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #85 > > let get_command () =
00:00:05 verbose #86 > >     ##"command"
00:00:05 verbose #87 > >     |> runtime.new_command
00:00:05 verbose #88 > >     |> runtime.command_subcommand_required true
00:00:05 verbose #89 > >     |> runtime.command_subcommand (
00:00:05 verbose #90 > >         ##(get_args () .fsharp |> fst)
00:00:05 verbose #91 > >         |> runtime.new_command
00:00:05 verbose #92 > >         |> runtime.command_init_arg ((get_args () .fsharp |> snd).spi_path) (
00:00:05 verbose #93 > >             runtime.arg_required true
00:00:05 verbose #94 > >         )
00:00:05 verbose #95 > >     )
00:00:05 verbose #96 > >     |> runtime.command_subcommand (
00:00:05 verbose #97 > >         ##(get_args () .cuda |> fst)
00:00:05 verbose #98 > >         |> runtime.new_command
00:00:05 verbose #99 > >         |> runtime.command_init_arg ((get_args () .cuda |> snd).py_path) (
00:00:05 verbose #100 > >             runtime.arg_required true
00:00:05 verbose #101 > >         )
00:00:05 verbose #102 > >         |> runtime.command_init_arg ((get_args () .cuda |> snd).env) (
00:00:05 verbose #103 > >             real runtime.arg_union `cuda_env ignore
00:00:05 verbose #104 > >         )
00:00:05 verbose #105 > >         |> runtime.command_init_arg ((get_args () .cuda |> snd).deps) (
00:00:05 verbose #106 > >             runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]]
00:00:05 verbose #107 > >             >> runtime.arg_num_args_range (
00:00:05 verbose #108 > >                 runtime.new_value_range
00:00:05 verbose #109 > >                     false
00:00:05 verbose #110 > >                     (am'.Start (1i32 |> convert : unativeint))
00:00:05 verbose #111 > >                     (am'.End id)
00:00:05 verbose #112 > >             )
00:00:05 verbose #113 > >             >> runtime.arg_action runtime.Append
00:00:05 verbose #114 > >         )
00:00:05 verbose #115 > >     )
00:00:05 verbose #116 > >     |> runtime.command_subcommand (
00:00:05 verbose #117 > >         ##(get_args () .fable |> fst)
00:00:05 verbose #118 > >         |> runtime.new_command
00:00:05 verbose #119 > >         |> runtime.command_init_arg ((get_args () .fable |> snd).fs_path) (
00:00:05 verbose #120 > >             runtime.arg_required true
00:00:05 verbose #121 > >         )
00:00:05 verbose #122 > >         |> runtime.command_init_arg ((get_args () .fable |> snd).command) (
00:00:05 verbose #123 > >             id
00:00:05 verbose #124 > >         )
00:00:05 verbose #125 > >     )
00:00:05 verbose #126 > >     |> runtime.command_subcommand (
00:00:05 verbose #127 > >         ##(get_args () .rust |> fst)
00:00:05 verbose #128 > >         |> runtime.new_command
00:00:05 verbose #129 > >         |> runtime.command_init_arg ((get_args () .rust |> snd).fs_path) (
00:00:05 verbose #130 > >             runtime.arg_required true
00:00:05 verbose #131 > >         )
00:00:05 verbose #132 > >         |> runtime.command_init_arg ((get_args () .rust |> snd).deps) (
00:00:05 verbose #133 > >             runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]]
00:00:05 verbose #134 > >             >> runtime.arg_num_args_range (
00:00:05 verbose #135 > >                 runtime.new_value_range
00:00:05 verbose #136 > >                     false
00:00:05 verbose #137 > >                     (am'.Start (1i32 |> convert : unativeint))
00:00:05 verbose #138 > >                     (am'.End id)
00:00:05 verbose #139 > >             )
00:00:05 verbose #140 > >             >> runtime.arg_action runtime.Append
00:00:05 verbose #141 > >         )
00:00:05 verbose #142 > >         |> runtime.command_init_arg ((get_args () .rust |> snd).wasm) (
00:00:05 verbose #143 > >             runtime.arg_num_args_range (
00:00:05 verbose #144 > >                 runtime.new_value_range
00:00:05 verbose #145 > >                     true
00:00:05 verbose #146 > >                     (am'.End id)
00:00:05 verbose #147 > >                     (am'.End fun _ => (1i32 |> convert : unativeint))
00:00:05 verbose #148 > >             )
00:00:05 verbose #149 > >             >> runtime.arg_require_equals true
00:00:05 verbose #150 > >             >> runtime.arg_default_missing_value ""
00:00:05 verbose #151 > >         )
00:00:05 verbose #152 > >         |> runtime.command_init_arg ((get_args () .rust |> snd).contract) (
00:00:05 verbose #153 > >             runtime.arg_num_args_range (
00:00:05 verbose #154 > >                 runtime.new_value_range
00:00:05 verbose #155 > >                     true
00:00:05 verbose #156 > >                     (am'.End id)
00:00:05 verbose #157 > >                     (am'.End fun _ => (1i32 |> convert : unativeint))
00:00:05 verbose #158 > >             )
00:00:05 verbose #159 > >             >> runtime.arg_require_equals true
00:00:05 verbose #160 > >             >> runtime.arg_default_missing_value ""
00:00:05 verbose #161 > >         )
00:00:05 verbose #162 > >     )
00:00:05 verbose #163 > >     |> runtime.command_subcommand (
00:00:05 verbose #164 > >         ##(get_args () .typescript |> fst)
00:00:05 verbose #165 > >         |> runtime.new_command
00:00:05 verbose #166 > >         |> runtime.command_init_arg ((get_args () .typescript |> snd).fs_path) (
00:00:05 verbose #167 > >             runtime.arg_required true
00:00:05 verbose #168 > >         )
00:00:05 verbose #169 > >         |> runtime.command_init_arg ((get_args () .typescript |> snd).deps) (
00:00:05 verbose #170 > >             runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]]
00:00:05 verbose #171 > >             >> runtime.arg_num_args_range (
00:00:05 verbose #172 > >                 runtime.new_value_range
00:00:05 verbose #173 > >                     false
00:00:05 verbose #174 > >                     (am'.Start (1i32 |> convert : unativeint))
00:00:05 verbose #175 > >                     (am'.End id)
00:00:05 verbose #176 > >             )
00:00:05 verbose #177 > >             >> runtime.arg_action runtime.Append
00:00:05 verbose #178 > >         )
00:00:05 verbose #179 > >     )
00:00:05 verbose #180 > >     |> runtime.command_subcommand (
00:00:05 verbose #181 > >         ##(get_args () .python |> fst)
00:00:05 verbose #182 > >         |> runtime.new_command
00:00:05 verbose #183 > >         |> runtime.command_init_arg ((get_args () .python |> snd).fs_path) (
00:00:05 verbose #184 > >             runtime.arg_required true
00:00:05 verbose #185 > >         )
00:00:05 verbose #186 > >         |> runtime.command_init_arg ((get_args () .python |> snd).deps) (
00:00:05 verbose #187 > >             runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]]
00:00:05 verbose #188 > >             >> runtime.arg_num_args_range (
00:00:05 verbose #189 > >                 runtime.new_value_range
00:00:05 verbose #190 > >                     false
00:00:05 verbose #191 > >                     (am'.Start (1i32 |> convert : unativeint))
00:00:05 verbose #192 > >                     (am'.End id)
00:00:05 verbose #193 > >             )
00:00:05 verbose #194 > >             >> runtime.arg_action runtime.Append
00:00:05 verbose #195 > >         )
00:00:05 verbose #196 > >     )
00:00:05 verbose #197 > >     |> runtime.command_subcommand (
00:00:05 verbose #198 > >         ##(get_args () .dib |> fst)
00:00:05 verbose #199 > >         |> runtime.new_command
00:00:05 verbose #200 > >         |> runtime.command_init_arg ((get_args () .dib |> snd).path) (
00:00:05 verbose #201 > >             runtime.arg_required true
00:00:05 verbose #202 > >             // >> runtime.arg_value_parser (runtime.value_parser_path_buf ())
00:00:05 verbose #203 > >         )
00:00:05 verbose #204 > >         |> runtime.command_init_arg ((get_args () .dib |> snd).retries) (
00:00:05 verbose #205 > >             runtime.arg_value_parser (runtime.value_parser_expr "u8")
00:00:05 verbose #206 > >         )
00:00:05 verbose #207 > >         |> runtime.command_init_arg ((get_args () .dib |>
00:00:05 verbose #208 > > snd).working_directory) (
00:00:05 verbose #209 > >             id
00:00:05 verbose #210 > >         )
00:00:05 verbose #211 > >     )
00:00:06 verbose #212 > >
00:00:06 verbose #213 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #214 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #215 > > │ ## fable                                                                     │
00:00:06 verbose #216 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #217 > >
00:00:06 verbose #218 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #219 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #220 > > │ ### fable_target                                                             │
00:00:06 verbose #221 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #222 > >
00:00:06 verbose #223 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #224 > > union fable_target =
00:00:06 verbose #225 > >     | Rust
00:00:06 verbose #226 > >     | TypeScript
00:00:06 verbose #227 > >     | Python
00:00:06 verbose #228 > >
00:00:06 verbose #229 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #230 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #231 > > │ ### fable_runtime                                                            │
00:00:06 verbose #232 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #233 > >
00:00:06 verbose #234 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #235 > > union fable_runtime =
00:00:06 verbose #236 > >     | Wasm : string
00:00:06 verbose #237 > >     | Contract : string
00:00:06 verbose #238 > >
00:00:06 verbose #239 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #240 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #241 > > │ ### execute_dotnet_fable                                                     │
00:00:06 verbose #242 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #243 > >
00:00:06 verbose #244 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #245 > > let execute_dotnet_fable { workspace_root_external fsproj_path extension
00:00:06 verbose #246 > > package_dir runtime } =
00:00:06 verbose #247 > >     open runtime
00:00:06 verbose #248 > >     execution_options fun x => { x with
00:00:06 verbose #249 > >         command =
00:00:06 verbose #250 > >             inl platform =
00:00:06 verbose #251 > >                 if platform.is_windows ()
00:00:06 verbose #252 > >                 then "_WINDOWS"
00:00:06 verbose #253 > >                 else "_LINUX"
00:00:06 verbose #254 > >             inl platform : string = $'$" --define {!platform}"'
00:00:06 verbose #255 > >             inl runtime =
00:00:06 verbose #256 > >                 match runtime with
00:00:06 verbose #257 > >                 | Some (runtime : fable_runtime) =>
00:00:06 verbose #258 > >                     inl runtime = runtime |> reflection.union_to_string |>
00:00:06 verbose #259 > > sm'.to_upper
00:00:06 verbose #260 > >                     $'$" --define {!runtime}"'
00:00:06 verbose #261 > >                 | None => ""
00:00:06 verbose #262 > >             $'$"dotnet fable \\\"{!fsproj_path}\\\" --optimize --lang
00:00:06 verbose #263 > > {!extension} --extension .{!extension} --outDir
00:00:06 verbose #264 > > \\\"{!package_dir}\\\"{!platform}{!runtime}"'
00:00:06 verbose #265 > >         working_directory = workspace_root_external |> resultm.box |>
00:00:06 verbose #266 > > resultm.ok'
00:00:06 verbose #267 > >     }
00:00:06 verbose #268 > >     |> execute_retry 3u8
00:00:06 verbose #269 > >
00:00:06 verbose #270 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #271 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #272 > > │ ### get_package_dir                                                          │
00:00:06 verbose #273 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #274 > >
00:00:06 verbose #275 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #276 > > inl get_package_dir { workspace_root target name hash } =
00:00:06 verbose #277 > >     inl dir = workspace_root </> "target/spiral_builder" </> name
00:00:06 verbose #278 > >     match hash, (target : option fable_target) with
00:00:06 verbose #279 > >     | Some hash, Some target => dir </> "packages" </> (target |>
00:00:06 verbose #280 > > reflection.union_to_string) </> hash
00:00:06 verbose #281 > >     | _ => dir
00:00:06 verbose #282 > >
00:00:06 verbose #283 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #284 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #285 > > │ ### persist_code_project                                                     │
00:00:06 verbose #286 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #287 > >
00:00:06 verbose #288 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #289 > > inl persist_code_project { workspace_root package_dir packages modules name code
00:00:06 verbose #290 > > } =
00:00:06 verbose #291 > >     package_dir |> file_system.create_dir |> ignore
00:00:06 verbose #292 > >
00:00:06 verbose #293 > >     inl fs_path = package_dir </> $'$"{!name}.fs"' |> file_system.normalize_path
00:00:06 verbose #294 > >     code |> file_system.write_all_text_exists fs_path
00:00:06 verbose #295 > >
00:00:06 verbose #296 > >     inl modules_code =
00:00:06 verbose #297 > >         modules
00:00:06 verbose #298 > >         |> listm.map fun path =>
00:00:06 verbose #299 > >             inl path = workspace_root </> path
00:00:06 verbose #300 > >             $'$"<Compile Include=\\\"{!path}\\\" />"' : string
00:00:06 verbose #301 > >         |> listm'.box
00:00:06 verbose #302 > >         |> seq.of_list'
00:00:06 verbose #303 > >         |> sm'.concat "\\n        "
00:00:06 verbose #304 > >
00:00:06 verbose #305 > >     inl packages_code =
00:00:06 verbose #306 > >         packages
00:00:06 verbose #307 > >         |> listm.map fun (package : string) =>
00:00:06 verbose #308 > >             $'$"<PackageReference Include=\\\"{!package}\\\" Version=\\\"*\\\"
00:00:06 verbose #309 > > />"' : string
00:00:06 verbose #310 > >         |> listm'.box
00:00:06 verbose #311 > >         |> seq.of_list'
00:00:06 verbose #312 > >         |> sm'.concat "\\n        "
00:00:06 verbose #313 > >
00:00:06 verbose #314 > >     inl fsproj_path = package_dir </> $'$"{!name}.fsproj"' |>
00:00:06 verbose #315 > > file_system.normalize_path
00:00:06 verbose #316 > >     inl fsproj_code : string =
00:00:06 verbose #317 > >         $'$"<Project Sdk=\\\"Microsoft.NET.Sdk\\\">"'
00:00:06 verbose #318 > >         +#. $'$"<PropertyGroup>"'
00:00:06 verbose #319 > >         +#. $'$"    <TargetFramework>net9.0</TargetFramework>"'
00:00:06 verbose #320 > >         +#. $'$"    <LangVersion>preview</LangVersion>"'
00:00:06 verbose #321 > >         +#. $'$"    <RollForward>Major</RollForward>"'
00:00:06 verbose #322 > >         +#. $'$"    <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>"'
00:00:06 verbose #323 > >         +#. $'$"    <PublishAot>false</PublishAot>"'
00:00:06 verbose #324 > >         +#. $'$"    <PublishTrimmed>false</PublishTrimmed>"'
00:00:06 verbose #325 > >         +#. $'$"    <PublishSingleFile>true</PublishSingleFile>"'
00:00:06 verbose #326 > >         +#. $'$"    <SelfContained>true</SelfContained>"'
00:00:06 verbose #327 > >         +#. $'$"    <Version>0.0.1-alpha.1</Version>"'
00:00:06 verbose #328 > >         +#. $'$"    <OutputType>Exe</OutputType>"'
00:00:06 verbose #329 > >         +#. $'$"</PropertyGroup>"'
00:00:06 verbose #330 > >
00:00:06 verbose #331 > >         +#. $'$"<PropertyGroup
00:00:06 verbose #332 > > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'FreeBSD\'))\\\">"'
00:00:06 verbose #333 > >         +#. $'$"    <DefineConstants>_FREEBSD</DefineConstants>"'
00:00:06 verbose #334 > >         +#. $'$"</PropertyGroup>"'
00:00:06 verbose #335 > >
00:00:06 verbose #336 > >         +#. $'$"<PropertyGroup
00:00:06 verbose #337 > > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'Linux\'))\\\">"'
00:00:06 verbose #338 > >         +#. $'$"    <DefineConstants>_LINUX</DefineConstants>"'
00:00:06 verbose #339 > >         +#. $'$"</PropertyGroup>"'
00:00:06 verbose #340 > >
00:00:06 verbose #341 > >         +#. $'$"<PropertyGroup
00:00:06 verbose #342 > > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'OSX\'))\\\">"'
00:00:06 verbose #343 > >         +#. $'$"    <DefineConstants>_OSX</DefineConstants>"'
00:00:06 verbose #344 > >         +#. $'$"</PropertyGroup>"'
00:00:06 verbose #345 > >
00:00:06 verbose #346 > >         +#. $'$"<PropertyGroup
00:00:06 verbose #347 > > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'Windows\'))\\\">"'
00:00:06 verbose #348 > >         +#. $'$"    <DefineConstants>_WINDOWS</DefineConstants>"'
00:00:06 verbose #349 > >         +#. $'$"</PropertyGroup>"'
00:00:06 verbose #350 > >
00:00:06 verbose #351 > >         +#. $'$"<ItemGroup>"'
00:00:06 verbose #352 > >         +#. $'$"    {!modules_code}"'
00:00:06 verbose #353 > >         +#. $'$"    <Compile Include=\\\"{!fs_path}\\\" />"'
00:00:06 verbose #354 > >         +#. $'$"</ItemGroup>"'
00:00:06 verbose #355 > >
00:00:06 verbose #356 > >         +#. $'$"<ItemGroup>"'
00:00:06 verbose #357 > >         +#. $'$"    {!packages_code}"'
00:00:06 verbose #358 > >         +#. $'$"</ItemGroup>"'
00:00:06 verbose #359 > >
00:00:06 verbose #360 > >         +#. $'$"</Project>"'
00:00:06 verbose #361 > >
00:00:06 verbose #362 > >     fsproj_code |> file_system.write_all_text_exists fsproj_path
00:00:06 verbose #363 > >
00:00:06 verbose #364 > >     fsproj_path
00:00:07 verbose #365 > >
00:00:07 verbose #366 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 verbose #367 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 verbose #368 > > │ ### build_project                                                            │
00:00:07 verbose #369 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #370 > >
00:00:07 verbose #371 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #372 > > inl build_project runtime' output_dir path =
00:00:07 verbose #373 > >     inl full_path = path |> file_system.get_full_path
00:00:07 verbose #374 > >     inl file_dir = full_path |> file_system.get_directory_name
00:00:07 verbose #375 > >     inl extension = full_path |> file_system.get_extension
00:00:07 verbose #376 > >
00:00:07 verbose #377 > >     trace Debug
00:00:07 verbose #378 > >         fun () => "build_project"
00:00:07 verbose #379 > >         fun () => { full_path }
00:00:07 verbose #380 > >
00:00:07 verbose #381 > >     match extension with
00:00:07 verbose #382 > >     | "fsproj" => ()
00:00:07 verbose #383 > >     | _ => failwith $'$"spiral_builder.build_project / Invalid project file
00:00:07 verbose #384 > > extension: {!extension}"'
00:00:07 verbose #385 > >
00:00:07 verbose #386 > >     inl runtimes =
00:00:07 verbose #387 > >         runtime'
00:00:07 verbose #388 > >         |> optionm.map listm.singleton
00:00:07 verbose #389 > >         |> optionm'.default_value [[ "linux-x64"; "win-x64" ]]
00:00:07 verbose #390 > >
00:00:07 verbose #391 > >     inl output_dir = output_dir |> optionm'.default_value "dist"
00:00:07 verbose #392 > >
00:00:07 verbose #393 > >     runtimes
00:00:07 verbose #394 > >     |> listm.map fun runtime' =>
00:00:07 verbose #395 > >         runtime.execution_options fun x => { x with
00:00:07 verbose #396 > >             command = $'$@@"dotnet publish \"\"{!path}\"\" --configuration
00:00:07 verbose #397 > > Release --output \"\"{!output_dir}\"\" --runtime {!runtime'}"'
00:00:07 verbose #398 > >             working_directory = file_dir |> Some |> optionm'.box
00:00:07 verbose #399 > >         }
00:00:07 verbose #400 > >         |> runtime.execute_with_options
00:00:07 verbose #401 > >         |> fst
00:00:07 verbose #402 > >     |> listm'.sum
00:00:07 verbose #403 > >
00:00:07 verbose #404 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 verbose #405 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 verbose #406 > > │ ### build_code                                                               │
00:00:07 verbose #407 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #408 > >
00:00:07 verbose #409 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #410 > > inl build_code { workspace_root runtime packages modules output_dir name code }
00:00:07 verbose #411 > > =
00:00:07 verbose #412 > >     inl package_dir = get_package_dir { workspace_root name target = None; hash
00:00:07 verbose #413 > > = None }
00:00:07 verbose #414 > >     inl fsproj_path = persist_code_project { workspace_root package_dir packages
00:00:07 verbose #415 > > modules name code }
00:00:07 verbose #416 > >     inl exit_code = fsproj_path |> build_project runtime output_dir
00:00:07 verbose #417 > >     if exit_code <>. 0 then
00:00:07 verbose #418 > >         inl fsproj_text = fsproj_path |> file_system.read_all_text
00:00:07 verbose #419 > >         trace Critical
00:00:07 verbose #420 > >             fun () => "build_code"
00:00:07 verbose #421 > >             fun () => { code = code |> sm'.ellipsis_end 400; fsproj_text }
00:00:07 verbose #422 > >     exit_code
00:00:07 verbose #423 > >
00:00:07 verbose #424 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #425 > > //// test
00:00:07 verbose #426 > > ///! rust -d encoding_rs encoding_rs_io regex
00:00:07 verbose #427 > >
00:00:07 verbose #428 > > build_code
00:00:07 verbose #429 > >     {
00:00:07 verbose #430 > >         workspace_root = file_system.get_workspace_root ()
00:00:07 verbose #431 > >         runtime = None
00:00:07 verbose #432 > >         packages = [[]]
00:00:07 verbose #433 > >         modules = [[]]
00:00:07 verbose #434 > >         output_dir = None
00:00:07 verbose #435 > >         name = "test1"
00:00:07 verbose #436 > >         code = "1 + 1 |> ignore"
00:00:07 verbose #437 > >     }
00:00:07 verbose #438 > > |> _assert_eq 0
00:00:44 verbose #439 > >
00:00:44 verbose #440 > > ╭─[ 36.99s - return value ]────────────────────────────────────────────────────╮
00:00:44 verbose #441 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir =                   │
00:00:44 verbose #442 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test1 }            │
00:00:44 verbose #443 > > │ 00:00:00   debug #2 build_project / { full_path =                      │
00:00:44 verbose #444 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test1/test1.fsproj │
00:00:44 verbose #445 > > │ }                                                                            │
00:00:44 verbose #446 > > │ 00:00:00   debug #3 runtime.execute_with_options / { file_name =       │
00:00:44 verbose #447 > > │ dotnet; arguments = [                                                        │
00:00:44 verbose #448 > > │     "publish",                                                               │
00:00:44 verbose #449 > > │                                                                              │
00:00:44 verbose #450 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/test1/test1.fspro │
00:00:44 verbose #451 > > │ j",                                                                          │
00:00:44 verbose #452 > > │     "--configuration",                                                       │
00:00:44 verbose #453 > > │     "Release",                                                               │
00:00:44 verbose #454 > > │     "--output",                                                              │
00:00:44 verbose #455 > > │     "dist",                                                                  │
00:00:44 verbose #456 > > │     "--runtime",                                                             │
00:00:44 verbose #457 > > │     "win-x64",                                                               │
00:00:44 verbose #458 > > │ ]; options = { command = dotnet publish                                      │
00:00:44 verbose #459 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/test1/test1.fspro │
00:00:44 verbose #460 > > │ j" --configuration Release --output "dist" --runtime win-x64;                │
00:00:44 verbose #461 > > │ cancellation_token = None; environment_variables = Array(MutCell([]));       │
00:00:44 verbose #462 > > │ on_line = None; stdin = None; trace = true; working_directory = Some(        │
00:00:44 verbose #463 > > │     "/home/runner/work/polyglot/polyglot/target/spiral_builder/test1",       │
00:00:44 verbose #464 > > │ ) } }                                                                        │
00:00:44 verbose #465 > > │ 00:00:00 verbose #4 > MSBuild version                                  │
00:00:44 verbose #466 > > │ 17.10.0-preview-24101-01+07fd5d51f for .NET                                  │
00:00:44 verbose #467 > > │ 00:00:00 verbose #5 >   Determining projects to restore...             │
00:00:44 verbose #468 > > │ 00:00:01 verbose #6 >   Restored                                       │
00:00:44 verbose #469 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test1/test1.fsproj │
00:00:44 verbose #470 > > │ (in 271 ms).                                                                 │
00:00:44 verbose #471 > > │ 00:00:01 verbose #7 >                                                  │
00:00:44 verbose #472 > > │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │
00:00:44 verbose #473 > > │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message          │
00:00:44 verbose #474 > > │ NETSDK1057: You are using a preview version of .NET. See:                    │
00:00:44 verbose #475 > > │ https://aka.m...ray(MutCell([])); on_line = None; stdin = None; trace =      │
00:00:44 verbose #476 > > │ true; working_directory = Some(                                              │
00:00:44 verbose #477 > > │     "/home/runner/work/polyglot/polyglot/target/spiral_builder/test1",       │
00:00:44 verbose #478 > > │ ) } }                                                                        │
00:00:44 verbose #479 > > │ 00:00:03 verbose #13 > MSBuild version                                 │
00:00:44 verbose #480 > > │ 17.10.0-preview-24101-01+07fd5d51f for .NET                                  │
00:00:44 verbose #481 > > │ 00:00:03 verbose #14 >   Determining projects to restore...            │
00:00:44 verbose #482 > > │ 00:00:04 verbose #15 >   Restored                                      │
00:00:44 verbose #483 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test1/test1.fsproj │
00:00:44 verbose #484 > > │ (in 273 ms).                                                                 │
00:00:44 verbose #485 > > │ 00:00:04 verbose #16 >                                                 │
00:00:44 verbose #486 > > │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │
00:00:44 verbose #487 > > │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message          │
00:00:44 verbose #488 > > │ NETSDK1057: You are using a preview version of .NET. See:                    │
00:00:44 verbose #489 > > │ https://aka.ms/dotnet-support-policy [                                       │
00:00:44 verbose #490 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test1/test1.fsproj │
00:00:44 verbose #491 > > │ ]                                                                            │
00:00:44 verbose #492 > > │ 00:00:05 verbose #17 >                                                 │
00:00:44 verbose #493 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test1/test1.fs(1,1 │
00:00:44 verbose #494 > > │ 6): warning FS0988: Main module of program is empty: nothing will happen     │
00:00:44 verbose #495 > > │ when it is run [                                                             │
00:00:44 verbose #496 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test1/test1.fsproj │
00:00:44 verbose #497 > > │ ]                                                                            │
00:00:44 verbose #498 > > │ 00:00:05 verbose #18 >   test1 ->                                      │
00:00:44 verbose #499 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test1/bin/Release/ │
00:00:44 verbose #500 > > │ net9.0/linux-x64/test1.dll                                                   │
00:00:44 verbose #501 > > │ 00:00:06 verbose #19 >   test1 ->                                      │
00:00:44 verbose #502 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test1/dist         │
00:00:44 verbose #503 > > │ 00:00:06 verbose #20 runtime.execute_with_options / result / {         │
00:00:44 verbose #504 > > │ exit_code = 0; std_trace_length = 953 }                                      │
00:00:44 verbose #505 > > │ __assert_eq / actual: 0 / expected: 0                                        │
00:00:44 verbose #506 > > │                                                                              │
00:00:44 verbose #507 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:44 verbose #508 > >
00:00:44 verbose #509 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:44 verbose #510 > > //// test
00:00:44 verbose #511 > > ///! rust -d encoding_rs encoding_rs_io regex
00:00:44 verbose #512 > >
00:00:44 verbose #513 > > build_code
00:00:44 verbose #514 > >     {
00:00:44 verbose #515 > >         workspace_root = file_system.get_workspace_root ()
00:00:44 verbose #516 > >         runtime = None
00:00:44 verbose #517 > >         packages = [[]]
00:00:44 verbose #518 > >         modules = [[]]
00:00:44 verbose #519 > >         output_dir = None
00:00:44 verbose #520 > >         name = "test2"
00:00:44 verbose #521 > >         code = "1 + a |> ignore"
00:00:44 verbose #522 > >     }
00:00:44 verbose #523 > > |> _assert_eq 2
00:01:07 verbose #524 > >
00:01:07 verbose #525 > > ╭─[ 22.68s - return value ]────────────────────────────────────────────────────╮
00:01:07 verbose #526 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir =                   │
00:01:07 verbose #527 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test2 }            │
00:01:07 verbose #528 > > │ 00:00:00   debug #2 build_project / { full_path =                      │
00:01:07 verbose #529 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test2/test2.fsproj │
00:01:07 verbose #530 > > │ }                                                                            │
00:01:07 verbose #531 > > │ 00:00:00   debug #3 runtime.execute_with_options / { file_name =       │
00:01:07 verbose #532 > > │ dotnet; arguments = [                                                        │
00:01:07 verbose #533 > > │     "publish",                                                               │
00:01:07 verbose #534 > > │                                                                              │
00:01:07 verbose #535 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/test2/test2.fspro │
00:01:07 verbose #536 > > │ j",                                                                          │
00:01:07 verbose #537 > > │     "--configuration",                                                       │
00:01:07 verbose #538 > > │     "Release",                                                               │
00:01:07 verbose #539 > > │     "--output",                                                              │
00:01:07 verbose #540 > > │     "dist",                                                                  │
00:01:07 verbose #541 > > │     "--runtime",                                                             │
00:01:07 verbose #542 > > │     "win-x64",                                                               │
00:01:07 verbose #543 > > │ ]; options = { command = dotnet publish                                      │
00:01:07 verbose #544 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/test2/test2.fspro │
00:01:07 verbose #545 > > │ j" --configuration Release --output "dist" --runtime win-x64;                │
00:01:07 verbose #546 > > │ cancellation_token = None; environment_variables = Array(MutCell([]));       │
00:01:07 verbose #547 > > │ on_line = None; stdin = None; trace = true; working_directory = Some(        │
00:01:07 verbose #548 > > │     "/home/runner/work/polyglot/polyglot/target/spiral_builder/test2",       │
00:01:07 verbose #549 > > │ ) } }                                                                        │
00:01:07 verbose #550 > > │ 00:00:00 verbose #4 > MSBuild version                                  │
00:01:07 verbose #551 > > │ 17.10.0-preview-24101-01+07fd5d51f for .NET                                  │
00:01:07 verbose #552 > > │ 00:00:00 verbose #5 >   Determining projects to restore...             │
00:01:07 verbose #553 > > │ 00:00:01 verbose #6 >   Restored                                       │
00:01:07 verbose #554 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test2/test2.fsproj │
00:01:07 verbose #555 > > │ (in 265 ms).                                                                 │
00:01:07 verbose #556 > > │ 00:00:01 verbose #7 >                                                  │
00:01:07 verbose #557 > > │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │
00:01:07 verbose #558 > > │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message          │
00:01:07 verbose #559 > > │ NETSDK1057: You are using a preview version of .NET. See: https://aka.m...   │
00:01:07 verbose #560 > > │ not defined. [                                                               │
00:01:07 verbose #561 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test2/test2.fsproj │
00:01:07 verbose #562 > > │ ]                                                                            │
00:01:07 verbose #563 > > │ 00:00:04 verbose #16 runtime.execute_with_options / result / {         │
00:01:07 verbose #564 > > │ exit_code = 1; std_trace_length = 732 }                                      │
00:01:07 verbose #565 > > │ 00:00:04 critical #17 build_code / { code = 1 + a |> ignore;           │
00:01:07 verbose #566 > > │ fsproj_text = <Project Sdk="Microsoft.NET.Sdk">                              │
00:01:07 verbose #567 > > │ <PropertyGroup>                                                              │
00:01:07 verbose #568 > > │     <TargetFramework>net9.0</TargetFramework>                                │
00:01:07 verbose #569 > > │     <LangVersion>preview</LangVersion>                                       │
00:01:07 verbose #570 > > │     <RollForward>Major</RollForward>                                         │
00:01:07 verbose #571 > > │     <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>                │
00:01:07 verbose #572 > > │     <PublishAot>false</PublishAot>                                           │
00:01:07 verbose #573 > > │     <PublishTrimmed>false</PublishTrimmed>                                   │
00:01:07 verbose #574 > > │     <PublishSingleFile>true</PublishSingleFile>                              │
00:01:07 verbose #575 > > │     <SelfContained>true</SelfContained>                                      │
00:01:07 verbose #576 > > │     <Version>0.0.1-alpha.1</Version>                                         │
00:01:07 verbose #577 > > │     <OutputType>Exe</OutputType>                                             │
00:01:07 verbose #578 > > │ </PropertyGroup>                                                             │
00:01:07 verbose #579 > > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('FreeBSD'))">            │
00:01:07 verbose #580 > > │     <DefineConstants>_FREEBSD</DefineConstants>                              │
00:01:07 verbose #581 > > │ </PropertyGroup>                                                             │
00:01:07 verbose #582 > > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Linux'))">              │
00:01:07 verbose #583 > > │     <DefineConstants>_LINUX</DefineConstants>                                │
00:01:07 verbose #584 > > │ </PropertyGroup>                                                             │
00:01:07 verbose #585 > > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('OSX'))">                │
00:01:07 verbose #586 > > │     <DefineConstants>_OSX</DefineConstants>                                  │
00:01:07 verbose #587 > > │ </PropertyGroup>                                                             │
00:01:07 verbose #588 > > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">            │
00:01:07 verbose #589 > > │     <DefineConstants>_WINDOWS</DefineConstants>                              │
00:01:07 verbose #590 > > │ </PropertyGroup>                                                             │
00:01:07 verbose #591 > > │ <ItemGroup>                                                                  │
00:01:07 verbose #592 > > │                                                                              │
00:01:07 verbose #593 > > │     <Compile                                                                 │
00:01:07 verbose #594 > > │ Include="/home/runner/work/polyglot/polyglot/target/spiral_builder/test2/tes │
00:01:07 verbose #595 > > │ t2.fs" />                                                                    │
00:01:07 verbose #596 > > │ </ItemGroup>                                                                 │
00:01:07 verbose #597 > > │ <ItemGroup>                                                                  │
00:01:07 verbose #598 > > │                                                                              │
00:01:07 verbose #599 > > │ </ItemGroup>                                                                 │
00:01:07 verbose #600 > > │ </Project> }                                                                 │
00:01:07 verbose #601 > > │ __assert_eq / actual: 2 / expected: 2                                        │
00:01:07 verbose #602 > > │                                                                              │
00:01:07 verbose #603 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:07 verbose #604 > >
00:01:07 verbose #605 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:07 verbose #606 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:07 verbose #607 > > │ ### read_file                                                                │
00:01:07 verbose #608 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:07 verbose #609 > >
00:01:07 verbose #610 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:07 verbose #611 > > inl read_file path =
00:01:07 verbose #612 > >     inl code =
00:01:07 verbose #613 > >         path
00:01:07 verbose #614 > >         |> file_system.read_all_text
00:01:07 verbose #615 > >         |> sm'.replace_regex $'@@"(?P<a> *)(?P<b>let\\s+main\\s+.*?\\s*=)"'
00:01:07 verbose #616 > > "$a[[<EntryPoint>]]\n$a$b"
00:01:07 verbose #617 > >
00:01:07 verbose #618 > >     inl code_trim = code |> sm'.trim_end [[]]
00:01:07 verbose #619 > >     if code_trim |> sm'.ends_with "\\n()"
00:01:07 verbose #620 > >     then code_trim |> sm'.slice 0i64 ((code_trim |> sm'.length) - 3)
00:01:07 verbose #621 > >     else code
00:01:07 verbose #622 > >
00:01:07 verbose #623 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:07 verbose #624 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:07 verbose #625 > > │ ### persist_file                                                             │
00:01:07 verbose #626 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:07 verbose #627 > >
00:01:07 verbose #628 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:07 verbose #629 > > inl persist_file { workspace_root package_dir packages modules path } =
00:01:07 verbose #630 > >     inl full_path = path |> file_system.get_full_path
00:01:07 verbose #631 > >     inl name = full_path |> file_system.get_file_name_without_extension
00:01:07 verbose #632 > >     inl code = full_path |> read_file
00:01:07 verbose #633 > >     persist_code_project { workspace_root package_dir packages modules name code
00:01:07 verbose #634 > > }
00:01:07 verbose #635 > >
00:01:07 verbose #636 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:07 verbose #637 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:07 verbose #638 > > │ ### build_file                                                               │
00:01:07 verbose #639 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:07 verbose #640 > >
00:01:07 verbose #641 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:07 verbose #642 > > inl build_file { workspace_root runtime packages modules path } =
00:01:07 verbose #643 > >     inl full_path = path |> file_system.get_full_path
00:01:07 verbose #644 > >     inl dir = full_path |> file_system.get_directory_name
00:01:07 verbose #645 > >     build_code
00:01:07 verbose #646 > >         {
00:01:07 verbose #647 > >             workspace_root
00:01:07 verbose #648 > >             runtime
00:01:07 verbose #649 > >             packages
00:01:07 verbose #650 > >             modules
00:01:07 verbose #651 > >             output_dir = dir </> "dist" |> Some
00:01:07 verbose #652 > >             name = full_path |> file_system.get_file_name_without_extension
00:01:07 verbose #653 > >             code = full_path |> read_file
00:01:07 verbose #654 > >         }
00:01:07 verbose #655 > >
00:01:07 verbose #656 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:07 verbose #657 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:07 verbose #658 > > │ ## rust                                                                      │
00:01:07 verbose #659 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:07 verbose #660 > >
00:01:07 verbose #661 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:07 verbose #662 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:07 verbose #663 > > │ ### get_workspace_cargo_toml_content                                         │
00:01:07 verbose #664 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:07 verbose #665 > >
00:01:07 verbose #666 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:07 verbose #667 > > inl get_workspace_cargo_toml_content { workspace_root } : string =
00:01:07 verbose #668 > >     inl workspace_root = workspace_root |> file_system.normalize_path
00:01:07 verbose #669 > >     $'$"cargo-features = [[\\\"profile-rustflags\\\"]]"'
00:01:07 verbose #670 > >     +#. $'$""'
00:01:07 verbose #671 > >     +#. $'$"[[workspace]]"'
00:01:07 verbose #672 > >     +#. $'$"resolver = \\\"2\\\""'
00:01:07 verbose #673 > >     +#. $'$"members = [[\\\"packages/Rust/*\\\"]]"'
00:01:07 verbose #674 > >     +#. $'$""'
00:01:07 verbose #675 > >     +#. $'$"[[workspace.dependencies.fable_library_rust]]"'
00:01:07 verbose #676 > >     +#. $'$"path =
00:01:07 verbose #677 > > \\\"{!workspace_root}/lib/rust/fable/fable_modules/fable-library-rust\\\""'
00:01:07 verbose #678 > >     +#. $'$"default-features = false"'
00:01:07 verbose #679 > >     +#. $'$"features = [[]]"'
00:01:07 verbose #680 > >     +#. $'$""'
00:01:07 verbose #681 > >     +#. $'$"[[workspace.dependencies]]"'
00:01:07 verbose #682 > >     +#. $'$"inline_colorization = \\\"~0.1\\\""'
00:01:07 verbose #683 > >     +#. $'$""'
00:01:07 verbose #684 > >     +#. $'$"[[profile.release]]"'
00:01:07 verbose #685 > >     +#. $'$"codegen-units = 1"'
00:01:07 verbose #686 > >     +#. $'$"opt-level = \\\"z\\\""'
00:01:07 verbose #687 > >     +#. $'$"lto = true"'
00:01:07 verbose #688 > >     +#. $'$"debug = false"'
00:01:07 verbose #689 > >     +#. $'$"panic = \\\"abort\\\""'
00:01:07 verbose #690 > >     +#. $'$"overflow-checks = true"'
00:01:07 verbose #691 > >     +#. $'$"rustflags = [[\\\"-C\\\", \\\"link-arg=-s\\\"]]"'
00:01:07 verbose #692 > >
00:01:07 verbose #693 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:07 verbose #694 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:07 verbose #695 > > │ ### get_cargo_toml_content                                                   │
00:01:07 verbose #696 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:07 verbose #697 > >
00:01:07 verbose #698 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:07 verbose #699 > > inl get_cargo_toml_content { hash_hex runtime deps } : string =
00:01:07 verbose #700 > >     $'$"[[package]]"'
00:01:07 verbose #701 > >     +#. $'$"name = \\\"spiral_builder_{!hash_hex}\\\""'
00:01:07 verbose #702 > >     +#. $'$"version = \\\"0.0.1\\\""'
00:01:07 verbose #703 > >     +#. $'$"edition = \\\"2021\\\""'
00:01:07 verbose #704 > >     +#. $'$""'
00:01:07 verbose #705 > >     +#. $'$"[[dependencies]]"'
00:01:07 verbose #706 > >     +#. (
00:01:07 verbose #707 > >         if runtime = None then
00:01:07 verbose #708 > >             $'$"fable_library_rust = {{ workspace = true, features =
00:01:07 verbose #709 > > [[\\\"static_do_bindings\\\", \\\"datetime\\\", \\\"guid\\\", \\\"threaded\\\"]]
00:01:07 verbose #710 > > }}"'
00:01:07 verbose #711 > >         else
00:01:07 verbose #712 > >             $'$"fable_library_rust = {{ workspace = true }}"'
00:01:07 verbose #713 > >     )
00:01:07 verbose #714 > >     +#. $'$"inline_colorization = {{ workspace = true }}"'
00:01:07 verbose #715 > >     +#. $'$"{!deps}"'
00:01:07 verbose #716 > >     +#. $'$""'
00:01:07 verbose #717 > >     +#. (
00:01:07 verbose #718 > >         if runtime = None then
00:01:07 verbose #719 > >             $'$"[[[[bin]]]]"'
00:01:07 verbose #720 > >             +#. $'$"name = \\\"spiral_builder_{!hash_hex}\\\""'
00:01:07 verbose #721 > >         else
00:01:07 verbose #722 > >             $'$"[[lib]]"'
00:01:07 verbose #723 > >             +#. $'$"crate-type = [[\\\"cdylib\\\"]]"'
00:01:07 verbose #724 > >     )
00:01:07 verbose #725 > >     +#. $'$"path = \\\"spiral_builder.rs\\\" "'
00:01:07 verbose #726 > >
00:01:07 verbose #727 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:07 verbose #728 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:07 verbose #729 > > │ ### get_empty_cargo_toml_content                                             │
00:01:07 verbose #730 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:07 verbose #731 > >
00:01:07 verbose #732 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:07 verbose #733 > > inl get_empty_cargo_toml_content () =
00:01:07 verbose #734 > >     inl guid = date_time.now () |> date_time.new_guid_from_date_time |>
00:01:07 verbose #735 > > sm'.obj_to_string
00:01:07 verbose #736 > >     $'$"[[package]]"'
00:01:07 verbose #737 > >     +#. $'$"name = \\\"spiral_builder_{!guid}\\\""'
00:01:07 verbose #738 > >     +#. $'$"version = \\\"0.0.1\\\""'
00:01:07 verbose #739 > >     +#. $'$"edition = \\\"2021\\\""'
00:01:07 verbose #740 > >     +#. $'$""'
00:01:07 verbose #741 > >     +#. $'$"[[[[bin]]]]"'
00:01:07 verbose #742 > >     +#. $'$"name = \\\"spiral_builder_{!guid}\\\""'
00:01:07 verbose #743 > >     +#. $'$"path = \\\"spiral_builder.rs\\\""'
00:01:07 verbose #744 > >
00:01:07 verbose #745 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:07 verbose #746 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:07 verbose #747 > > │ ### process_rust                                                             │
00:01:07 verbose #748 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:07 verbose #749 > >
00:01:07 verbose #750 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:07 verbose #751 > > inl process_rust { fs_path deps trace_level runtime } =
00:01:07 verbose #752 > >     open runtime
00:01:07 verbose #753 > >     inl is_trace = trace_level = Verbose
00:01:07 verbose #754 > >     inl _trace (fn : () -> string) =
00:01:07 verbose #755 > >         if is_trace
00:01:07 verbose #756 > >         then trace Info (fun () => $'$"spiral_builder.process_rust / {!fn ()}"')
00:01:07 verbose #757 > > id
00:01:07 verbose #758 > >         else fn () |> console.write_line
00:01:07 verbose #759 > >
00:01:07 verbose #760 > >     inl extension = "rs"
00:01:07 verbose #761 > >     inl code = fs_path |> file_system.read_all_text
00:01:07 verbose #762 > >
00:01:07 verbose #763 > >     inl hash_hex = { extension code runtime } |> sm'.format |> crypto.hash_text
00:01:07 verbose #764 > >
00:01:07 verbose #765 > >     inl workspace_name = "spiral_builder"
00:01:07 verbose #766 > >
00:01:07 verbose #767 > >     inl workspace_root_external = file_system.get_workspace_root_external ()
00:01:07 verbose #768 > >     inl workspace_root = workspace_root_external |> resultm.box |>
00:01:07 verbose #769 > > resultm.unwrap_or_else id
00:01:07 verbose #770 > >
00:01:07 verbose #771 > >     inl package_dir =
00:01:07 verbose #772 > >         get_package_dir { workspace_root name = workspace_name; target = Some
00:01:07 verbose #773 > > Rust; hash = Some hash_hex }
00:01:07 verbose #774 > >
00:01:07 verbose #775 > >     inl fsproj_path =
00:01:07 verbose #776 > >         persist_code_project
00:01:07 verbose #777 > >             {
00:01:07 verbose #778 > >                 workspace_root
00:01:07 verbose #779 > >                 package_dir
00:01:07 verbose #780 > >                 packages = [[ "Fable.Core" ]]
00:01:07 verbose #781 > >                 modules = [[]]
00:01:07 verbose #782 > >                 name = workspace_name
00:01:07 verbose #783 > >                 code
00:01:07 verbose #784 > >             }
00:01:07 verbose #785 > >
00:01:07 verbose #786 > >     inl workspace_dir = package_dir </> "../../.."
00:01:07 verbose #787 > >     inl workspace_cargo_toml_path = workspace_dir </> "Cargo.toml"
00:01:07 verbose #788 > >
00:01:07 verbose #789 > >     if workspace_cargo_toml_path |> file_system.file_exists |> not
00:01:07 verbose #790 > >     then get_empty_cargo_toml_content () |> file_system.write_all_text
00:01:07 verbose #791 > > workspace_cargo_toml_path
00:01:07 verbose #792 > >
00:01:07 verbose #793 > >     inl cargo_toml_path = package_dir </> "Cargo.toml"
00:01:07 verbose #794 > >
00:01:07 verbose #795 > >     if cargo_toml_path |> file_system.file_exists |> not
00:01:07 verbose #796 > >     then get_empty_cargo_toml_content () |> file_system.write_all_text
00:01:07 verbose #797 > > cargo_toml_path
00:01:07 verbose #798 > >
00:01:07 verbose #799 > >     inl lib_link_target_path = workspace_root </>
00:01:07 verbose #800 > > "lib/rust/fable/fable_modules/fable-library-rust"
00:01:07 verbose #801 > >     inl lib_link_path = package_dir </> "fable_modules/fable-library-rust"
00:01:07 verbose #802 > >
00:01:07 verbose #803 > >     lib_link_path |> file_system.link_directory lib_link_target_path
00:01:07 verbose #804 > >
00:01:07 verbose #805 > >     inl exit_code, dotnet_fable_result =
00:01:07 verbose #806 > >         execute_dotnet_fable { workspace_root_external fsproj_path extension
00:01:07 verbose #807 > > package_dir runtime }
00:01:07 verbose #808 > >
00:01:07 verbose #809 > >     if exit_code <>. 0 then
00:01:07 verbose #810 > >         trace Critical
00:01:07 verbose #811 > >             fun () => "spiral_builder.process_rust / dotnet fable error"
00:01:07 verbose #812 > >             fun () => { exit_code dotnet_fable_result }
00:01:07 verbose #813 > >         { extension = Some extension; code = None; output = Some
00:01:07 verbose #814 > > dotnet_fable_result }
00:01:07 verbose #815 > >     else
00:01:07 verbose #816 > >         inl deps =
00:01:07 verbose #817 > >             inl deps =
00:01:07 verbose #818 > >                 if runtime = None
00:01:07 verbose #819 > >                 then deps
00:01:07 verbose #820 > >                 else
00:01:07 verbose #821 > >                     // TODO: simplify
00:01:07 verbose #822 > >                     inl has_near_sdk =
00:01:07 verbose #823 > >                         deps
00:01:07 verbose #824 > >                         |> am'.vec_filter (sm'.from_std_string >> sm'.contains
00:01:07 verbose #825 > > "near-sdk")
00:01:07 verbose #826 > >                         |> am'.vec_len
00:01:07 verbose #827 > >                         |> i32
00:01:07 verbose #828 > >                         |> fun n => n > 0
00:01:07 verbose #829 > >                     // TODO: simplify with ++
00:01:07 verbose #830 > >                     if has_near_sdk
00:01:07 verbose #831 > >                     then deps
00:01:07 verbose #832 > >                     else deps |> am'.vec_extend (;[[ "near-sdk" |>
00:01:07 verbose #833 > > sm'.to_std_string ]] |> am'.to_vec)
00:01:07 verbose #834 > >             deps
00:01:07 verbose #835 > >             |> am'.vec_map fun dep =>
00:01:07 verbose #836 > >                 inl dep = dep |> sm'.from_std_string
00:01:07 verbose #837 > >                 if dep |> sm'.contains "="
00:01:07 verbose #838 > >                 then dep
00:01:07 verbose #839 > >                 elif dep |> sm'.ends_with "]]"
00:01:07 verbose #840 > >                 then dep |> sm'.replace "[[" $'$"={{version=\'*\',features=[["'
00:01:07 verbose #841 > > |> fun x => $'$"{!x}}}"'
00:01:07 verbose #842 > >                 else $'$"{!dep}=\'*\'"'
00:01:07 verbose #843 > >             |> am'.from_vec
00:01:07 verbose #844 > >             |> fun x => x : _ i32 _
00:01:07 verbose #845 > >             |> seq.of_array'
00:01:07 verbose #846 > >             |> sm'.concat "\n"
00:01:07 verbose #847 > >
00:01:07 verbose #848 > >         inl cargo_toml_content = get_cargo_toml_content { hash_hex runtime deps
00:01:07 verbose #849 > > }
00:01:07 verbose #850 > >         inl workspace_cargo_toml_content = get_workspace_cargo_toml_content {
00:01:07 verbose #851 > > workspace_root }
00:01:07 verbose #852 > >
00:01:07 verbose #853 > >         cargo_toml_content |> file_system.write_all_text_exists cargo_toml_path
00:01:07 verbose #854 > >
00:01:07 verbose #855 > >         workspace_cargo_toml_content |> file_system.write_all_text_exists
00:01:07 verbose #856 > > workspace_cargo_toml_path
00:01:07 verbose #857 > >
00:01:07 verbose #858 > >         inl range_rs_path = lib_link_path </> "src/Range.rs"
00:01:07 verbose #859 > >         if range_rs_path |> file_system.file_exists then
00:01:07 verbose #860 > >             inl text = range_rs_path |> file_system.read_all_text
00:01:07 verbose #861 > >             text
00:01:07 verbose #862 > >             |> sm'.replace "use crate::String_::fromCharCode;" "use
00:01:07 verbose #863 > > crate::String_::fromChar;"
00:01:07 verbose #864 > >             |> sm'.replace "fromCharCode(c)" "std::char::from_u32(c).unwrap()"
00:01:07 verbose #865 > >             |> file_system.write_all_text_exists range_rs_path
00:01:07 verbose #866 > >
00:01:07 verbose #867 > >         inl exit_code, cargo_fmt_result =
00:01:07 verbose #868 > >             fun () =>
00:01:07 verbose #869 > >                 inl exit_code, result =
00:01:07 verbose #870 > >                     execution_options fun x => { x with
00:01:07 verbose #871 > >                         command = $'$"cargo fmt --manifest-path
00:01:07 verbose #872 > > \\\"{!cargo_toml_path}\\\" --"'
00:01:07 verbose #873 > >                         working_directory = workspace_root_external |>
00:01:07 verbose #874 > > resultm.box |> resultm.ok'
00:01:07 verbose #875 > >                     }
00:01:07 verbose #876 > >                     |> execute_with_options
00:01:07 verbose #877 > >
00:01:07 verbose #878 > >                 inl return () =
00:01:07 verbose #879 > >                     if exit_code = 0
00:01:07 verbose #880 > >                     then Ok (exit_code, result)
00:01:07 verbose #881 > >                     else Error (exit_code, result)
00:01:07 verbose #882 > >
00:01:07 verbose #883 > >                 if result |> sm'.contains "failed to load manifest for workspace
00:01:07 verbose #884 > > member" |> not
00:01:07 verbose #885 > >                 then return ()
00:01:07 verbose #886 > >                 else
00:01:07 verbose #887 > >                     inl missing_toml_path =
00:01:07 verbose #888 > >                         "failed to read `(?<a>.*?Cargo.toml)`"
00:01:07 verbose #889 > >                         |> sm'.new_regex
00:01:07 verbose #890 > >                         |> resultm.unwrap'
00:01:07 verbose #891 > >                         |> sm'.regex_captures result
00:01:07 verbose #892 > >                         |> am'.from_vec
00:01:07 verbose #893 > >                         |> fun x => x : _ i32 _
00:01:07 verbose #894 > >                         |> am'.try_item 0
00:01:07 verbose #895 > >                         |> optionm.map (mapm.get "a" >> optionm'.unbox)
00:01:07 verbose #896 > >                         |> optionm'.flatten
00:01:07 verbose #897 > >
00:01:07 verbose #898 > >                     match missing_toml_path with
00:01:07 verbose #899 > >                     | None => Error (exit_code, result)
00:01:07 verbose #900 > >                     | Some missing_toml_path =>
00:01:07 verbose #901 > >                         if missing_toml_path |> file_system.file_exists |> not
00:01:07 verbose #902 > > then
00:01:07 verbose #903 > >                             missing_toml_path
00:01:07 verbose #904 > >                             |> file_system.get_directory_name
00:01:07 verbose #905 > >                             |> file_system.create_dir
00:01:07 verbose #906 > >                             |> ignore
00:01:07 verbose #907 > >
00:01:07 verbose #908 > >                             get_empty_cargo_toml_content ()
00:01:07 verbose #909 > >                             |> file_system.write_all_text missing_toml_path
00:01:07 verbose #910 > >                         return ()
00:01:07 verbose #911 > >             |> retry_fn' 3u8
00:01:07 verbose #912 > >
00:01:07 verbose #913 > >         if exit_code <>. 0 then
00:01:07 verbose #914 > >             trace Critical
00:01:07 verbose #915 > >                 fun () => "spiral_builder.process_rust / cargo fmt error"
00:01:07 verbose #916 > >                 fun () => { exit_code cargo_fmt_result }
00:01:07 verbose #917 > >
00:01:07 verbose #918 > >         inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"'
00:01:07 verbose #919 > >         inl new_code = new_code_path |> file_system.read_all_text
00:01:07 verbose #920 > >
00:01:07 verbose #921 > >         inl main_code_header =
00:01:07 verbose #922 > >             "pub fn main() -> Result<(), String> " +. !\($'"\\\"{\\\".into()"')
00:01:07 verbose #923 > >         inl main_code : string =
00:01:07 verbose #924 > >             (
00:01:07 verbose #925 > >                 if runtime = None
00:01:07 verbose #926 > >                 then ""
00:01:07 verbose #927 > >                 else
00:01:07 verbose #928 > >                     $'$"#[[near_sdk::near_bindgen]]"'
00:01:07 verbose #929 > >                     +#. $'$"#[[derive(near_sdk::PanicOnDefault)]]"'
00:01:07 verbose #930 > >                     +#. $'$"pub struct MainState {{"'
00:01:07 verbose #931 > >                     +#. $'$"}}"'
00:01:07 verbose #932 > >                     +#. $'$""'
00:01:07 verbose #933 > >                     +#. $'$"#[[near_sdk::near_bindgen]]"'
00:01:07 verbose #934 > >                     +#. $'$"impl MainState {{"'
00:01:07 verbose #935 > >                     +#. $'$"    pub fn state_main() {{"'
00:01:07 verbose #936 > >                     +#. $'$"        Spiral_builder::method0();"'
00:01:07 verbose #937 > >                     +#. $'$"    }}"'
00:01:07 verbose #938 > >                     +#. $'$"}}"'
00:01:07 verbose #939 > >             )
00:01:07 verbose #940 > >             +#. $'$"{!main_code_header} Ok(()) }}"'
00:01:07 verbose #941 > >
00:01:07 verbose #942 > >         inl cached = new_code |> sm'.contains main_code_header
00:01:07 verbose #943 > >
00:01:07 verbose #944 > >         inl new_code =
00:01:07 verbose #945 > >             if cached
00:01:07 verbose #946 > >             then new_code
00:01:07 verbose #947 > >             else
00:01:07 verbose #948 > >                 new_code
00:01:07 verbose #949 > >                 |> sm'.replace
00:01:07 verbose #950 > >                     ("),)" +. !\($'"\\\";\\\".into()"'))
00:01:07 verbose #951 > >                     "));"
00:01:07 verbose #952 > >                 |> sm'.replace
00:01:07 verbose #953 > >                     ("},)" +. !\($'"\\\";\\\".into()"'))
00:01:07 verbose #954 > >                     "});"
00:01:07 verbose #955 > >                 |> sm'.replace_regex
00:01:07 verbose #956 > >                     "\\s\\sdefaultOf\\(\\);"
00:01:07 verbose #957 > >                     " defaultOf::<()>();"
00:01:07 verbose #958 > >                 |> sm'.replace
00:01:07 verbose #959 > >                     "::Slice'_"
00:01:07 verbose #960 > >                     "::Slice__"
00:01:07 verbose #961 > >                 |> sm'.replace
00:01:07 verbose #962 > >                     ("defaultOf()" +. !\($'"\\\",\\\".into()"'))
00:01:07 verbose #963 > >                     "defaultOf::<std::sync::Arc<dyn IDisposable>>(),"
00:01:07 verbose #964 > >                 |> sm'.replace
00:01:07 verbose #965 > >                     ("_self" +. !\($'"\\\"_.\\\".into()"'))
00:01:07 verbose #966 > >                     "self."
00:01:07 verbose #967 > >                 |> sm'.replace
00:01:07 verbose #968 > >                     ("get_or_insert_wit" +. !\($'"\\\"h\\\".into()"'))
00:01:07 verbose #969 > >                     "get_or_init"
00:01:07 verbose #970 > >                 |> sm'.replace
00:01:07 verbose #971 > >                     ("use
00:01:07 verbose #972 > > fable_library_rust::System::Collections::Concurrent::ConcurrentStack_1" +.
00:01:07 verbose #973 > > !\($'"\\\";\\\".into()"'))
00:01:07 verbose #974 > >                     "type ConcurrentStack_1<T> = T;"
00:01:07 verbose #975 > >                 |> sm'.replace
00:01:07 verbose #976 > >                     ("use
00:01:07 verbose #977 > > fable_library_rust::System::Threading::CancellationToken" +.
00:01:07 verbose #978 > > !\($'"\\\";\\\".into()"'))
00:01:07 verbose #979 > >                     "type CancellationToken = ();"
00:01:07 verbose #980 > >                 |> sm'.replace
00:01:07 verbose #981 > >                     ("use fable_library_rust::System::TimeZoneInfo" +.
00:01:07 verbose #982 > > !\($'"\\\";\\\".into()"'))
00:01:07 verbose #983 > >                     "type TimeZoneInfo = i64;"
00:01:07 verbose #984 > >                 |> sm'.replace
00:01:07 verbose #985 > >                     ("use
00:01:07 verbose #986 > > fable_library_rust::System::Threading::Tasks::TaskCanceledException" +.
00:01:07 verbose #987 > > !\($'"\\\";\\\".into()"'))
00:01:07 verbose #988 > >                     "type TaskCanceledException = ();"
00:01:07 verbose #989 > >
00:01:07 verbose #990 > >         if not cached
00:01:07 verbose #991 > >         then
00:01:07 verbose #992 > >             $'$"{!new_code}\\n\\n{!main_code}\\n"'
00:01:07 verbose #993 > >             |> file_system.write_all_text_exists new_code_path
00:01:07 verbose #994 > >
00:01:07 verbose #995 > >         inl command =
00:01:07 verbose #996 > >             if runtime <> None
00:01:07 verbose #997 > >             then $'$"cargo build --release --target wasm32-unknown-unknown
00:01:07 verbose #998 > > --manifest-path \\\"{!cargo_toml_path}\\\""'
00:01:07 verbose #999 > >             else $'$"cargo run --manifest-path \\\"{!cargo_toml_path}\\\""'
00:01:07 verbose #1000 > >         inl environment_variables =
00:01:07 verbose #1001 > >             if runtime <> None
00:01:07 verbose #1002 > >             then ;[[]]
00:01:07 verbose #1003 > >             else
00:01:07 verbose #1004 > >                 inl fast = false
00:01:07 verbose #1005 > >                 ;[[
00:01:07 verbose #1006 > >                     "TRACE_LEVEL", "Verbose"
00:01:07 verbose #1007 > >                     "RUSTC_WRAPPER", "sccache"
00:01:07 verbose #1008 > >                     "RUSTFLAGS",
00:01:07 verbose #1009 > >                     if fast
00:01:07 verbose #1010 > >                     then "-C prefer-dynamic -C strip=symbols -C link-arg=-s -C
00:01:07 verbose #1011 > > debuginfo=0"
00:01:07 verbose #1012 > >                     else "-C prefer-dynamic"
00:01:07 verbose #1013 > >                 ]]
00:01:07 verbose #1014 > >         inl exit_code, cargo_result =
00:01:07 verbose #1015 > >             execution_options fun x => { x with
00:01:07 verbose #1016 > >                 command
00:01:07 verbose #1017 > >                 environment_variables
00:01:07 verbose #1018 > >                 working_directory = workspace_root_external |> resultm.box |>
00:01:07 verbose #1019 > > resultm.ok'
00:01:07 verbose #1020 > >             }
00:01:07 verbose #1021 > >             |> execute_with_options
00:01:07 verbose #1022 > >
00:01:07 verbose #1023 > >         inl result =
00:01:07 verbose #1024 > >             if runtime = None then
00:01:07 verbose #1025 > >                 inl external_command =
00:01:07 verbose #1026 > >                     inl vars =
00:01:07 verbose #1027 > >                         a environment_variables
00:01:07 verbose #1028 > >                         |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' :
00:01:07 verbose #1029 > > string
00:01:07 verbose #1030 > >                         |> fun x => x : _ i32 _
00:01:07 verbose #1031 > >                         |> seq.of_array
00:01:07 verbose #1032 > >                         |> sm'.concat ";"
00:01:07 verbose #1033 > >                     inl command =
00:01:07 verbose #1034 > >                         a ;[[
00:01:07 verbose #1035 > >                             vars
00:01:07 verbose #1036 > >                             command
00:01:07 verbose #1037 > >                         ]]
00:01:07 verbose #1038 > >                         |> fun x => x : _ i32 _
00:01:07 verbose #1039 > >                         |> seq.of_array
00:01:07 verbose #1040 > >                         |> sm'.concat ";"
00:01:07 verbose #1041 > >                     $'$"pwsh -c \'{!command}\'"' : string
00:01:07 verbose #1042 > >                 if exit_code = 0 then
00:01:07 verbose #1043 > >                     inl output =
00:01:07 verbose #1044 > >                         try
00:01:07 verbose #1045 > >                             fun () =>
00:01:07 verbose #1046 > >                                 cargo_result
00:01:07 verbose #1047 > >                                 |> sm'.split "\n"
00:01:07 verbose #1048 > >                                 |> fun x => a x : _ i32 _
00:01:07 verbose #1049 > >                                 |> am'.skip_while fun line =>
00:01:07 verbose #1050 > >                                     (line |> sm'.contains "profile [[optimized]]
00:01:07 verbose #1051 > > target" |> not)
00:01:07 verbose #1052 > >                                         && (line |> sm'.contains "profile
00:01:07 verbose #1053 > > [[unoptimized]] target" |> not)
00:01:07 verbose #1054 > >                                         && (line |> sm'.contains "profile
00:01:07 verbose #1055 > > [[unoptimized + debuginfo]] target" |> not)
00:01:07 verbose #1056 > >                                 |> am'.skip 2
00:01:07 verbose #1057 > >                                 |> seq.of_array
00:01:07 verbose #1058 > >                                 |> sm'.concat "\n"
00:01:07 verbose #1059 > >                             fun ex =>
00:01:07 verbose #1060 > >                                 trace Critical
00:01:07 verbose #1061 > >                                     fun () => "spiral_builder.process_rust
00:01:07 verbose #1062 > > Exception"
00:01:07 verbose #1063 > >                                     fun () => { ex cargo_result new_code_path
00:01:07 verbose #1064 > > external_command }
00:01:07 verbose #1065 > >                                 None
00:01:07 verbose #1066 > >                         |> optionm'.box
00:01:07 verbose #1067 > >                         |> optionm'.unwrap
00:01:07 verbose #1068 > >
00:01:07 verbose #1069 > >                     { extension = Some extension; code = Some new_code; output =
00:01:07 verbose #1070 > > Some output }
00:01:07 verbose #1071 > >                 else
00:01:07 verbose #1072 > >                     trace Critical
00:01:07 verbose #1073 > >                         fun () => "spiral_builder.process_rust / error"
00:01:07 verbose #1074 > >                         fun () => { exit_code cargo_result new_code_path
00:01:07 verbose #1075 > > external_command }
00:01:07 verbose #1076 > >                     { extension = Some extension; code = None; output = None }
00:01:07 verbose #1077 > >             else
00:01:07 verbose #1078 > >                 inl wasm_path : string =
00:01:07 verbose #1079 > >
00:01:07 verbose #1080 > > $'$"target/spiral_builder/{!workspace_name}/target/wasm32-unknown-unknown/releas
00:01:07 verbose #1081 > > e/spiral_builder_{!hash_hex}.wasm"'
00:01:07 verbose #1082 > >
00:01:07 verbose #1083 > >                 inl command =
00:01:07 verbose #1084 > >                     inl invoke_block_path = "scripts/invoke-block.ps1"
00:01:07 verbose #1085 > >                     inl spiral_wasm_command : string =
00:01:07 verbose #1086 > >                         inl runtime_cmd =
00:01:07 verbose #1087 > >                             match runtime with
00:01:07 verbose #1088 > >                             | Some (Wasm cmd) => cmd
00:01:07 verbose #1089 > >                             | Some (Contract cmd) => cmd
00:01:07 verbose #1090 > >                             | _ => ""
00:01:07 verbose #1091 > >                         $'$"\'workspace/target/release/spiral_wasm -t Debug -w
00:01:07 verbose #1092 > > {!wasm_path} {!runtime_cmd}\'"'
00:01:07 verbose #1093 > >                     $'$"pwsh -c \\\"pwsh {!invoke_block_path}
00:01:07 verbose #1094 > > {!spiral_wasm_command} -Linux -EnvironmentVariables
00:01:07 verbose #1095 > > NEAR_RPC_TIMEOUT_SECS=100\\\""'
00:01:07 verbose #1096 > >
00:01:07 verbose #1097 > >                 if exit_code = 0 then
00:01:07 verbose #1098 > >                     inl exit_code, spiral_wasm_result =
00:01:07 verbose #1099 > >                         execution_options fun x => { x with
00:01:07 verbose #1100 > >                             command
00:01:07 verbose #1101 > >                             working_directory = workspace_root |> optionm'.some'
00:01:07 verbose #1102 > >                         }
00:01:07 verbose #1103 > >                         |> execute_with_options
00:01:07 verbose #1104 > >
00:01:07 verbose #1105 > >                     inl output = spiral_wasm_result
00:01:07 verbose #1106 > >
00:01:07 verbose #1107 > >                     if exit_code = 0 then
00:01:07 verbose #1108 > >                         { extension = Some extension; code = Some new_code;
00:01:07 verbose #1109 > > output = Some output }
00:01:07 verbose #1110 > >                     else
00:01:07 verbose #1111 > >                         trace Critical
00:01:07 verbose #1112 > >                             fun () => "spiral_builder.process_rust / wasm error"
00:01:07 verbose #1113 > >                             fun () => { exit_code spiral_wasm_result
00:01:07 verbose #1114 > > cargo_result new_code_path }
00:01:07 verbose #1115 > >                         { extension = Some extension; code = None; output = None
00:01:07 verbose #1116 > > }
00:01:07 verbose #1117 > >                 else
00:01:07 verbose #1118 > >                     trace Critical
00:01:07 verbose #1119 > >                         fun () => "spiral_builder.process_rust / error"
00:01:07 verbose #1120 > >                         fun () => { exit_code cargo_result new_code_path
00:01:07 verbose #1121 > > wasm_path command }
00:01:07 verbose #1122 > >                     { extension = Some extension; code = None; output = None }
00:01:07 verbose #1123 > >
00:01:07 verbose #1124 > >         inl cleanup =
00:01:07 verbose #1125 > >             inl build_target =
00:01:07 verbose #1126 > >                 if runtime <> None
00:01:07 verbose #1127 > >                 then "wasm32-unknown-unknown/release"
00:01:07 verbose #1128 > >                 else "debug"
00:01:07 verbose #1129 > >
00:01:07 verbose #1130 > >             [[ ".d"; ".exe"; ".pdb"; ".wasm"; "" ]]
00:01:07 verbose #1131 > >             |> listm.map fun ext =>
00:01:07 verbose #1132 > >                 workspace_dir </>
00:01:07 verbose #1133 > > $'$"target/{!build_target}/spiral_builder_{!hash_hex}{!ext}"'
00:01:07 verbose #1134 > >             |> listm.map fun path => path, path |> file_system.file_exists
00:01:07 verbose #1135 > >
00:01:07 verbose #1136 > >         trace Verbose
00:01:07 verbose #1137 > >             fun () => "spiral_builder.process_rust / cleanup"
00:01:07 verbose #1138 > >             fun () => { new_code_path cleanup }
00:01:07 verbose #1139 > >
00:01:07 verbose #1140 > >         cleanup
00:01:07 verbose #1141 > >         |> listm'.filter snd
00:01:07 verbose #1142 > >         |> listm.iter (fst >> file_system.file_delete)
00:01:07 verbose #1143 > >
00:01:07 verbose #1144 > >         result
00:01:08 verbose #1145 > >
00:01:08 verbose #1146 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:08 verbose #1147 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:08 verbose #1148 > > │ ## dib                                                                       │
00:01:08 verbose #1149 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 verbose #1150 > >
00:01:08 verbose #1151 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:08 verbose #1152 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:08 verbose #1153 > > │ ### process_dib                                                              │
00:01:08 verbose #1154 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 verbose #1155 > >
00:01:08 verbose #1156 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:08 verbose #1157 > > inl process_dib { path retries working_directory } =
00:01:08 verbose #1158 > >     inl exit_code, repl_result =
00:01:08 verbose #1159 > >         let rec loop retry =
00:01:08 verbose #1160 > >             inl exit_code, repl_result =
00:01:08 verbose #1161 > >                 runtime.execution_options fun x => { x with
00:01:08 verbose #1162 > >                     command = $'$"dotnet repl --exit-after-run --run
00:01:08 verbose #1163 > > \\\"{!path}\\\" --output-path \\\"{!path}.ipynb\\\""'
00:01:08 verbose #1164 > >                     environment_variables = ;[[
00:01:08 verbose #1165 > >                         "TRACE_LEVEL", "Verbose"
00:01:08 verbose #1166 > >                         "AUTOMATION", "True"
00:01:08 verbose #1167 > >                     ]]
00:01:08 verbose #1168 > >                     trace = false
00:01:08 verbose #1169 > >                     working_directory = working_directory |> optionm'.box
00:01:08 verbose #1170 > >                 }
00:01:08 verbose #1171 > >                 |> runtime.execute_with_options
00:01:08 verbose #1172 > >
00:01:08 verbose #1173 > >             if exit_code = 0 || retry >= retries
00:01:08 verbose #1174 > >             then exit_code, repl_result
00:01:08 verbose #1175 > >             else
00:01:08 verbose #1176 > >                 trace Debug
00:01:08 verbose #1177 > >                     fun () => $'"spiral_builder.run / repl error"'
00:01:08 verbose #1178 > >                     fun () => { exit_code repl_result retry =
00:01:08 verbose #1179 > > $'$"{!retry}/{!retries}"' : string }
00:01:08 verbose #1180 > >                 loop (retry + 1)
00:01:08 verbose #1181 > >         loop 1
00:01:08 verbose #1182 > >
00:01:08 verbose #1183 > >     inl exit_code, result =
00:01:08 verbose #1184 > >         if exit_code <>. 0
00:01:08 verbose #1185 > >         then exit_code, repl_result
00:01:08 verbose #1186 > >         else
00:01:08 verbose #1187 > >             inl exit_code, jupyter_result =
00:01:08 verbose #1188 > >                 runtime.execution_options fun x => { x with
00:01:08 verbose #1189 > >                     command = $'$"jupyter nbconvert \\\"{!path}.ipynb\\\" --to
00:01:08 verbose #1190 > > html --HTMLExporter.theme=dark"'
00:01:08 verbose #1191 > >                 }
00:01:08 verbose #1192 > >                 |> runtime.execute_with_options
00:01:08 verbose #1193 > >
00:01:08 verbose #1194 > >             trace Debug
00:01:08 verbose #1195 > >                 fun () => $'"spiral_builder.run / dib / jupyter nbconvert"'
00:01:08 verbose #1196 > >                 fun () => { exit_code jupyter_result_length = jupyter_result |>
00:01:08 verbose #1197 > > sm'.length : i32 }
00:01:08 verbose #1198 > >
00:01:08 verbose #1199 > >             if exit_code <>. 0
00:01:08 verbose #1200 > >             then exit_code, $'$"repl_result: {!repl_result}\n\njupyter_result:
00:01:08 verbose #1201 > > {!jupyter_result}"'
00:01:08 verbose #1202 > >             else
00:01:08 verbose #1203 > >                 inl exit_code, pwsh_replace_html_result =
00:01:08 verbose #1204 > >                     inl path = path |> sm'.replace "'" "''"
00:01:08 verbose #1205 > >                     runtime.execution_options fun x => { x with
00:01:08 verbose #1206 > >                         command = $'$"pwsh -c \\\"$counter = 1; $path =
00:01:08 verbose #1207 > > \'{!path}.html\'; (Get-Content $path -Raw) -replace
00:01:08 verbose #1208 > > \'(id=\\\\\\"cell-id=)[[a-fA-F0-9]]{{8}}\', {{ $_.Groups[[1]].Value + $counter++
00:01:08 verbose #1209 > > }} | Set-Content $path\\\""'
00:01:08 verbose #1210 > >                     }
00:01:08 verbose #1211 > >                     |> runtime.execute_with_options
00:01:08 verbose #1212 > >
00:01:08 verbose #1213 > >                 trace Debug
00:01:08 verbose #1214 > >                     fun () => $'"spiral_builder.run / dib / html cell ids"'
00:01:08 verbose #1215 > >                     fun () => { exit_code pwsh_replace_html_result_length =
00:01:08 verbose #1216 > > pwsh_replace_html_result |> sm'.length : i32 }
00:01:08 verbose #1217 > >
00:01:08 verbose #1218 > >                 $'$"{!path}.html"'
00:01:08 verbose #1219 > >                 |> file_system.read_all_text
00:01:08 verbose #1220 > >                 |> sm'.replace "\r\n" "\n"
00:01:08 verbose #1221 > >                 |> file_system.write_all_text $'$"{!path}.html"'
00:01:08 verbose #1222 > >
00:01:08 verbose #1223 > >                 $'$"{!path}.ipynb"'
00:01:08 verbose #1224 > >                 |> file_system.read_all_text
00:01:08 verbose #1225 > >                 |> sm'.replace "\r\n" "\n"
00:01:08 verbose #1226 > >                 |> sm'.replace "\\r\\n" "\\n"
00:01:08 verbose #1227 > >                 |> file_system.write_all_text $'$"{!path}.ipynb"'
00:01:08 verbose #1228 > >
00:01:08 verbose #1229 > >                 exit_code, $'$"repl_result: {!repl_result}\n\njupyter_result:
00:01:08 verbose #1230 > > {!jupyter_result}\n\npwsh_replace_html_result: {!pwsh_replace_html_result}"'
00:01:08 verbose #1231 > >
00:01:08 verbose #1232 > >     trace Debug
00:01:08 verbose #1233 > >         fun () => $'"spiral_builder.run / dib"'
00:01:08 verbose #1234 > >         fun () => { exit_code result_length = result |> sm'.length : i32 }
00:01:08 verbose #1235 > >
00:01:08 verbose #1236 > >     if exit_code <>. 0
00:01:08 verbose #1237 > >     then failwith $'$"spiral_builder.run / dib / exit_code: {!exit_code}
00:01:08 verbose #1238 > > result: {!result}"'
00:01:08 verbose #1239 > >     ;[[
00:01:08 verbose #1240 > >         "stdio",
00:01:08 verbose #1241 > >         result
00:01:08 verbose #1242 > >     ]]
00:01:08 verbose #1243 > >
00:01:08 verbose #1244 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:08 verbose #1245 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:08 verbose #1246 > > │ ## typescript                                                                │
00:01:08 verbose #1247 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 verbose #1248 > >
00:01:08 verbose #1249 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:08 verbose #1250 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:08 verbose #1251 > > │ ### process_typescript                                                       │
00:01:08 verbose #1252 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 verbose #1253 > >
00:01:08 verbose #1254 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:08 verbose #1255 > > inl process_typescript { fs_path deps trace_level } =
00:01:08 verbose #1256 > >     inl extension = "ts"
00:01:08 verbose #1257 > >     inl is_trace = trace_level = Verbose
00:01:08 verbose #1258 > >     inl _trace (fn : () -> string) =
00:01:08 verbose #1259 > >         if is_trace
00:01:08 verbose #1260 > >         then trace Info (fun () => $'$"spiral_builder.process_typescript / {!fn
00:01:08 verbose #1261 > > ()}"') id
00:01:08 verbose #1262 > >         else fn () |> console.write_line
00:01:08 verbose #1263 > >
00:01:08 verbose #1264 > >     inl code = fs_path |> file_system.read_all_text
00:01:08 verbose #1265 > >
00:01:08 verbose #1266 > >     inl hash_hex = (extension, code) |> sm'.format_debug |> crypto.hash_text
00:01:08 verbose #1267 > >
00:01:08 verbose #1268 > >     inl workspace_name = "spiral_builder"
00:01:08 verbose #1269 > >
00:01:08 verbose #1270 > >     inl workspace_root_external = file_system.get_workspace_root_external ()
00:01:08 verbose #1271 > >     inl workspace_root = workspace_root_external |> resultm.box |>
00:01:08 verbose #1272 > > resultm.unwrap_or_else id
00:01:08 verbose #1273 > >
00:01:08 verbose #1274 > >     inl package_dir =
00:01:08 verbose #1275 > >         get_package_dir
00:01:08 verbose #1276 > >             { workspace_root name = workspace_name; target = Some TypeScript;
00:01:08 verbose #1277 > > hash = Some hash_hex }
00:01:08 verbose #1278 > >
00:01:08 verbose #1279 > >     inl fsproj_path =
00:01:08 verbose #1280 > >         persist_code_project
00:01:08 verbose #1281 > >             {
00:01:08 verbose #1282 > >                 workspace_root
00:01:08 verbose #1283 > >                 package_dir
00:01:08 verbose #1284 > >                 packages = [[ "Fable.Core" ]]
00:01:08 verbose #1285 > >                 modules = [[]]
00:01:08 verbose #1286 > >                 name = workspace_name
00:01:08 verbose #1287 > >                 code
00:01:08 verbose #1288 > >             }
00:01:08 verbose #1289 > >
00:01:08 verbose #1290 > >     inl lib_path = workspace_root </> "lib/typescript/fable/fable_modules"
00:01:08 verbose #1291 > >
00:01:08 verbose #1292 > >     inl versions : _ (string * string) =
00:01:08 verbose #1293 > >         lib_path
00:01:08 verbose #1294 > >         |> file_system.new_walk_dir
00:01:08 verbose #1295 > >         |> file_system.walk_dir_filter fun entry => async.new_future_move_send
00:01:08 verbose #1296 > > fun () =>
00:01:08 verbose #1297 > >             entry
00:01:08 verbose #1298 > >             |> file_system.dir_entry_file_type
00:01:08 verbose #1299 > >             |> async.await_send
00:01:08 verbose #1300 > >             |> resultm.map_error' sm'.format'
00:01:08 verbose #1301 > >             |> resultm.unbox
00:01:08 verbose #1302 > >             |> function
00:01:08 verbose #1303 > >                 | Ok file_type when file_type |> file_system.file_type_is_dir |>
00:01:08 verbose #1304 > > not => file_system.Ignore
00:01:08 verbose #1305 > >                 | _ =>
00:01:08 verbose #1306 > >                     inl path =
00:01:08 verbose #1307 > >                         entry
00:01:08 verbose #1308 > >                         |> file_system.dir_entry_path
00:01:08 verbose #1309 > >                         |> file_system.path_buf_display
00:01:08 verbose #1310 > >                         |> sm'.format'
00:01:08 verbose #1311 > >                         |> sm'.from_std_string
00:01:08 verbose #1312 > >                     if path |> file_system.get_directory_name |> sm'.starts_with
00:01:08 verbose #1313 > > "fable-library-ts."
00:01:08 verbose #1314 > >                     then file_system.Continue
00:01:08 verbose #1315 > >                     else file_system.IgnoreDir
00:01:08 verbose #1316 > >         |> async.stream_filter_map fun (entry : _ _
00:01:08 verbose #1317 > > file_system.async_walkdir_error) =>
00:01:08 verbose #1318 > >             inl entry = entry |> resultm.map_error' sm'.format' |> resultm.unbox
00:01:08 verbose #1319 > >             match entry with
00:01:08 verbose #1320 > >             | Ok entry =>
00:01:08 verbose #1321 > >                 inl path =
00:01:08 verbose #1322 > >                     entry
00:01:08 verbose #1323 > >                     |> file_system.dir_entry_path
00:01:08 verbose #1324 > >                     |> file_system.path_buf_display
00:01:08 verbose #1325 > >                     |> sm'.format'
00:01:08 verbose #1326 > >                     |> sm'.from_std_string
00:01:08 verbose #1327 > >                 inl version =
00:01:08 verbose #1328 > >                     $'$"fable-library-{!extension}\\.(?<a>[[\\d.]]+)$"'
00:01:08 verbose #1329 > >                     |> sm'.new_regex
00:01:08 verbose #1330 > >                     |> resultm.unwrap'
00:01:08 verbose #1331 > >                     |> sm'.regex_captures path
00:01:08 verbose #1332 > >                     |> am'.from_vec
00:01:08 verbose #1333 > >                     |> fun x => x : _ i32 _
00:01:08 verbose #1334 > >                     |> am'.try_item 0
00:01:08 verbose #1335 > >                     |> optionm.map (mapm.get "a" >> optionm'.unbox)
00:01:08 verbose #1336 > >                     |> optionm'.flatten
00:01:08 verbose #1337 > >                 match version with
00:01:08 verbose #1338 > >                 | None => None
00:01:08 verbose #1339 > >                 | Some version => Some (path, version)
00:01:08 verbose #1340 > >             | Error error =>
00:01:08 verbose #1341 > >                 trace Critical
00:01:08 verbose #1342 > >                     fun () => $'"spiral_builder.process_typescript
00:01:08 verbose #1343 > > stream_filter_map"'
00:01:08 verbose #1344 > >                     fun () => { error }
00:01:08 verbose #1345 > >                 None
00:01:08 verbose #1346 > >             |> optionm'.box
00:01:08 verbose #1347 > >         |> async.stream_collect
00:01:08 verbose #1348 > >         |> async.await
00:01:08 verbose #1349 > >         |> async.into_par_iter
00:01:08 verbose #1350 > >         |> async.par_map id
00:01:08 verbose #1351 > >         |> async.par_collect
00:01:08 verbose #1352 > >
00:01:08 verbose #1353 > >     inl version =
00:01:08 verbose #1354 > >         versions
00:01:08 verbose #1355 > >         |> am'.from_vec
00:01:08 verbose #1356 > >         |> fun x => x : _ i32 _
00:01:08 verbose #1357 > >         |> am'.try_item 0
00:01:08 verbose #1358 > >
00:01:08 verbose #1359 > >     trace Debug
00:01:08 verbose #1360 > >         fun () => $'"spiral_builder.process_typescript"'
00:01:08 verbose #1361 > >         fun () => { version }
00:01:08 verbose #1362 > >
00:01:08 verbose #1363 > >     match version with
00:01:08 verbose #1364 > >     | None => ()
00:01:08 verbose #1365 > >     | Some (_path, version) =>
00:01:08 verbose #1366 > >         inl lib_link_target_path = lib_path </>
00:01:08 verbose #1367 > > $'$"fable-library-{!extension}.{!version}"'
00:01:08 verbose #1368 > >         inl lib_link_path = package_dir </>
00:01:08 verbose #1369 > > $'$"fable_modules/fable-library-{!extension}.{!version}"'
00:01:08 verbose #1370 > >
00:01:08 verbose #1371 > >         lib_link_path |> file_system.link_directory lib_link_target_path
00:01:08 verbose #1372 > >
00:01:08 verbose #1373 > >     inl exit_code, dotnet_fable_result =
00:01:08 verbose #1374 > >         execute_dotnet_fable { workspace_root_external fsproj_path extension
00:01:08 verbose #1375 > > package_dir runtime = None }
00:01:08 verbose #1376 > >
00:01:08 verbose #1377 > >     if exit_code <>. 0 then
00:01:08 verbose #1378 > >         trace Critical
00:01:08 verbose #1379 > >             fun () => $'$"spiral_builder.process_typescript"'
00:01:08 verbose #1380 > >             fun () => { exit_code dotnet_fable_result }
00:01:08 verbose #1381 > >         { extension = Some extension; code = None; output = Some
00:01:08 verbose #1382 > > dotnet_fable_result }
00:01:08 verbose #1383 > >     else
00:01:08 verbose #1384 > >         inl deps =
00:01:08 verbose #1385 > >             deps
00:01:08 verbose #1386 > >             |> am'.vec_map fun dep =>
00:01:08 verbose #1387 > >                 inl dep = dep |> sm'.from_std_string
00:01:08 verbose #1388 > >                 if dep |> sm'.contains "="
00:01:08 verbose #1389 > >                 then dep
00:01:08 verbose #1390 > >                 else $'$"\\"{!dep}\\":\\"*\\""'
00:01:08 verbose #1391 > >             |> am'.from_vec
00:01:08 verbose #1392 > >             |> fun x => x : _ i32 _
00:01:08 verbose #1393 > >             |> seq.of_array'
00:01:08 verbose #1394 > >             |> sm'.concat ",\n"
00:01:08 verbose #1395 > >
00:01:08 verbose #1396 > >         inl package_json_content =
00:01:08 verbose #1397 > >             $'$"{{"'
00:01:08 verbose #1398 > >             +. $'$"  \\\"name\\\": \\\"spiral_builder_{!hash_hex}\\\","'
00:01:08 verbose #1399 > >             +. $'$"  \\\"dependencies\\\": {{"'
00:01:08 verbose #1400 > >             +. deps
00:01:08 verbose #1401 > >             +. $'$"  }},"'
00:01:08 verbose #1402 > >             +. $'$"    \\\"devDependencies\\\": {{"'
00:01:08 verbose #1403 > >             +. $'$"  }},"'
00:01:08 verbose #1404 > >             +. $'$"}}"'
00:01:08 verbose #1405 > >
00:01:08 verbose #1406 > >         inl workspace_package_json_content =
00:01:08 verbose #1407 > >             ""
00:01:08 verbose #1408 > >
00:01:08 verbose #1409 > >         inl package_json_path = package_dir </> "package.json"
00:01:08 verbose #1410 > >
00:01:08 verbose #1411 > >         inl workspace_dir = package_dir </> "../.."
00:01:08 verbose #1412 > >         inl workspace_package_json_path = workspace_dir </> "package.json"
00:01:08 verbose #1413 > >
00:01:08 verbose #1414 > >         package_json_content |> file_system.write_all_text_exists
00:01:08 verbose #1415 > > package_json_path
00:01:08 verbose #1416 > >
00:01:08 verbose #1417 > >         workspace_package_json_content |> file_system.write_all_text_exists
00:01:08 verbose #1418 > > workspace_package_json_path
00:01:08 verbose #1419 > >
00:01:08 verbose #1420 > >         inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"'
00:01:08 verbose #1421 > >         trace Debug
00:01:08 verbose #1422 > >             fun () => $'"spiral_builder.process_typescript"'
00:01:08 verbose #1423 > >             fun () => { new_code_path }
00:01:08 verbose #1424 > >         inl new_code = new_code_path |> file_system.read_all_text
00:01:08 verbose #1425 > >
00:01:08 verbose #1426 > >         inl main_code_header =
00:01:08 verbose #1427 > >             "// spiral_builder.process_typescript"
00:01:08 verbose #1428 > >         inl main_code = "// spiral_builder.process_typescript"
00:01:08 verbose #1429 > >
00:01:08 verbose #1430 > >         inl cached = new_code |> sm'.contains main_code_header
00:01:08 verbose #1431 > >
00:01:08 verbose #1432 > >         inl new_code =
00:01:08 verbose #1433 > >             if cached
00:01:08 verbose #1434 > >             then new_code
00:01:08 verbose #1435 > >             else
00:01:08 verbose #1436 > >                 new_code
00:01:08 verbose #1437 > >                 |> sm'.replace
00:01:08 verbose #1438 > >                     $'$"\\\"./fable_modules/fable-library-ts.{!version}/"'
00:01:08 verbose #1439 > >
00:01:08 verbose #1440 > > $'$"\\\"{!workspace_root}/lib/typescript/fable/fable_modules/fable-library-ts.{!
00:01:08 verbose #1441 > > version}/"'
00:01:08 verbose #1442 > >                 |> sm'.replace_regex
00:01:08 verbose #1443 > >                     "\\s\\sdefaultOf\\(\\);"
00:01:08 verbose #1444 > >                     " defaultOf::<()>();"
00:01:08 verbose #1445 > >
00:01:08 verbose #1446 > >         if not cached then
00:01:08 verbose #1447 > >             $'$"{!new_code}\\n\\n{!main_code}\\n"'
00:01:08 verbose #1448 > >             |> file_system.write_all_text_exists new_code_path
00:01:08 verbose #1449 > >
00:01:08 verbose #1450 > >         inl command = $'$"bun run \\\"{!new_code_path}\\\""'
00:01:08 verbose #1451 > >         inl environment_variables =
00:01:08 verbose #1452 > >             match "~/.bun/bin" |> env.append_path with
00:01:08 verbose #1453 > >             | Some path => [[ "PATH", path ]]
00:01:08 verbose #1454 > >             | None => [[]]
00:01:08 verbose #1455 > >             ++ [[
00:01:08 verbose #1456 > >                 "TRACE_LEVEL", "Verbose"
00:01:08 verbose #1457 > >             ]]
00:01:08 verbose #1458 > >             |> listm'.box
00:01:08 verbose #1459 > >             |> listm'.to_array'
00:01:08 verbose #1460 > >         inl exit_code, run_result =
00:01:08 verbose #1461 > >             runtime.execution_options fun x => { x with
00:01:08 verbose #1462 > >                 command
00:01:08 verbose #1463 > >                 environment_variables
00:01:08 verbose #1464 > >                 working_directory = workspace_root_external |> resultm.box |>
00:01:08 verbose #1465 > > resultm.ok'
00:01:08 verbose #1466 > >             }
00:01:08 verbose #1467 > >             |> runtime.execute_with_options
00:01:08 verbose #1468 > >
00:01:08 verbose #1469 > >         inl external_command =
00:01:08 verbose #1470 > >             inl vars =
00:01:08 verbose #1471 > >                 a environment_variables
00:01:08 verbose #1472 > >                 |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string
00:01:08 verbose #1473 > >                 |> fun x => x : _ i32 _
00:01:08 verbose #1474 > >                 |> seq.of_array
00:01:08 verbose #1475 > >                 |> sm'.concat ";"
00:01:08 verbose #1476 > >             $'$"pwsh -c \'{!vars}; {!command}\'"' : string
00:01:08 verbose #1477 > >         if exit_code = 0 then
00:01:08 verbose #1478 > >             inl output =
00:01:08 verbose #1479 > >                 try
00:01:08 verbose #1480 > >                     fun () =>
00:01:08 verbose #1481 > >                         run_result
00:01:08 verbose #1482 > >                         |> sm'.split "\n"
00:01:08 verbose #1483 > >                         |> fun x => a x : _ i32 _
00:01:08 verbose #1484 > >                         |> seq.of_array
00:01:08 verbose #1485 > >                         |> sm'.concat "\n"
00:01:08 verbose #1486 > >                     fun ex =>
00:01:08 verbose #1487 > >                         trace Critical
00:01:08 verbose #1488 > >                             fun () => "spiral_builder.process_typescript
00:01:08 verbose #1489 > > Exception"
00:01:08 verbose #1490 > >                             fun () => { ex new_code_path external_command
00:01:08 verbose #1491 > > run_result }
00:01:08 verbose #1492 > >                         None
00:01:08 verbose #1493 > >                 |> optionm'.box
00:01:08 verbose #1494 > >                 |> optionm'.unwrap
00:01:08 verbose #1495 > >
00:01:08 verbose #1496 > >             { extension = Some extension; code = Some new_code; output = Some
00:01:08 verbose #1497 > > output }
00:01:08 verbose #1498 > >         else
00:01:08 verbose #1499 > >             trace Critical
00:01:08 verbose #1500 > >                 fun () => "spiral_builder.process_typescript / error"
00:01:08 verbose #1501 > >                 fun () => { exit_code run_result new_code_path external_command
00:01:08 verbose #1502 > > }
00:01:08 verbose #1503 > >             { extension = Some extension; code = None; output = None }
00:01:08 verbose #1504 > >
00:01:08 verbose #1505 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:08 verbose #1506 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:08 verbose #1507 > > │ ## python                                                                    │
00:01:08 verbose #1508 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 verbose #1509 > >
00:01:08 verbose #1510 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:08 verbose #1511 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:08 verbose #1512 > > │ ### process_python                                                           │
00:01:08 verbose #1513 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 verbose #1514 > >
00:01:08 verbose #1515 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:08 verbose #1516 > > inl process_python { fs_path deps trace_level } =
00:01:08 verbose #1517 > >     inl extension = "py"
00:01:08 verbose #1518 > >     inl is_trace = trace_level = Verbose
00:01:08 verbose #1519 > >     inl _trace (fn : () -> string) =
00:01:08 verbose #1520 > >         if is_trace
00:01:08 verbose #1521 > >         then trace Info (fun () => $'$"spiral_builder.process_python / {!fn
00:01:08 verbose #1522 > > ()}"') id
00:01:08 verbose #1523 > >         else fn () |> console.write_line
00:01:08 verbose #1524 > >
00:01:08 verbose #1525 > >     inl code = fs_path |> file_system.read_all_text
00:01:08 verbose #1526 > >
00:01:08 verbose #1527 > >     inl hash_hex = (extension, code) |> sm'.format_debug |> crypto.hash_text
00:01:08 verbose #1528 > >
00:01:08 verbose #1529 > >     inl workspace_name = "spiral_builder"
00:01:08 verbose #1530 > >
00:01:08 verbose #1531 > >     inl workspace_root_external = file_system.get_workspace_root_external ()
00:01:08 verbose #1532 > >     inl workspace_root = workspace_root_external |> resultm.box |>
00:01:08 verbose #1533 > > resultm.unwrap_or_else id
00:01:08 verbose #1534 > >
00:01:08 verbose #1535 > >     inl package_dir =
00:01:08 verbose #1536 > >         get_package_dir { workspace_root name = workspace_name; target = Some
00:01:08 verbose #1537 > > Python; hash = Some hash_hex }
00:01:08 verbose #1538 > >
00:01:08 verbose #1539 > >     inl fsproj_path =
00:01:08 verbose #1540 > >         persist_code_project
00:01:08 verbose #1541 > >             {
00:01:08 verbose #1542 > >                 workspace_root
00:01:08 verbose #1543 > >                 package_dir
00:01:08 verbose #1544 > >                 packages = [[ "Fable.Core" ]]
00:01:08 verbose #1545 > >                 modules = [[]]
00:01:08 verbose #1546 > >                 name = workspace_name
00:01:08 verbose #1547 > >                 code
00:01:08 verbose #1548 > >             }
00:01:08 verbose #1549 > >
00:01:08 verbose #1550 > >     inl lib_path = workspace_root </> "lib/python/fable/fable_modules"
00:01:08 verbose #1551 > >
00:01:08 verbose #1552 > >     inl lib_link_target_path = lib_path </> $'$"fable_library"'
00:01:08 verbose #1553 > >     inl lib_link_path = package_dir </> $'$"fable_modules/fable_library"'
00:01:08 verbose #1554 > >
00:01:08 verbose #1555 > >     lib_link_path |> file_system.link_directory lib_link_target_path
00:01:08 verbose #1556 > >
00:01:08 verbose #1557 > >     inl exit_code, dotnet_fable_result =
00:01:08 verbose #1558 > >         execute_dotnet_fable { workspace_root_external fsproj_path extension
00:01:08 verbose #1559 > > package_dir runtime = None }
00:01:08 verbose #1560 > >
00:01:08 verbose #1561 > >     if exit_code <>. 0 then
00:01:08 verbose #1562 > >         trace Critical
00:01:08 verbose #1563 > >             fun () => $'$"spiral_builder.process_python"'
00:01:08 verbose #1564 > >             fun () => { exit_code dotnet_fable_result }
00:01:08 verbose #1565 > >         { extension = Some extension; code = None; output = Some
00:01:08 verbose #1566 > > dotnet_fable_result }
00:01:08 verbose #1567 > >     else
00:01:08 verbose #1568 > >         inl deps =
00:01:08 verbose #1569 > >             deps
00:01:08 verbose #1570 > >             |> am'.vec_map fun dep =>
00:01:08 verbose #1571 > >                 inl dep = dep |> sm'.from_std_string
00:01:08 verbose #1572 > >                 if dep |> sm'.contains "="
00:01:08 verbose #1573 > >                 then dep
00:01:08 verbose #1574 > >                 else $'$"\\"{!dep}\\":\\"*\\""'
00:01:08 verbose #1575 > >             |> am'.from_vec
00:01:08 verbose #1576 > >             |> fun x => x : _ i32 _
00:01:08 verbose #1577 > >             |> seq.of_array'
00:01:08 verbose #1578 > >             |> sm'.concat ",\n"
00:01:08 verbose #1579 > >
00:01:08 verbose #1580 > >         inl package_json_content =
00:01:08 verbose #1581 > >             $'$"{{"'
00:01:08 verbose #1582 > >             +. $'$"  \\\"name\\\": \\\"spiral_builder_{!hash_hex}\\\","'
00:01:08 verbose #1583 > >             +. $'$"  \\\"dependencies\\\": {{"'
00:01:08 verbose #1584 > >             +. deps
00:01:08 verbose #1585 > >             +. $'$"  }},"'
00:01:08 verbose #1586 > >             +. $'$"    \\\"devDependencies\\\": {{"'
00:01:08 verbose #1587 > >             +. $'$"  }},"'
00:01:08 verbose #1588 > >             +. $'$"}}"'
00:01:08 verbose #1589 > >
00:01:08 verbose #1590 > >         inl workspace_package_json_content =
00:01:08 verbose #1591 > >             ""
00:01:08 verbose #1592 > >
00:01:08 verbose #1593 > >         inl package_json_path = package_dir </> "package.json"
00:01:08 verbose #1594 > >
00:01:08 verbose #1595 > >         inl workspace_dir = package_dir </> "../.."
00:01:08 verbose #1596 > >         inl workspace_package_json_path = workspace_dir </> "package.json"
00:01:08 verbose #1597 > >
00:01:08 verbose #1598 > >         package_json_content |> file_system.write_all_text_exists
00:01:08 verbose #1599 > > package_json_path
00:01:08 verbose #1600 > >
00:01:08 verbose #1601 > >         workspace_package_json_content |> file_system.write_all_text_exists
00:01:08 verbose #1602 > > workspace_package_json_path
00:01:08 verbose #1603 > >
00:01:08 verbose #1604 > >         inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"'
00:01:08 verbose #1605 > >         trace Debug
00:01:08 verbose #1606 > >             fun () => $'"spiral_builder.process_python"'
00:01:08 verbose #1607 > >             fun () => { new_code_path }
00:01:08 verbose #1608 > >         inl new_code = new_code_path |> file_system.read_all_text
00:01:08 verbose #1609 > >
00:01:08 verbose #1610 > >         inl main_code_header =
00:01:08 verbose #1611 > >             "# spiral_builder.process_python"
00:01:08 verbose #1612 > >         inl main_code = "# spiral_builder.process_python"
00:01:08 verbose #1613 > >
00:01:08 verbose #1614 > >         inl cached = new_code |> sm'.contains main_code_header
00:01:08 verbose #1615 > >
00:01:08 verbose #1616 > >         inl new_code =
00:01:08 verbose #1617 > >             if cached
00:01:08 verbose #1618 > >             then new_code
00:01:08 verbose #1619 > >             else
00:01:08 verbose #1620 > >                 new_code
00:01:08 verbose #1621 > >                 |> sm'.replace
00:01:08 verbose #1622 > >                     ("),)" +. !\($'"\\\";\\\".into()"'))
00:01:08 verbose #1623 > >                     "));"
00:01:08 verbose #1624 > >                 |> sm'.replace_regex
00:01:08 verbose #1625 > >                     "\\s\\sdefaultOf\\(\\);"
00:01:08 verbose #1626 > >                     " defaultOf::<()>();"
00:01:08 verbose #1627 > >
00:01:08 verbose #1628 > >         if not cached
00:01:08 verbose #1629 > >         then
00:01:08 verbose #1630 > >             $'$"{!new_code}\\n\\n{!main_code}\\n"'
00:01:08 verbose #1631 > >             |> file_system.write_all_text_exists new_code_path
00:01:08 verbose #1632 > >
00:01:08 verbose #1633 > >         inl command = $'$"python \\\"{!new_code_path}\\\""'
00:01:08 verbose #1634 > >         inl environment_variables =
00:01:08 verbose #1635 > >             ;[[
00:01:08 verbose #1636 > >                 "TRACE_LEVEL", "Verbose"
00:01:08 verbose #1637 > >             ]]
00:01:08 verbose #1638 > >         inl exit_code, run_result =
00:01:08 verbose #1639 > >             runtime.execution_options fun x => { x with
00:01:08 verbose #1640 > >                 command
00:01:08 verbose #1641 > >                 environment_variables
00:01:08 verbose #1642 > >                 working_directory = workspace_root_external |> resultm.box |>
00:01:08 verbose #1643 > > resultm.ok'
00:01:08 verbose #1644 > >             }
00:01:08 verbose #1645 > >             |> runtime.execute_with_options
00:01:08 verbose #1646 > >
00:01:08 verbose #1647 > >         inl external_command =
00:01:08 verbose #1648 > >             inl vars =
00:01:08 verbose #1649 > >                 a environment_variables
00:01:08 verbose #1650 > >                 |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string
00:01:08 verbose #1651 > >                 |> fun x => x : _ i32 _
00:01:08 verbose #1652 > >                 |> seq.of_array
00:01:08 verbose #1653 > >                 |> sm'.concat ";"
00:01:08 verbose #1654 > >             $'$"pwsh -c \'{!vars}; {!command}\'"' : string
00:01:08 verbose #1655 > >         if exit_code = 0 then
00:01:08 verbose #1656 > >             inl output =
00:01:08 verbose #1657 > >                 try
00:01:08 verbose #1658 > >                     fun () =>
00:01:08 verbose #1659 > >                         run_result
00:01:08 verbose #1660 > >                         |> sm'.split "\n"
00:01:08 verbose #1661 > >                         |> fun x => a x : _ i32 _
00:01:08 verbose #1662 > >                         |> seq.of_array
00:01:08 verbose #1663 > >                         |> sm'.concat "\n"
00:01:08 verbose #1664 > >                     fun ex =>
00:01:08 verbose #1665 > >                         trace Critical
00:01:08 verbose #1666 > >                             fun () => "spiral_builder.process_python
00:01:08 verbose #1667 > > Exception"
00:01:08 verbose #1668 > >                             fun () => { ex new_code_path external_command
00:01:08 verbose #1669 > > run_result }
00:01:08 verbose #1670 > >                         None
00:01:08 verbose #1671 > >                 |> optionm'.box
00:01:08 verbose #1672 > >                 |> optionm'.unwrap
00:01:08 verbose #1673 > >
00:01:08 verbose #1674 > >             { extension = Some extension; code = Some new_code; output = Some
00:01:08 verbose #1675 > > output }
00:01:08 verbose #1676 > >         else
00:01:08 verbose #1677 > >             trace Critical
00:01:08 verbose #1678 > >                 fun () => "spiral_builder.process_python / error"
00:01:08 verbose #1679 > >                 fun () => { exit_code run_result new_code_path external_command
00:01:08 verbose #1680 > > }
00:01:08 verbose #1681 > >             { extension = Some extension; code = None; output = None }
00:01:08 verbose #1682 > >
00:01:08 verbose #1683 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:08 verbose #1684 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:08 verbose #1685 > > │ ## cuda                                                                      │
00:01:08 verbose #1686 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 verbose #1687 > >
00:01:08 verbose #1688 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:08 verbose #1689 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:08 verbose #1690 > > │ ### process_cuda                                                             │
00:01:08 verbose #1691 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 verbose #1692 > >
00:01:08 verbose #1693 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:08 verbose #1694 > > inl process_cuda { py_path env deps } =
00:01:08 verbose #1695 > >     inl extension = "py"
00:01:08 verbose #1696 > >
00:01:08 verbose #1697 > >     inl new_code_path = py_path
00:01:08 verbose #1698 > >     inl new_code = new_code_path |> file_system.read_all_text
00:01:08 verbose #1699 > >
00:01:08 verbose #1700 > >     inl workspace_root_external = file_system.get_workspace_root_external ()
00:01:08 verbose #1701 > >     inl workspace_root = workspace_root_external |> resultm.box |>
00:01:08 verbose #1702 > > resultm.unwrap_or_else id
00:01:08 verbose #1703 > >
00:01:08 verbose #1704 > >     inl package_dir = new_code_path |> file_system.get_directory_name
00:01:08 verbose #1705 > >
00:01:08 verbose #1706 > >     inl manifest_path =
00:01:08 verbose #1707 > >         match env with
00:01:08 verbose #1708 > >         | Pip => package_dir </> "requirements.txt"
00:01:08 verbose #1709 > >         | Poetry => package_dir </> "pyproject.toml"
00:01:08 verbose #1710 > >
00:01:08 verbose #1711 > >     inl deps =
00:01:08 verbose #1712 > >         deps
00:01:08 verbose #1713 > >         |> am'.vec_map fun dep =>
00:01:08 verbose #1714 > >             inl dep = dep |> sm'.from_std_string
00:01:08 verbose #1715 > >             if dep |> sm'.contains "="
00:01:08 verbose #1716 > >             then dep
00:01:08 verbose #1717 > >             elif dep |> sm'.ends_with "]]"
00:01:08 verbose #1718 > >             then dep |> sm'.replace "[[" $'$"={{version=\'*\',features=[["' |>
00:01:08 verbose #1719 > > fun x => $'$"{!x}}}"'
00:01:08 verbose #1720 > >             else $'$"{!dep}=\'*\'"'
00:01:08 verbose #1721 > >         |> am'.from_vec
00:01:08 verbose #1722 > >         |> fun x => x : _ i32 _
00:01:08 verbose #1723 > >         |> seq.of_array'
00:01:08 verbose #1724 > >         |> sm'.concat "\n"
00:01:08 verbose #1725 > >
00:01:08 verbose #1726 > >     inl exit_code, run_result =
00:01:08 verbose #1727 > >         if deps = ""
00:01:08 verbose #1728 > >         then 0, ""
00:01:08 verbose #1729 > >         else
00:01:08 verbose #1730 > >             inl manifest =
00:01:08 verbose #1731 > >                 match env with
00:01:08 verbose #1732 > >                 | Pip =>
00:01:08 verbose #1733 > >                     deps
00:01:08 verbose #1734 > >                 | Poetry =>
00:01:08 verbose #1735 > >                     $'$"[[tool.poetry]]"'
00:01:08 verbose #1736 > >                     +#. $'$"name = \\\"test\\\""'
00:01:08 verbose #1737 > >                     +#. $'$"version = \\\"0.0.1\\\""'
00:01:08 verbose #1738 > >                     +#. $'$"description = \\\"\\\""'
00:01:08 verbose #1739 > >                     +#. $'$"authors = [[]]"'
00:01:08 verbose #1740 > >                     +#. $'$""'
00:01:08 verbose #1741 > >                     +#. $'$"[[tool.poetry.dependencies]]"'
00:01:08 verbose #1742 > >                     +#. $'$"python=\\\"~3.12\\\""'
00:01:08 verbose #1743 > >                     +#. $'$"{!deps}"'
00:01:08 verbose #1744 > >                     +#. $'$""'
00:01:08 verbose #1745 > >                     +#. $'$"[[build-system]]"'
00:01:08 verbose #1746 > >                     +#. $'$"requires = [[\\\"poetry-core\\\"]]"'
00:01:08 verbose #1747 > >                     +#. $'$"build-backend = \\\"poetry.core.masonry.api\\\""'
00:01:08 verbose #1748 > >
00:01:08 verbose #1749 > >             manifest |> file_system.write_all_text_exists manifest_path
00:01:08 verbose #1750 > >
00:01:08 verbose #1751 > >             runtime.execution_options fun x => { x with
00:01:08 verbose #1752 > >                 command =
00:01:08 verbose #1753 > >                     match env with
00:01:08 verbose #1754 > >                     | Pip => $'$"pip install -r requirements.txt"'
00:01:08 verbose #1755 > >                     | Poetry => $'$"poetry install"'
00:01:08 verbose #1756 > >                 working_directory = package_dir |> optionm'.some'
00:01:08 verbose #1757 > >             }
00:01:08 verbose #1758 > >             |> runtime.execute_with_options
00:01:08 verbose #1759 > >
00:01:08 verbose #1760 > >     if exit_code <>. 0 then
00:01:08 verbose #1761 > >         trace Critical
00:01:08 verbose #1762 > >             fun () => "spiral_builder.process_cuda / env install error"
00:01:08 verbose #1763 > >             fun () => { env exit_code run_result new_code_path }
00:01:08 verbose #1764 > >         { extension = Some extension; code = None; output = None }
00:01:08 verbose #1765 > >     else
00:01:08 verbose #1766 > >         inl command =
00:01:08 verbose #1767 > >             match env with
00:01:08 verbose #1768 > >             | Pip => $'$"python \\\"{!new_code_path}\\\""'
00:01:08 verbose #1769 > >             | Poetry => $'$"poetry run python \\\"{!new_code_path}\\\""'
00:01:08 verbose #1770 > >         inl environment_variables =
00:01:08 verbose #1771 > >             ;[[
00:01:08 verbose #1772 > >                 "TRACE_LEVEL", "Verbose"
00:01:08 verbose #1773 > >             ]]
00:01:08 verbose #1774 > >         inl exit_code, run_result =
00:01:08 verbose #1775 > >             runtime.execution_options fun x => { x with
00:01:08 verbose #1776 > >                 command
00:01:08 verbose #1777 > >                 environment_variables
00:01:08 verbose #1778 > >                 working_directory = package_dir |> optionm'.some'
00:01:08 verbose #1779 > >             }
00:01:08 verbose #1780 > >             |> runtime.execute_with_options
00:01:08 verbose #1781 > >
00:01:08 verbose #1782 > >         inl external_command =
00:01:08 verbose #1783 > >             inl vars =
00:01:08 verbose #1784 > >                 a environment_variables
00:01:08 verbose #1785 > >                 |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string
00:01:08 verbose #1786 > >                 |> fun x => x : _ i32 _
00:01:08 verbose #1787 > >                 |> seq.of_array
00:01:08 verbose #1788 > >                 |> sm'.concat ";"
00:01:08 verbose #1789 > >             $'$"pwsh -c \'{!vars}; {!command}\'"' : string
00:01:08 verbose #1790 > >         if exit_code = 0
00:01:08 verbose #1791 > >             || (run_result |> sm'.contains
00:01:08 verbose #1792 > > "cupy_backends.cuda.api.runtime.CUDARuntimeError: cudaErrorInsufficientDriver")
00:01:08 verbose #1793 > > then
00:01:08 verbose #1794 > >             inl output =
00:01:08 verbose #1795 > >                 try
00:01:08 verbose #1796 > >                     fun () =>
00:01:08 verbose #1797 > >                         run_result
00:01:08 verbose #1798 > >                         |> sm'.split "\n"
00:01:08 verbose #1799 > >                         |> fun x => a x : _ i32 _
00:01:08 verbose #1800 > >                         |> seq.of_array
00:01:08 verbose #1801 > >                         |> sm'.concat "\n"
00:01:08 verbose #1802 > >                     fun ex =>
00:01:08 verbose #1803 > >                         trace Critical
00:01:08 verbose #1804 > >                             fun () => "spiral_builder.process_cuda / Exception"
00:01:08 verbose #1805 > >                             fun () => { ex run_result new_code_path
00:01:08 verbose #1806 > > external_command }
00:01:08 verbose #1807 > >                         None
00:01:08 verbose #1808 > >                 |> optionm'.box
00:01:08 verbose #1809 > >                 |> optionm'.unwrap
00:01:08 verbose #1810 > >
00:01:08 verbose #1811 > >             { extension = Some extension; code = Some new_code; output = Some
00:01:08 verbose #1812 > > output }
00:01:08 verbose #1813 > >         else
00:01:08 verbose #1814 > >             trace Critical
00:01:08 verbose #1815 > >                 fun () => "spiral_builder.process_cuda / error"
00:01:08 verbose #1816 > >                 fun () => { exit_code run_result new_code_path external_command
00:01:08 verbose #1817 > > }
00:01:08 verbose #1818 > >             { extension = Some extension; code = None; output = None }
00:01:08 verbose #1819 > >
00:01:08 verbose #1820 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:08 verbose #1821 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:08 verbose #1822 > > │ ## fsharp                                                                    │
00:01:08 verbose #1823 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 verbose #1824 > >
00:01:08 verbose #1825 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:08 verbose #1826 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:08 verbose #1827 > > │ ### process_fsharp                                                           │
00:01:08 verbose #1828 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 verbose #1829 > >
00:01:08 verbose #1830 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:08 verbose #1831 > > inl process_fsharp { spi_path } =
00:01:08 verbose #1832 > >     inl extension = "fsx"
00:01:08 verbose #1833 > >
00:01:08 verbose #1834 > >     inl new_code_path = spi_path
00:01:08 verbose #1835 > >     inl new_code = new_code_path |> file_system.read_all_text
00:01:08 verbose #1836 > >
00:01:08 verbose #1837 > >     inl workspace_root_external = file_system.get_workspace_root_external ()
00:01:08 verbose #1838 > >     inl workspace_root = workspace_root_external |> resultm.box |>
00:01:08 verbose #1839 > > resultm.unwrap_or_else id
00:01:08 verbose #1840 > >
00:01:08 verbose #1841 > >     inl supervisor_path = workspace_root </>
00:01:08 verbose #1842 > > $"apps/spiral/dist/Supervisor!(platform.get_executable_suffix ())"
00:01:08 verbose #1843 > >     inl code_dir = new_code_path |> file_system.get_directory_name
00:01:08 verbose #1844 > >     inl file_name = new_code_path |> file_system.get_file_name_without_extension
00:01:08 verbose #1845 > >     inl output_path = code_dir </> $'$"{!file_name}.{!extension}"'
00:01:08 verbose #1846 > >     inl command = $'$"{!supervisor_path} --build-file \\\"{!new_code_path}\\\"
00:01:08 verbose #1847 > > \\\"{!output_path}\\\""'
00:01:08 verbose #1848 > >     inl environment_variables =
00:01:08 verbose #1849 > >         ;[[
00:01:08 verbose #1850 > >             "TRACE_LEVEL", "Verbose"
00:01:08 verbose #1851 > >         ]]
00:01:08 verbose #1852 > >     inl exit_code, run_result =
00:01:08 verbose #1853 > >         runtime.execution_options fun x => { x with
00:01:08 verbose #1854 > >             command
00:01:08 verbose #1855 > >             environment_variables
00:01:08 verbose #1856 > >             working_directory = workspace_root_external |> resultm.box |>
00:01:08 verbose #1857 > > resultm.ok'
00:01:08 verbose #1858 > >         }
00:01:08 verbose #1859 > >         |> runtime.execute_with_options
00:01:08 verbose #1860 > >
00:01:08 verbose #1861 > >     inl external_command =
00:01:08 verbose #1862 > >         inl vars =
00:01:08 verbose #1863 > >             a environment_variables
00:01:08 verbose #1864 > >             |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string
00:01:08 verbose #1865 > >             |> fun x => x : _ i32 _
00:01:08 verbose #1866 > >             |> seq.of_array
00:01:08 verbose #1867 > >             |> sm'.concat ";"
00:01:08 verbose #1868 > >         $'$"pwsh -c \'{!vars}; {!command}\'"' : string
00:01:08 verbose #1869 > >     if exit_code = 0 then
00:01:08 verbose #1870 > >         inl output =
00:01:08 verbose #1871 > >             try
00:01:08 verbose #1872 > >                 fun () =>
00:01:08 verbose #1873 > >                     run_result
00:01:08 verbose #1874 > >                     |> sm'.split "\n"
00:01:08 verbose #1875 > >                     |> fun x => a x : _ i32 _
00:01:08 verbose #1876 > >                     |> seq.of_array
00:01:08 verbose #1877 > >                     |> sm'.concat "\n"
00:01:08 verbose #1878 > >                 fun ex =>
00:01:08 verbose #1879 > >                     trace Critical
00:01:08 verbose #1880 > >                         fun () => "spiral_builder.process_fsharp / Exception"
00:01:08 verbose #1881 > >                         fun () => { ex run_result new_code_path external_command
00:01:08 verbose #1882 > > }
00:01:08 verbose #1883 > >                     None
00:01:08 verbose #1884 > >             |> optionm'.box
00:01:08 verbose #1885 > >             |> optionm'.unwrap
00:01:08 verbose #1886 > >
00:01:08 verbose #1887 > >         { extension = Some extension; code = Some new_code; output = Some output
00:01:08 verbose #1888 > > }
00:01:08 verbose #1889 > >     else
00:01:08 verbose #1890 > >         trace Critical
00:01:08 verbose #1891 > >             fun () => "spiral_builder.process_fsharp / error"
00:01:08 verbose #1892 > >             fun () => { exit_code run_result new_code_path external_command }
00:01:08 verbose #1893 > >         { extension = Some extension; code = None; output = None }
00:01:08 verbose #1894 > >
00:01:08 verbose #1895 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:08 verbose #1896 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:08 verbose #1897 > > │ ## run                                                                       │
00:01:08 verbose #1898 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:08 verbose #1899 > >
00:01:08 verbose #1900 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:08 verbose #1901 > > let rec run trace_level (matches : runtime.arg_matches) : async.future_pin
00:01:08 verbose #1902 > > (resultm.result' string string) =
00:01:08 verbose #1903 > >     fun () =>
00:01:08 verbose #1904 > >         match matches |> runtime.matches_subcommand |> optionm'.unbox with
00:01:08 verbose #1905 > >         | Some (subcommand, arg_matches)
00:01:08 verbose #1906 > >                 when (subcommand |> sm'.from_std_string) = (get_args () .cuda |>
00:01:08 verbose #1907 > > fst) =>
00:01:08 verbose #1908 > >
00:01:08 verbose #1909 > >             inl py_path =
00:01:08 verbose #1910 > >                 arg_matches
00:01:08 verbose #1911 > >                 |> runtime.matches_get_one ((get_args () .cuda |> snd).py_path
00:01:08 verbose #1912 > > |> fst)
00:01:08 verbose #1913 > >                 |> optionm'.unbox
00:01:08 verbose #1914 > >                 |> optionm.value
00:01:08 verbose #1915 > >                 |> sm'.from_std_string
00:01:08 verbose #1916 > >
00:01:08 verbose #1917 > >             inl env =
00:01:08 verbose #1918 > >                 arg_matches
00:01:08 verbose #1919 > >                 |> runtime.matches_get_one ((get_args () .cuda |> snd).env |>
00:01:08 verbose #1920 > > fst)
00:01:08 verbose #1921 > >                 |> optionm'.unbox
00:01:08 verbose #1922 > >                 |> optionm.map (
00:01:08 verbose #1923 > >                     sm'.from_std_string
00:01:08 verbose #1924 > >                     >> reflection.union_try_pick
00:01:08 verbose #1925 > >                 )
00:01:08 verbose #1926 > >                 |> optionm'.flatten
00:01:08 verbose #1927 > >                 |> optionm'.default_value Pip
00:01:08 verbose #1928 > >
00:01:08 verbose #1929 > >             inl deps : am'.vec sm'.std_string =
00:01:08 verbose #1930 > >                 arg_matches
00:01:08 verbose #1931 > >                 |> runtime.matches_get_many ((get_args () .cuda |> snd).deps |>
00:01:08 verbose #1932 > > fst)
00:01:08 verbose #1933 > >                 |> optionm'.unbox
00:01:08 verbose #1934 > >                 |> optionm'.default_value (;[[]] |> am'.to_vec)
00:01:08 verbose #1935 > >
00:01:08 verbose #1936 > >             inl command_result =
00:01:08 verbose #1937 > >                 process_cuda { py_path env deps }
00:01:08 verbose #1938 > >                 |> fun { extension code output } =>
00:01:08 verbose #1939 > >                     ;[[
00:01:08 verbose #1940 > >                         "extension", extension |> optionm'.default_value ""
00:01:08 verbose #1941 > >                         "code", code |> optionm'.default_value ""
00:01:08 verbose #1942 > >                         "output", output |> optionm'.default_value ""
00:01:08 verbose #1943 > >                     ]]
00:01:08 verbose #1944 > >
00:01:08 verbose #1945 > >             ;[[
00:01:08 verbose #1946 > >                 "command_result",
00:01:08 verbose #1947 > >                 command_result
00:01:08 verbose #1948 > >                 |> am'.to_vec
00:01:08 verbose #1949 > >                 |> am'.vec_map' fun k, v =>
00:01:08 verbose #1950 > >                     new_pair (sm'.to_std_string k) (sm'.to_std_string v)
00:01:08 verbose #1951 > >                 |> mapm.b_tree_map_from_vec_pairs
00:01:08 verbose #1952 > >                 |> sm'.serialize
00:01:08 verbose #1953 > >                 |> resultm.unwrap'
00:01:08 verbose #1954 > >                 |> sm'.from_std_string
00:01:08 verbose #1955 > >             ]]
00:01:08 verbose #1956 > >
00:01:08 verbose #1957 > >         | Some (subcommand, arg_matches)
00:01:08 verbose #1958 > >                 when (subcommand |> sm'.from_std_string) = (get_args () .fable
00:01:08 verbose #1959 > > |> fst) =>
00:01:08 verbose #1960 > >
00:01:08 verbose #1961 > >             inl fs_path =
00:01:08 verbose #1962 > >                 arg_matches
00:01:08 verbose #1963 > >                 |> runtime.matches_get_one ((get_args () .fable |> snd).fs_path
00:01:08 verbose #1964 > > |> fst)
00:01:08 verbose #1965 > >                 |> optionm'.unbox
00:01:08 verbose #1966 > >                 |> optionm.value
00:01:08 verbose #1967 > >                 |> sm'.from_std_string
00:01:08 verbose #1968 > >
00:01:08 verbose #1969 > >             inl command =
00:01:08 verbose #1970 > >                 arg_matches
00:01:08 verbose #1971 > >                 |> runtime.matches_get_one ((get_args () .fable |> snd).command
00:01:08 verbose #1972 > > |> fst)
00:01:08 verbose #1973 > >                 |> optionm'.unbox
00:01:08 verbose #1974 > >                 |> optionm.map sm'.from_std_string
00:01:08 verbose #1975 > >
00:01:08 verbose #1976 > >             inl command_result =
00:01:08 verbose #1977 > >                 match command with
00:01:08 verbose #1978 > >                 | Some command =>
00:01:08 verbose #1979 > >                     get_command ()
00:01:08 verbose #1980 > >                     |> runtime.command_get_matches_from (
00:01:08 verbose #1981 > >                         $'$"_ {!command} --fs-path \\\"{!fs_path}\\\""' |>
00:01:08 verbose #1982 > > runtime.split_args |> resultm.get
00:01:08 verbose #1983 > >                     )
00:01:08 verbose #1984 > >                     |> run trace_level
00:01:08 verbose #1985 > >                     |> async.await
00:01:08 verbose #1986 > >                     |> resultm.unwrap'
00:01:08 verbose #1987 > >                 | None => "{}"
00:01:08 verbose #1988 > >
00:01:08 verbose #1989 > >             ;[[
00:01:08 verbose #1990 > >                 "command_result",
00:01:08 verbose #1991 > >                 command_result
00:01:08 verbose #1992 > >             ]]
00:01:08 verbose #1993 > >
00:01:08 verbose #1994 > >         | Some (subcommand, arg_matches)
00:01:08 verbose #1995 > >             when (subcommand |> sm'.from_std_string) = (get_args () .dib |> fst)
00:01:08 verbose #1996 > > =>
00:01:08 verbose #1997 > >
00:01:08 verbose #1998 > >             inl path =
00:01:08 verbose #1999 > >                 arg_matches
00:01:08 verbose #2000 > >                 |> runtime.matches_get_one ((get_args () .dib |> snd).path |>
00:01:08 verbose #2001 > > fst)
00:01:08 verbose #2002 > >                 |> optionm'.map'' (
00:01:08 verbose #2003 > >                     sm'.from_std_string
00:01:08 verbose #2004 > >                     >> file_system.absolute_path
00:01:08 verbose #2005 > >                 )
00:01:08 verbose #2006 > >                 |> optionm'.unwrap
00:01:08 verbose #2007 > >
00:01:08 verbose #2008 > >             inl retries =
00:01:08 verbose #2009 > >                 arg_matches
00:01:08 verbose #2010 > >                 |> runtime.matches_get_one ((get_args () .dib |> snd).retries |>
00:01:08 verbose #2011 > > fst)
00:01:08 verbose #2012 > >                 |> optionm'.default_value' 1u8
00:01:08 verbose #2013 > >
00:01:08 verbose #2014 > >             inl working_directory =
00:01:08 verbose #2015 > >                 arg_matches
00:01:08 verbose #2016 > >                 |> runtime.matches_get_one ((get_args () .dib |>
00:01:08 verbose #2017 > > snd).working_directory |> fst)
00:01:08 verbose #2018 > >                 |> optionm'.unbox
00:01:08 verbose #2019 > >
00:01:08 verbose #2020 > >             process_dib { path retries working_directory }
00:01:08 verbose #2021 > >
00:01:08 verbose #2022 > >         | matches =>
00:01:08 verbose #2023 > >             match matches with
00:01:08 verbose #2024 > >             | Some (subcommand, arg_matches)
00:01:08 verbose #2025 > >                     when (subcommand |> sm'.from_std_string) = (get_args ()
00:01:08 verbose #2026 > > .rust |> fst) =>
00:01:08 verbose #2027 > >
00:01:08 verbose #2028 > >                 inl fs_path =
00:01:08 verbose #2029 > >                     arg_matches
00:01:08 verbose #2030 > >                     |> runtime.matches_get_one ((get_args () .rust |>
00:01:08 verbose #2031 > > snd).fs_path |> fst)
00:01:08 verbose #2032 > >                     |> optionm'.unbox
00:01:08 verbose #2033 > >                     |> optionm.value
00:01:08 verbose #2034 > >                     |> sm'.from_std_string
00:01:08 verbose #2035 > >
00:01:08 verbose #2036 > >                 inl deps : am'.vec sm'.std_string =
00:01:08 verbose #2037 > >                     arg_matches
00:01:08 verbose #2038 > >                     |> runtime.matches_get_many ((get_args () .rust |> snd).deps
00:01:08 verbose #2039 > > |> fst)
00:01:08 verbose #2040 > >                     |> optionm'.unbox
00:01:08 verbose #2041 > >                     |> optionm'.default_value (;[[]] |> am'.to_vec)
00:01:08 verbose #2042 > >
00:01:08 verbose #2043 > >                 inl wasm =
00:01:08 verbose #2044 > >                     arg_matches
00:01:08 verbose #2045 > >                     |> runtime.matches_get_one ((get_args () .rust |> snd).wasm
00:01:08 verbose #2046 > > |> fst)
00:01:08 verbose #2047 > >                     |> optionm'.unbox
00:01:08 verbose #2048 > >                     |> optionm.map sm'.from_std_string
00:01:08 verbose #2049 > >
00:01:08 verbose #2050 > >                 inl contract =
00:01:08 verbose #2051 > >                     arg_matches
00:01:08 verbose #2052 > >                     |> runtime.matches_get_one ((get_args () .rust |>
00:01:08 verbose #2053 > > snd).contract |> fst)
00:01:08 verbose #2054 > >                     |> optionm'.unbox
00:01:08 verbose #2055 > >                     |> optionm.map sm'.from_std_string
00:01:08 verbose #2056 > >
00:01:08 verbose #2057 > >                 inl runtime =
00:01:08 verbose #2058 > >                     match wasm, contract with
00:01:08 verbose #2059 > >                     | Some wasm, _ => Wasm wasm |> Some
00:01:08 verbose #2060 > >                     | _, Some contract => Contract contract |> Some
00:01:08 verbose #2061 > >                     | _ => None
00:01:08 verbose #2062 > >
00:01:08 verbose #2063 > >                 process_rust { fs_path deps trace_level runtime }
00:01:08 verbose #2064 > >
00:01:08 verbose #2065 > >             | Some (subcommand, arg_matches)
00:01:08 verbose #2066 > >                     when (subcommand |> sm'.from_std_string) = (get_args ()
00:01:08 verbose #2067 > > .typescript |> fst) =>
00:01:08 verbose #2068 > >
00:01:08 verbose #2069 > >                 inl fs_path =
00:01:08 verbose #2070 > >                     arg_matches
00:01:08 verbose #2071 > >                     |> runtime.matches_get_one ((get_args () .typescript |>
00:01:08 verbose #2072 > > snd).fs_path |> fst)
00:01:08 verbose #2073 > >                     |> optionm'.unbox
00:01:08 verbose #2074 > >                     |> optionm.value
00:01:08 verbose #2075 > >                     |> sm'.from_std_string
00:01:08 verbose #2076 > >
00:01:08 verbose #2077 > >                 inl deps : am'.vec sm'.std_string =
00:01:08 verbose #2078 > >                     arg_matches
00:01:08 verbose #2079 > >                     |> runtime.matches_get_many ((get_args () .typescript |>
00:01:08 verbose #2080 > > snd).deps |> fst)
00:01:08 verbose #2081 > >                     |> optionm'.unbox
00:01:08 verbose #2082 > >                     |> optionm'.default_value (;[[]] |> am'.to_vec)
00:01:08 verbose #2083 > >
00:01:08 verbose #2084 > >                 process_typescript { fs_path deps trace_level }
00:01:08 verbose #2085 > >
00:01:08 verbose #2086 > >             | Some (subcommand, arg_matches)
00:01:08 verbose #2087 > >                     when (subcommand |> sm'.from_std_string) = (get_args ()
00:01:08 verbose #2088 > > .python |> fst) =>
00:01:08 verbose #2089 > >                 inl fs_path =
00:01:08 verbose #2090 > >                     arg_matches
00:01:08 verbose #2091 > >                     |> runtime.matches_get_one ((get_args () .python |>
00:01:08 verbose #2092 > > snd).fs_path |> fst)
00:01:08 verbose #2093 > >                     |> optionm'.unbox
00:01:08 verbose #2094 > >                     |> optionm.value
00:01:08 verbose #2095 > >                     |> sm'.from_std_string
00:01:08 verbose #2096 > >
00:01:08 verbose #2097 > >                 inl deps : am'.vec sm'.std_string =
00:01:08 verbose #2098 > >                     arg_matches
00:01:08 verbose #2099 > >                     |> runtime.matches_get_many ((get_args () .python |>
00:01:08 verbose #2100 > > snd).deps |> fst)
00:01:08 verbose #2101 > >                     |> optionm'.unbox
00:01:08 verbose #2102 > >                     |> optionm'.default_value (;[[]] |> am'.to_vec)
00:01:08 verbose #2103 > >
00:01:08 verbose #2104 > >                 process_python { fs_path deps trace_level }
00:01:08 verbose #2105 > >
00:01:08 verbose #2106 > >             | Some (subcommand, arg_matches) =>
00:01:08 verbose #2107 > >                 trace Debug
00:01:08 verbose #2108 > >                     fun () => $'"spiral_builder.run / invalid subcommand"'
00:01:08 verbose #2109 > >                     fun () => { subcommand arg_matches }
00:01:08 verbose #2110 > >
00:01:08 verbose #2111 > >                 { extension = None; code = None; output = None }
00:01:08 verbose #2112 > >             | _ =>
00:01:08 verbose #2113 > >                 { extension = None; code = None; output = None }
00:01:08 verbose #2114 > >             |> fun { extension code output } =>
00:01:08 verbose #2115 > >                 ;[[
00:01:08 verbose #2116 > >                     "extension", extension |> optionm'.default_value ""
00:01:08 verbose #2117 > >                     "code", code |> optionm'.default_value ""
00:01:08 verbose #2118 > >                     "output", output |> optionm'.default_value ""
00:01:08 verbose #2119 > >                 ]]
00:01:08 verbose #2120 > >         |> am'.to_vec
00:01:08 verbose #2121 > >         |> am'.vec_map' fun k, v =>
00:01:08 verbose #2122 > >             new_pair (sm'.to_std_string k) (sm'.to_std_string v)
00:01:08 verbose #2123 > >         |> mapm.b_tree_map_from_vec_pairs
00:01:08 verbose #2124 > >         |> sm'.serialize
00:01:08 verbose #2125 > >         |> resultm.map_error' (sm'.format' >> sm'.from_std_string)
00:01:08 verbose #2126 > >         |> resultm.map' sm'.from_std_string
00:01:08 verbose #2127 > >     |> async.new_future_move
00:01:09 verbose #2128 > >
00:01:09 verbose #2129 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:09 verbose #2130 > > //// test
00:01:09 verbose #2131 > > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand
00:01:09 verbose #2132 > > rayon regex serde_json sha2 tokio[['rt-multi-thread']] tokio-stream
00:01:09 verbose #2133 > >
00:01:09 verbose #2134 > > inl file_name = "main.fs"
00:01:09 verbose #2135 > > inl code = "3 - 6 |> System.Console.WriteLine\n"
00:01:09 verbose #2136 > >
00:01:09 verbose #2137 > > inl temp_dir, disposable =
00:01:09 verbose #2138 > >     (file_name, code)
00:01:09 verbose #2139 > >     |> sm'.format_debug
00:01:09 verbose #2140 > >     |> crypto.hash_text
00:01:09 verbose #2141 > >     |> file_system.create_temp_dir'
00:01:09 verbose #2142 > > inl fs_path = temp_dir </> file_name
00:01:09 verbose #2143 > >
00:01:09 verbose #2144 > > code |> file_system.write_all_text fs_path
00:01:09 verbose #2145 > >
00:01:09 verbose #2146 > > get_command ()
00:01:09 verbose #2147 > > |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c
00:01:09 verbose #2148 > > \\\"rust -d regex=\'*\'\\\""' |> runtime.split_args |> resultm.get)
00:01:09 verbose #2149 > > |> run Verbose
00:01:09 verbose #2150 > > |> async.block_on
00:01:09 verbose #2151 > > |> resultm.unwrap'
00:01:09 verbose #2152 > > |> sm'.deserialize
00:01:09 verbose #2153 > > |> resultm.unwrap'
00:01:09 verbose #2154 > > |> mapm.get ("command_result" |> sm'.to_std_string)
00:01:09 verbose #2155 > > |> optionm'.unwrap
00:01:09 verbose #2156 > > |> sm'.from_std_string
00:01:09 verbose #2157 > > |> sm'.deserialize
00:01:09 verbose #2158 > > |> resultm.unwrap'
00:01:09 verbose #2159 > > |> fun result =>
00:01:09 verbose #2160 > >     result
00:01:09 verbose #2161 > >     |> mapm.get ("extension" |> sm'.to_std_string)
00:01:09 verbose #2162 > >     |> optionm'.unwrap
00:01:09 verbose #2163 > >     |> sm'.from_std_string
00:01:09 verbose #2164 > >     |> _assert_eq "rs"
00:01:09 verbose #2165 > >     result
00:01:09 verbose #2166 > >     |> mapm.get ("output" |> sm'.to_std_string)
00:01:09 verbose #2167 > >     |> optionm'.unwrap
00:01:09 verbose #2168 > >     |> sm'.from_std_string
00:01:09 verbose #2169 > >     |> _assert_eq "-3"
00:01:09 verbose #2170 > >
00:01:09 verbose #2171 > > disposable |> use |> ignore
00:02:03 verbose #2172 > >
00:02:03 verbose #2173 > > ╭─[ 54.77s - return value ]────────────────────────────────────────────────────╮
00:02:03 verbose #2174 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir =                   │
00:02:03 verbose #2175 > > │ /tmp/!create_temp_path_/spiral_builder_7dec2b5b7d50c4297637cd2f555fffdabf6a2 │
00:02:03 verbose #2176 > > │ d717858f05e37cfbe5f28747b3f/c6422374-71e4-07d4-0ba4-c3084b24fbba }           │
00:02:03 verbose #2177 > > │ 00:00:00 verbose #2 file_system.create_dir / { dir =                   │
00:02:03 verbose #2178 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pac │
00:02:03 verbose #2179 > > │ kages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe9ebb1e  │
00:02:03 verbose #2180 > > │ }                                                                            │
00:02:03 verbose #2181 > > │ 00:00:00 verbose #3 file_system.create_dir / { dir =                   │
00:02:03 verbose #2182 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pac │
00:02:03 verbose #2183 > > │ kages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe9ebb1e/ │
00:02:03 verbose #2184 > > │ fable_modules }                                                              │
00:02:03 verbose #2185 > > │ 00:00:00   debug #4 runtime.execute_with_options / { file_name =       │
00:02:03 verbose #2186 > > │ dotnet; arguments = [                                                        │
00:02:03 verbose #2187 > > │     "fable",                                                                 │
00:02:03 verbose #2188 > > │                                                                              │
00:02:03 verbose #2189 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:02:03 verbose #2190 > > │ ckages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe9ebb1e │
00:02:03 verbose #2191 > > │ /spiral_builder.fsproj",                                                     │
00:02:03 verbose #2192 > > │     "--optimize",                                                            │
00:02:03 verbose #2193 > > │     "--lang",                                                                │
00:02:03 verbose #2194 > > │     "rs",                                                                    │
00:02:03 verbose #2195 > > │     "--extension",                                                           │
00:02:03 verbose #2196 > > │     ".rs",                                                                   │
00:02:03 verbose #2197 > > │     "--outDir",                                                              │
00:02:03 verbose #2198 > > │                                                                              │
00:02:03 verbose #2199 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:02:03 verbose #2200 > > │ ckages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe9ebb1e │
00:02:03 verbose #2201 > > │ ",                                                                           │
00:02:03 verbose #2202 > > │     "--define",                                                              │
00:02:03 verbose #2203 > > │     "_LINUX",                                                                │
00:02:03 verbose #2204 > > │ ]; options = { command = dotnet fable                                        │
00:02:03 verbose #2205 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:02:03 verbose #2206 > > │ ckages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe9ebb1e │
00:02:03 verbose #2207 > > │ /spiral_builder.fsproj" --optimize --lang rs --extension .rs --outDir        │
00:02:03 verbose #2208 > > │ "/home/runner/wor...9ebb1e/spiral_builder.rs; cleanup =                      │
00:02:03 verbose #2209 > > │ UH4_1("/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_buil │
00:02:03 verbose #2210 > > │ der/packages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe │
00:02:03 verbose #2211 > > │ 9ebb1e/../../../target/debug/spiral_builder_f58a8f60b65e9bacc8229b6e2ae18dba │
00:02:03 verbose #2212 > > │ 8f9dc103c5ce2ad7e4d7d392fe9ebb1e.d", true,                                   │
00:02:03 verbose #2213 > > │ UH4_1("/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_buil │
00:02:03 verbose #2214 > > │ der/packages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe │
00:02:03 verbose #2215 > > │ 9ebb1e/../../../target/debug/spiral_builder_f58a8f60b65e9bacc8229b6e2ae18dba │
00:02:03 verbose #2216 > > │ 8f9dc103c5ce2ad7e4d7d392fe9ebb1e.exe", false,                                │
00:02:03 verbose #2217 > > │ UH4_1("/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_buil │
00:02:03 verbose #2218 > > │ der/packages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe │
00:02:03 verbose #2219 > > │ 9ebb1e/../../../target/debug/spiral_builder_f58a8f60b65e9bacc8229b6e2ae18dba │
00:02:03 verbose #2220 > > │ 8f9dc103c5ce2ad7e4d7d392fe9ebb1e.pdb", false,                                │
00:02:03 verbose #2221 > > │ UH4_1("/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_buil │
00:02:03 verbose #2222 > > │ der/packages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe │
00:02:03 verbose #2223 > > │ 9ebb1e/../../../target/debug/spiral_builder_f58a8f60b65e9bacc8229b6e2ae18dba │
00:02:03 verbose #2224 > > │ 8f9dc103c5ce2ad7e4d7d392fe9ebb1e.wasm", false,                               │
00:02:03 verbose #2225 > > │ UH4_1("/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_buil │
00:02:03 verbose #2226 > > │ der/packages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe │
00:02:03 verbose #2227 > > │ 9ebb1e/../../../target/debug/spiral_builder_f58a8f60b65e9bacc8229b6e2ae18dba │
00:02:03 verbose #2228 > > │ 8f9dc103c5ce2ad7e4d7d392fe9ebb1e", true, UH4_0))))) }                        │
00:02:03 verbose #2229 > > │ __assert_eq / actual: "rs" / expected: "rs"                                  │
00:02:03 verbose #2230 > > │ __assert_eq / actual: "-3" / expected: "-3"                                  │
00:02:03 verbose #2231 > > │                                                                              │
00:02:03 verbose #2232 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:03 verbose #2233 > >
00:02:03 verbose #2234 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:03 verbose #2235 > > //// test
00:02:03 verbose #2236 > > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand
00:02:03 verbose #2237 > > rayon regex serde_json sha2 tokio[['rt-multi-thread']] tokio-stream
00:02:03 verbose #2238 > >
00:02:03 verbose #2239 > > inl file_name = "main.fs"
00:02:03 verbose #2240 > > inl code = "3 - 6 |> System.Console.WriteLine\n"
00:02:03 verbose #2241 > >
00:02:03 verbose #2242 > > inl temp_dir, disposable =
00:02:03 verbose #2243 > >     (file_name, code)
00:02:03 verbose #2244 > >     |> sm'.format_debug
00:02:03 verbose #2245 > >     |> crypto.hash_text
00:02:03 verbose #2246 > >     |> file_system.create_temp_dir'
00:02:03 verbose #2247 > > inl fs_path = temp_dir </> file_name
00:02:03 verbose #2248 > >
00:02:03 verbose #2249 > > code |> file_system.write_all_text fs_path
00:02:03 verbose #2250 > >
00:02:03 verbose #2251 > > get_command ()
00:02:03 verbose #2252 > > |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c
00:02:03 verbose #2253 > > \\\"typescript\\\""' |> runtime.split_args |> resultm.get)
00:02:03 verbose #2254 > > |> run Verbose
00:02:03 verbose #2255 > > |> async.block_on
00:02:03 verbose #2256 > > |> resultm.unwrap'
00:02:03 verbose #2257 > > |> sm'.deserialize
00:02:03 verbose #2258 > > |> resultm.unwrap'
00:02:03 verbose #2259 > > |> mapm.get ("command_result" |> sm'.to_std_string)
00:02:03 verbose #2260 > > |> optionm'.unwrap
00:02:03 verbose #2261 > > |> sm'.from_std_string
00:02:03 verbose #2262 > > |> sm'.deserialize
00:02:03 verbose #2263 > > |> resultm.unwrap'
00:02:03 verbose #2264 > > |> fun result =>
00:02:03 verbose #2265 > >     result
00:02:03 verbose #2266 > >     |> mapm.get ("extension" |> sm'.to_std_string)
00:02:03 verbose #2267 > >     |> optionm'.unwrap
00:02:03 verbose #2268 > >     |> sm'.from_std_string
00:02:03 verbose #2269 > >     |> _assert_eq "ts"
00:02:03 verbose #2270 > >     result
00:02:03 verbose #2271 > >     |> mapm.get ("output" |> sm'.to_std_string)
00:02:03 verbose #2272 > >     |> optionm'.unwrap
00:02:03 verbose #2273 > >     |> sm'.from_std_string
00:02:03 verbose #2274 > >     |> _assert_eq "-3"
00:02:03 verbose #2275 > >
00:02:03 verbose #2276 > > disposable |> use |> ignore
00:02:45 verbose #2277 > >
00:02:45 verbose #2278 > > ╭─[ 41.89s - return value ]────────────────────────────────────────────────────╮
00:02:45 verbose #2279 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir =                   │
00:02:45 verbose #2280 > > │ /tmp/!create_temp_path_/spiral_builder_2c5443a21ef42014009c2a40842f5b069d5df │
00:02:45 verbose #2281 > > │ 7eb87f983ba7a395e015d123dd6/c6422374-71e4-07d4-0ba4-c3084b24fbba }           │
00:02:45 verbose #2282 > > │ 00:00:00 verbose #2 file_system.create_dir / { dir =                   │
00:02:45 verbose #2283 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pac │
00:02:45 verbose #2284 > > │ kages/TypeScript/702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa │
00:02:45 verbose #2285 > > │ 8c4a8 }                                                                      │
00:02:45 verbose #2286 > > │ 00:00:00   debug #3 spiral_builder.process_typescript / { version =    │
00:02:45 verbose #2287 > > │ US43_1 }                                                                     │
00:02:45 verbose #2288 > > │ 00:00:00   debug #4 runtime.execute_with_options / { file_name =       │
00:02:45 verbose #2289 > > │ dotnet; arguments = [                                                        │
00:02:45 verbose #2290 > > │     "fable",                                                                 │
00:02:45 verbose #2291 > > │                                                                              │
00:02:45 verbose #2292 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:02:45 verbose #2293 > > │ ckages/TypeScript/702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aa │
00:02:45 verbose #2294 > > │ a8c4a8/spiral_builder.fsproj",                                               │
00:02:45 verbose #2295 > > │     "--optimize",                                                            │
00:02:45 verbose #2296 > > │     "--lang",                                                                │
00:02:45 verbose #2297 > > │     "ts",                                                                    │
00:02:45 verbose #2298 > > │     "--extension",                                                           │
00:02:45 verbose #2299 > > │     ".ts",                                                                   │
00:02:45 verbose #2300 > > │     "--outDir",                                                              │
00:02:45 verbose #2301 > > │                                                                              │
00:02:45 verbose #2302 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:02:45 verbose #2303 > > │ ckages/TypeScript/702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aa │
00:02:45 verbose #2304 > > │ a8c4a8",                                                                     │
00:02:45 verbose #2305 > > │     "--define",                                                              │
00:02:45 verbose #2306 > > │     "_LINUX",                                                                │
00:02:45 verbose #2307 > > │ ]; options = { command = dotnet fable                                        │
00:02:45 verbose #2308 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:02:45 verbose #2309 > > │ ckages/TypeScript/702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aa │
00:02:45 verbose #2310 > > │ a8c4a8/spiral_builder.fsproj" --optimize --lang ts --extension .ts --outDir  │
00:02:45 verbose #2311 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:02:45 verbose #2312 > > │ ckages/TypeScript/702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb4..._with_option │
00:02:45 verbose #2313 > > │ s / { file_name = bun; arguments = [                                         │
00:02:45 verbose #2314 > > │     "run",                                                                   │
00:02:45 verbose #2315 > > │                                                                              │
00:02:45 verbose #2316 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:02:45 verbose #2317 > > │ ckages/TypeScript/702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aa │
00:02:45 verbose #2318 > > │ a8c4a8/spiral_builder.ts",                                                   │
00:02:45 verbose #2319 > > │ ]; options = { command = bun run                                             │
00:02:45 verbose #2320 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:02:45 verbose #2321 > > │ ckages/TypeScript/702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aa │
00:02:45 verbose #2322 > > │ a8c4a8/spiral_builder.ts"; cancellation_token = None; environment_variables  │
00:02:45 verbose #2323 > > │ = Array(MutCell([("PATH",                                                    │
00:02:45 verbose #2324 > > │ "~/.bun/bin:/opt/microsoft/powershell/7:/home/runner/.local/bin:/opt/hostedt │
00:02:45 verbose #2325 > > │ oolcache/Python/3.12.5/x64/bin:/opt/hostedtoolcache/Python/3.12.5/x64:/opt/h │
00:02:45 verbose #2326 > > │ ostedtoolcache/node/21.7.3/x64/bin:/usr/share/dotnet:/home/runner/.cargo/bin │
00:02:45 verbose #2327 > > │ :/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/ho │
00:02:45 verbose #2328 > > │ me/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.do │
00:02:45 verbose #2329 > > │ tnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr │
00:02:45 verbose #2330 > > │ /games:/usr/local/games:/snap/bin:/home/runner/.cargo/bin:/home/runner/.bun/ │
00:02:45 verbose #2331 > > │ bin:/home/runner/.cargo/bin:/home/runner/.bun/bin:/home/runner/.cargo/bin:/h │
00:02:45 verbose #2332 > > │ ome/runner/.bun/bin"), ("TRACE_LEVEL", "Verbose")])); on_line = None; stdin  │
00:02:45 verbose #2333 > > │ = None; trace = true; working_directory = None } }                           │
00:02:45 verbose #2334 > > │ 00:00:05 verbose #27 > -3                                              │
00:02:45 verbose #2335 > > │ 00:00:05 verbose #28 runtime.execute_with_options / result / {         │
00:02:45 verbose #2336 > > │ exit_code = 0; std_trace_length = 2 }                                        │
00:02:45 verbose #2337 > > │ __assert_eq / actual: "ts" / expected: "ts"                                  │
00:02:45 verbose #2338 > > │ __assert_eq / actual: "-3" / expected: "-3"                                  │
00:02:45 verbose #2339 > > │                                                                              │
00:02:45 verbose #2340 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:45 verbose #2341 > >
00:02:45 verbose #2342 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:45 verbose #2343 > > //// test
00:02:45 verbose #2344 > > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand
00:02:45 verbose #2345 > > rayon regex serde_json sha2 tokio[['rt-multi-thread']] tokio-stream
00:02:45 verbose #2346 > >
00:02:45 verbose #2347 > > inl file_name = "main.fs"
00:02:45 verbose #2348 > > inl code = "3 - 6 |> System.Console.WriteLine\n"
00:02:45 verbose #2349 > >
00:02:45 verbose #2350 > > inl temp_dir, disposable =
00:02:45 verbose #2351 > >     (file_name, code)
00:02:45 verbose #2352 > >     |> sm'.format_debug
00:02:45 verbose #2353 > >     |> crypto.hash_text
00:02:45 verbose #2354 > >     |> file_system.create_temp_dir'
00:02:45 verbose #2355 > > inl fs_path = temp_dir </> file_name
00:02:45 verbose #2356 > >
00:02:45 verbose #2357 > > code |> file_system.write_all_text fs_path
00:02:45 verbose #2358 > >
00:02:45 verbose #2359 > > get_command ()
00:02:45 verbose #2360 > > |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c
00:02:45 verbose #2361 > > \\\"python\\\""' |> runtime.split_args |> resultm.get)
00:02:45 verbose #2362 > > |> run Verbose
00:02:45 verbose #2363 > > |> async.block_on
00:02:45 verbose #2364 > > |> resultm.unwrap'
00:02:45 verbose #2365 > > |> sm'.deserialize
00:02:45 verbose #2366 > > |> resultm.unwrap'
00:02:45 verbose #2367 > > |> mapm.get ("command_result" |> sm'.to_std_string)
00:02:45 verbose #2368 > > |> optionm'.unwrap
00:02:45 verbose #2369 > > |> sm'.from_std_string
00:02:45 verbose #2370 > > |> sm'.deserialize
00:02:45 verbose #2371 > > |> resultm.unwrap'
00:02:45 verbose #2372 > > |> fun result =>
00:02:45 verbose #2373 > >     result
00:02:45 verbose #2374 > >     |> mapm.get ("extension" |> sm'.to_std_string)
00:02:45 verbose #2375 > >     |> optionm'.unwrap
00:02:45 verbose #2376 > >     |> sm'.from_std_string
00:02:45 verbose #2377 > >     |> _assert_eq "py"
00:02:45 verbose #2378 > >     result
00:02:45 verbose #2379 > >     |> mapm.get ("output" |> sm'.to_std_string)
00:02:45 verbose #2380 > >     |> optionm'.unwrap
00:02:45 verbose #2381 > >     |> sm'.from_std_string
00:02:45 verbose #2382 > >     |> _assert_eq "-3"
00:02:45 verbose #2383 > >
00:02:45 verbose #2384 > > disposable |> use |> ignore
00:03:27 verbose #2385 > >
00:03:27 verbose #2386 > > ╭─[ 41.33s - return value ]────────────────────────────────────────────────────╮
00:03:27 verbose #2387 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir =                   │
00:03:27 verbose #2388 > > │ /tmp/!create_temp_path_/spiral_builder_499b56e6196d8ec052e922be6113256caf6ca │
00:03:27 verbose #2389 > > │ 2c7abe17bf2050c4c57140d2eec/c6422374-71e4-07d4-0ba4-c3084b24fbba }           │
00:03:27 verbose #2390 > > │ 00:00:00 verbose #2 file_system.create_dir / { dir =                   │
00:03:27 verbose #2391 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pac │
00:03:27 verbose #2392 > > │ kages/Python/cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680c │
00:03:27 verbose #2393 > > │ e }                                                                          │
00:03:27 verbose #2394 > > │ 00:00:00 verbose #3 file_system.create_dir / { dir =                   │
00:03:27 verbose #2395 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pac │
00:03:27 verbose #2396 > > │ kages/Python/cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680c │
00:03:27 verbose #2397 > > │ e/fable_modules }                                                            │
00:03:27 verbose #2398 > > │ 00:00:00   debug #4 runtime.execute_with_options / { file_name =       │
00:03:27 verbose #2399 > > │ dotnet; arguments = [                                                        │
00:03:27 verbose #2400 > > │     "fable",                                                                 │
00:03:27 verbose #2401 > > │                                                                              │
00:03:27 verbose #2402 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:03:27 verbose #2403 > > │ ckages/Python/cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680 │
00:03:27 verbose #2404 > > │ ce/spiral_builder.fsproj",                                                   │
00:03:27 verbose #2405 > > │     "--optimize",                                                            │
00:03:27 verbose #2406 > > │     "--lang",                                                                │
00:03:27 verbose #2407 > > │     "py",                                                                    │
00:03:27 verbose #2408 > > │     "--extension",                                                           │
00:03:27 verbose #2409 > > │     ".py",                                                                   │
00:03:27 verbose #2410 > > │     "--outDir",                                                              │
00:03:27 verbose #2411 > > │                                                                              │
00:03:27 verbose #2412 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:03:27 verbose #2413 > > │ ckages/Python/cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680 │
00:03:27 verbose #2414 > > │ ce",                                                                         │
00:03:27 verbose #2415 > > │     "--define",                                                              │
00:03:27 verbose #2416 > > │     "_LINUX",                                                                │
00:03:27 verbose #2417 > > │ ]; options = { command = dotnet fable                                        │
00:03:27 verbose #2418 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:03:27 verbose #2419 > > │ ckages/Python/cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680 │
00:03:27 verbose #2420 > > │ ce/spiral_builder.fsproj" --optimize --lang py --extension .py --outDir      │
00:03:27 verbose #2421 > > │ "/home/...00:00:04 verbose #18 >                                       │
00:03:27 verbose #2422 > > │ 00:00:04 verbose #19 > Started Fable compilation...                 │
00:03:27 verbose #2423 > > │ 00:00:05 verbose #20 >                                              │
00:03:27 verbose #2424 > > │ 00:00:05 verbose #21 > Fable compilation finished in 1007ms            │
00:03:27 verbose #2425 > > │ 00:00:05 verbose #22 >                                                 │
00:03:27 verbose #2426 > > │ 00:00:05 verbose #23 runtime.execute_with_options / result / {         │
00:03:27 verbose #2427 > > │ exit_code = 0; std_trace_length = 1555 }                                     │
00:03:27 verbose #2428 > > │ 00:00:05   debug #24 spiral_builder.process_python / { new_code_path = │
00:03:27 verbose #2429 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pac │
00:03:27 verbose #2430 > > │ kages/Python/cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680c │
00:03:27 verbose #2431 > > │ e/spiral_builder.py }                                                        │
00:03:27 verbose #2432 > > │ 00:00:05   debug #25 runtime.execute_with_options / { file_name =      │
00:03:27 verbose #2433 > > │ python; arguments = [                                                        │
00:03:27 verbose #2434 > > │                                                                              │
00:03:27 verbose #2435 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:03:27 verbose #2436 > > │ ckages/Python/cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680 │
00:03:27 verbose #2437 > > │ ce/spiral_builder.py",                                                       │
00:03:27 verbose #2438 > > │ ]; options = { command = python                                              │
00:03:27 verbose #2439 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:03:27 verbose #2440 > > │ ckages/Python/cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680 │
00:03:27 verbose #2441 > > │ ce/spiral_builder.py"; cancellation_token = None; environment_variables =    │
00:03:27 verbose #2442 > > │ Array(MutCell([("TRACE_LEVEL", "Verbose")])); on_line = None; stdin = None;  │
00:03:27 verbose #2443 > > │ trace = true; working_directory = None } }                                   │
00:03:27 verbose #2444 > > │ 00:00:05 verbose #26 > -3                                              │
00:03:27 verbose #2445 > > │ 00:00:05 verbose #27 runtime.execute_with_options / result / {         │
00:03:27 verbose #2446 > > │ exit_code = 0; std_trace_length = 2 }                                        │
00:03:27 verbose #2447 > > │ __assert_eq / actual: "py" / expected: "py"                                  │
00:03:27 verbose #2448 > > │ __assert_eq / actual: "-3" / expected: "-3"                                  │
00:03:27 verbose #2449 > > │                                                                              │
00:03:27 verbose #2450 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:27 verbose #2451 > >
00:03:27 verbose #2452 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:27 verbose #2453 > > //// test
00:03:27 verbose #2454 > > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io rand rayon
00:03:27 verbose #2455 > > regex serde_json sha2 tokio[['rt-multi-thread']] tokio-stream
00:03:27 verbose #2456 > >
00:03:27 verbose #2457 > > inl file_name = "test.dib"
00:03:27 verbose #2458 > > inl code =
00:03:27 verbose #2459 > >
00:03:27 verbose #2460 > > "#!meta\n\n{\"kernelInfo\":{\"defaultKernelName\":\"fsharp\",\"items\":[[]]}}\n\
00:03:27 verbose #2461 > > n#!fsharp\n\n3 - 6\n"
00:03:27 verbose #2462 > >
00:03:27 verbose #2463 > > inl temp_dir, disposable =
00:03:27 verbose #2464 > >     (file_name, code)
00:03:27 verbose #2465 > >     |> sm'.format_debug
00:03:27 verbose #2466 > >     |> crypto.hash_text
00:03:27 verbose #2467 > >     |> file_system.create_temp_dir'
00:03:27 verbose #2468 > > inl path = temp_dir </> file_name |> file_system.normalize_path
00:03:27 verbose #2469 > >
00:03:27 verbose #2470 > > code
00:03:27 verbose #2471 > > |> file_system.write_all_text path
00:03:27 verbose #2472 > >
00:03:27 verbose #2473 > > get_command ()
00:03:27 verbose #2474 > > |> runtime.command_get_matches_from ($'$"_ dib -p {!path}"' |>
00:03:27 verbose #2475 > > runtime.split_args |> resultm.get)
00:03:27 verbose #2476 > > |> run Verbose
00:03:27 verbose #2477 > > |> async.block_on
00:03:27 verbose #2478 > > |> resultm.unwrap'
00:03:27 verbose #2479 > > |> __assert_string_contains Silent "<pre>-3 "
00:03:27 verbose #2480 > >
00:03:27 verbose #2481 > > $'$"{!path}.html"'
00:03:27 verbose #2482 > > |> file_system.read_all_text
00:03:27 verbose #2483 > > |> __assert_string_contains Silent "\"cell-id=1\""
00:03:27 verbose #2484 > >
00:03:27 verbose #2485 > > disposable |> use |> ignore
00:04:08 verbose #2486 > >
00:04:08 verbose #2487 > > ╭─[ 41.27s - return value ]────────────────────────────────────────────────────╮
00:04:08 verbose #2488 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir =                   │
00:04:08 verbose #2489 > > │ /tmp/!create_temp_path_/spiral_builder_80bfbca42ccbe3b212107cd763a3137e5c8e7 │
00:04:08 verbose #2490 > > │ b2b057305d1a48e087291b696f1/af524e22-8e9a-5d18-99ed-bd86e1b74623 }           │
00:04:08 verbose #2491 > > │ 00:00:00   debug #2 runtime.execute_with_options / { file_name =       │
00:04:08 verbose #2492 > > │ dotnet; arguments = [                                                        │
00:04:08 verbose #2493 > > │     "repl",                                                                  │
00:04:08 verbose #2494 > > │     "--exit-after-run",                                                      │
00:04:08 verbose #2495 > > │     "--run",                                                                 │
00:04:08 verbose #2496 > > │                                                                              │
00:04:08 verbose #2497 > > │ "/tmp/!create_temp_path_/spiral_builder_80bfbca42ccbe3b212107cd763a3137e5c8e │
00:04:08 verbose #2498 > > │ 7b2b057305d1a48e087291b696f1/af524e22-8e9a-5d18-99ed-bd86e1b74623/test.dib", │
00:04:08 verbose #2499 > > │     "--output-path",                                                         │
00:04:08 verbose #2500 > > │                                                                              │
00:04:08 verbose #2501 > > │ "/tmp/!create_temp_path_/spiral_builder_80bfbca42ccbe3b212107cd763a3137e5c8e │
00:04:08 verbose #2502 > > │ 7b2b057305d1a48e087291b696f1/af524e22-8e9a-5d18-99ed-bd86e1b74623/test.dib.i │
00:04:08 verbose #2503 > > │ pynb",                                                                       │
00:04:08 verbose #2504 > > │ ]; options = { command = dotnet repl --exit-after-run --run                  │
00:04:08 verbose #2505 > > │ "/tmp/!create_temp_path_/spiral_builder_80bfbca42ccbe3b212107cd763a3137e5c8e │
00:04:08 verbose #2506 > > │ 7b2b057305d1a48e087291b696f1/af524e22-8e9a-5d18-99ed-bd86e1b74623/test.dib"  │
00:04:08 verbose #2507 > > │ --output-path                                                                │
00:04:08 verbose #2508 > > │ "/tmp/!create_temp_path_/spiral_builder_80bfbca42ccbe3b212107cd763a3137e5c8e │
00:04:08 verbose #2509 > > │ 7b2b057305d1a48e087291b696f1/af524e22-8e9a-5d18-99ed-bd86e1b74623/test.dib.i │
00:04:08 verbose #2510 > > │ pynb"; cancellation_token = None; environment_variables = Array(MutCell([    │
00:04:08 verbose #2511 > > │ ("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin │
00:04:08 verbose #2512 > > │ = None; trace = false; working_directory = None } }                          │
00:04:08 verbose #2513 > > │ >                                                                            │
00:04:08 verbose #2514 > > │ > ── fsharp                                                         │
00:04:08 verbose #2515 > > │ ──────────────────────────────────────────────────────────────────────     │
00:04:08 verbose #2516 > > │ > 3 - 6                                                                      │
00:04:08 verbose #2517 > > │ >                                                                            │
00:04:08 verbose #2518 > > │ > ╭─[ 2.88s - return value                                            │
00:04:08 verbose #2519 > > │ ]─────────────────────────────────────────────────────╮                    │
00:04:08 verbose #2520 > > │ > │ <...b74623/test.dib.html                                        │
00:04:08 verbose #2521 > > │ 00:00:05 verbose #11 runtime.execute_with_options / result / {         │
00:04:08 verbose #2522 > > │ exit_code = 0; std_trace_length = 1080 }                                     │
00:04:08 verbose #2523 > > │ 00:00:05   debug #12 spiral_builder.run / dib / jupyter nbconvert / {  │
00:04:08 verbose #2524 > > │ exit_code = 0; jupyter_result_length = 1080 }                                │
00:04:08 verbose #2525 > > │ 00:00:05   debug #13 runtime.execute_with_options / { file_name =      │
00:04:08 verbose #2526 > > │ pwsh; arguments = [                                                          │
00:04:08 verbose #2527 > > │     "-c",                                                                    │
00:04:08 verbose #2528 > > │     "$counter = 1; $path =                                                   │
00:04:08 verbose #2529 > > │ '/tmp/!create_temp_path_/spiral_builder_80bfbca42ccbe3b212107cd763a3137e5c8e │
00:04:08 verbose #2530 > > │ 7b2b057305d1a48e087291b696f1/af524e22-8e9a-5d18-99ed-bd86e1b74623/test.dib.h │
00:04:08 verbose #2531 > > │ tml'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { │
00:04:08 verbose #2532 > > │ $_.Groups[1].Value + $counter++ } | Set-Content $path",                      │
00:04:08 verbose #2533 > > │ ]; options = { command = pwsh -c "$counter = 1; $path =                      │
00:04:08 verbose #2534 > > │ '/tmp/!create_temp_path_/spiral_builder_80bfbca42ccbe3b212107cd763a3137e5c8e │
00:04:08 verbose #2535 > > │ 7b2b057305d1a48e087291b696f1/af524e22-8e9a-5d18-99ed-bd86e1b74623/test.dib.h │
00:04:08 verbose #2536 > > │ tml'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', {   │
00:04:08 verbose #2537 > > │ $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = │
00:04:08 verbose #2538 > > │ None; environment_variables = Array(MutCell([])); on_line = None; stdin =    │
00:04:08 verbose #2539 > > │ None; trace = true; working_directory = None } }                             │
00:04:08 verbose #2540 > > │ 00:00:05 verbose #14 runtime.execute_with_options / result / {         │
00:04:08 verbose #2541 > > │ exit_code = 0; std_trace_length = 0 }                                        │
00:04:08 verbose #2542 > > │ 00:00:05   debug #15 spiral_builder.run / dib / html cell ids / {      │
00:04:08 verbose #2543 > > │ exit_code = 0; pwsh_replace_html_result_length = 0 }                         │
00:04:08 verbose #2544 > > │ 00:00:05   debug #16 spiral_builder.run / dib / { exit_code = 0;       │
00:04:08 verbose #2545 > > │ result_length = 4961 }                                                       │
00:04:08 verbose #2546 > > │                                                                              │
00:04:08 verbose #2547 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:08 verbose #2548 > >
00:04:08 verbose #2549 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:08 verbose #2550 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:08 verbose #2551 > > │ ## tests                                                                     │
00:04:08 verbose #2552 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:08 verbose #2553 > >
00:04:08 verbose #2554 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:08 verbose #2555 > > inl tests () =
00:04:08 verbose #2556 > >     testing.run_tests {
00:04:08 verbose #2557 > >         verify_app = get_command >> runtime.command_debug_assert
00:04:08 verbose #2558 > >     }
00:04:08 verbose #2559 > >
00:04:08 verbose #2560 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:08 verbose #2561 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:08 verbose #2562 > > │ ## main                                                                      │
00:04:08 verbose #2563 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:08 verbose #2564 > >
00:04:08 verbose #2565 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:08 verbose #2566 > > ///! _
00:04:08 verbose #2567 > >
00:04:08 verbose #2568 > > inl main (args : array_base string) =
00:04:08 verbose #2569 > >     inl trace_state = get_trace_state_or_init None
00:04:08 verbose #2570 > >
00:04:08 verbose #2571 > >     trace Debug
00:04:08 verbose #2572 > >         fun () => $'$"spiral_builder.main"'
00:04:08 verbose #2573 > >         fun () => { args }
00:04:08 verbose #2574 > >
00:04:08 verbose #2575 > >     inl command = get_command ()
00:04:08 verbose #2576 > >     inl arg_matches = command |> runtime.command_get_matches
00:04:08 verbose #2577 > >
00:04:08 verbose #2578 > >     inl trace_state_level = trace_state.level
00:04:08 verbose #2579 > >
00:04:08 verbose #2580 > >     inl result =
00:04:08 verbose #2581 > >         arg_matches
00:04:08 verbose #2582 > >         |> run *trace_state_level
00:04:08 verbose #2583 > >         |> async.block_on
00:04:08 verbose #2584 > >         |> resultm.unwrap'
00:04:08 verbose #2585 > >
00:04:08 verbose #2586 > >     if *trace_state_level = Info
00:04:08 verbose #2587 > >     then result |> console.write_line
00:04:08 verbose #2588 > >
00:04:08 verbose #2589 > >     0i32
00:04:08 verbose #2590 > >
00:04:08 verbose #2591 > > inl main () =
00:04:08 verbose #2592 > >     $'let tests () = !tests ()' : ()
00:04:08 verbose #2593 > >     $'let main args = !main args' : ()
00:04:18 verbose #2594 > 00:04:18 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 127753 }
00:04:18 verbose #2595 > 00:04:18   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:04:18 verbose #2596 >     "nbconvert",
00:04:18 verbose #2597 >     "/home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb",
00:04:18 verbose #2598 >     "--to",
00:04:18 verbose #2599 >     "html",
00:04:18 verbose #2600 >     "--HTMLExporter.theme=dark",
00:04:18 verbose #2601 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:19 verbose #2602 > 00:04:18 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb to html
00:04:19 verbose #2603 > 00:04:18 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:04:19 verbose #2604 > 00:04:18 verbose #7 !   validate(nb)
00:04:19 verbose #2605 > 00:04:19 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:04:19 verbose #2606 > 00:04:19 verbose #9 !   return _pygments_highlight(
00:04:20 verbose #2607 > 00:04:20 verbose #10 ! [NbConvertApp] Writing 602389 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib.html
00:04:21 verbose #2608 > 00:04:20 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 930 }
00:04:21 verbose #2609 > 00:04:20   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 930 }
00:04:21 verbose #2610 > 00:04:20   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:04:21 verbose #2611 >     "-c",
00:04:21 verbose #2612 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:04:21 verbose #2613 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:21 verbose #2614 > 00:04:20 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:04:21 verbose #2615 > 00:04:20   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:04:21 verbose #2616 > 00:04:20   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 128742 }
00:04:21   debug #2617 runtime.execute_with_options_async / { exit_code = 0; output_length = 136880 }
00:04:21   debug #1 main / executeCommand / exitCode: 0 / command: ../../../workspace/target/release/spiral_builder dib --path spiral_builder.dib
00:00:00   debug #1 writeDibCode / output: Spi / path: spiral_builder.dib
00:00:00   debug #2 parseDibCode / output: Spi / file: spiral_builder.dib
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 verbose #2 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00   debug #1 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:00   debug #2 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:00   debug #3 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:00 verbose #4 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # spiral_builder\nopen file_system_operators\nopen rust.rust_operators\n... : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.spi"}} / result:
00:00:00 verbose #5 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.spi"}} / result:
00:00:01   debug #6 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:01   debug #7 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:01   debug #8 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:01   debug #9 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:02   debug #10 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:02   debug #11 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:02   debug #12 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:02   debug #13 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:03   debug #14 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:03   debug #15 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:03   debug #16 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:03   debug #17 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:04   debug #18 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:04   debug #19 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:04   debug #20 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:04   debug #21 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:05   debug #22 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:05   debug #23 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:05   debug #24 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:05   debug #25 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:06   debug #26 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:06   debug #27 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:06   debug #28 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:06   debug #29 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:07   debug #30 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:07   debug #31 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:07   debug #32 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:07   debug #33 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:08   debug #34 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:08   debug #35 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:08   debug #36 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:08   debug #37 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:09   debug #38 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:09   debug #39 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:09   debug #40 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:09   debug #41 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:10   debug #42 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:10   debug #43 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:10   debug #44 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
#endif
type Ref<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit...()
        ()
    0
let v0 : (unit -> unit) = closure0()
let tests () = v0 ()
let v1 : ((string []) -> int32) = closure1()
let main args = v1 args
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_builder.spi
00:00:10   debug #45 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
#endif
type Ref<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit...()
        ()
    0
let v0 : (unit -> unit) = closure0()
let tests () = v0 ()
let v1 : ((string []) -> int32) = closure1()
let main args = v1 args
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi
00:00:10   debug #46 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:00   debug #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: spiral_builder / hash:  / code.Length: 1771837
targetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder
Fable 4.19.3: F# to Rust compiler (status: alpha)

Thanks to the contributor! @valery-vitko
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/spiral_builder/spiral_builder.fsproj...
target/Builder/spiral_builder> dotnet restore spiral_builder.fable-temp.csproj -p:FABLE_COMPILER=true -p:FABLE_COMPILER_4=true -p:FABLE_COMPILER_RUST=true -p:_LINUX=true
  Determining projects to restore...
  Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
  The last full restore is still up to date. Nothing left to do.
  Total time taken: 0 milliseconds
  Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
  Restoring /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fable-temp.csproj
  Starting restore process.
  Total time taken: 0 milliseconds
  Restored /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fable-temp.csproj (in 292 ms).
target/Builder/spiral_builder> dotnet restore /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fsproj
  Determining projects to restore...
  Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
  The last full restore is still up to date. Nothing left to do.
  Total time taken: 0 milliseconds
  Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
  Restoring /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fsproj
  Starting restore process.
  Total time taken: 0 milliseconds
  Restored /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fsproj (in 284 ms).
Project and references (14 source files) parsed in 5917ms

Started Fable compilation...

Fable compilation finished in 13890ms

./lib/spiral/sm.fsx(414,0): (414,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/common.fsx(1425,0): (1425,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/date_time.fsx(1012,0): (1012,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/async_.fsx(76,0): (76,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/threading.fsx(145,0): (145,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/crypto.fsx(1326,0): (1326,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/platform.fsx(104,0): (104,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/networking.fsx(4626,0): (4626,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/trace.fsx(1524,0): (1524,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/runtime.fsx(7219,0): (7219,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/file_system.fsx(11479,0): (11479,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
   Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust)
   Compiling spiral_builder v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/builder)
    Finished `release` profile [optimized] target(s) in 11.71s
     Running unittests spiral_builder.rs (/home/runner/work/polyglot/polyglot/workspace/target/release/deps/spiral_builder-927a7b57474f2564)

running 1 test
test module_7e2cd9e0::Spiral_builder::verify_app ... ok

successes:

successes:
    module_7e2cd9e0::Spiral_builder::verify_app

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust)
   Compiling spiral_builder v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/builder)
    Finished `release` profile [optimized] target(s) in 23.07s
In [ ]:
{ pwsh ../apps/spiral/wasm/build.ps1 } | Invoke-Block
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00   debug #1 runtime.execute_with_options_async / { options = { command = ../../../workspace/target/release/spiral_builder dib --path spiral_wasm.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:00 verbose #2 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "spiral_wasm.dib"])) }
00:00:00 verbose #3 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:00:00 verbose #4 >     "repl",
00:00:00 verbose #5 >     "--exit-after-run",
00:00:00 verbose #6 >     "--run",
00:00:00 verbose #7 >     "/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib",
00:00:00 verbose #8 >     "--output-path",
00:00:00 verbose #9 >     "/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb",
00:00:00 verbose #10 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:01 verbose #11 > >
00:00:01 verbose #12 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:01 verbose #13 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:01 verbose #14 > > │ # spiral_wasm                                                                │
00:00:01 verbose #15 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:04 verbose #16 > >
00:00:04 verbose #17 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:04 verbose #18 > > open rust.rust_operators
00:00:04 verbose #19 > > open rust
00:00:04 verbose #20 > > open sm'_operators
00:00:04 verbose #21 > >
00:00:04 verbose #22 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:04 verbose #23 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:04 verbose #24 > > │ ## spiral_wasm                                                               │
00:00:04 verbose #25 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:04 verbose #26 > >
00:00:04 verbose #27 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:04 verbose #28 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:04 verbose #29 > > │ ### get_args                                                                 │
00:00:04 verbose #30 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:04 verbose #31 > >
00:00:04 verbose #32 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:04 verbose #33 > > inl get_args () =
00:00:04 verbose #34 > >     {
00:00:04 verbose #35 > >         exception = "exception", 'e'
00:00:04 verbose #36 > >         trace_level = "trace_level", 't'
00:00:04 verbose #37 > >         wasm = "wasm", 'w'
00:00:04 verbose #38 > >     }
00:00:05 verbose #39 > >
00:00:05 verbose #40 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #41 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #42 > > │ ### get_command                                                              │
00:00:05 verbose #43 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #44 > >
00:00:05 verbose #45 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #46 > > let get_command () =
00:00:05 verbose #47 > >     ##"command"
00:00:05 verbose #48 > >     |> runtime.new_command
00:00:05 verbose #49 > >     |> runtime.command_args_override_self true
00:00:05 verbose #50 > >     |> runtime.command_init_arg (get_args () .exception) (
00:00:05 verbose #51 > >         runtime.arg_action runtime.SetTrue
00:00:05 verbose #52 > >     )
00:00:05 verbose #53 > >     |> runtime.command_init_arg (get_args () .trace_level) (
00:00:05 verbose #54 > >         real runtime.arg_union `trace_level ignore
00:00:05 verbose #55 > >     )
00:00:05 verbose #56 > >     |> runtime.command_init_arg (get_args () .wasm) (
00:00:05 verbose #57 > >         runtime.arg_required true
00:00:05 verbose #58 > >     )
00:00:05 verbose #59 > >
00:00:05 verbose #60 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #61 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #62 > > │ ### gas                                                                      │
00:00:05 verbose #63 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #64 > >
00:00:05 verbose #65 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #66 > > nominal gas =
00:00:05 verbose #67 > >     `(
00:00:05 verbose #68 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:05 verbose #69 > > Fable.Core.Emit(\"near_workspaces::types::Gas\")>]]\n#endif\ntype
00:00:05 verbose #70 > > near_workspaces_types_Gas = class end"
00:00:05 verbose #71 > >         $'' : $'near_workspaces_types_Gas'
00:00:05 verbose #72 > >     )
00:00:05 verbose #73 > >
00:00:05 verbose #74 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #75 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #76 > > │ ### near_token                                                               │
00:00:05 verbose #77 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #78 > >
00:00:05 verbose #79 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #80 > > nominal near_token =
00:00:05 verbose #81 > >     `(
00:00:05 verbose #82 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:05 verbose #83 > > Fable.Core.Emit(\"near_workspaces::types::NearToken\")>]]\n#endif\ntype
00:00:05 verbose #84 > > near_token_NearToken = class end"
00:00:05 verbose #85 > >         $'' : $'near_token_NearToken'
00:00:05 verbose #86 > >     )
00:00:05 verbose #87 > >
00:00:05 verbose #88 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #89 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #90 > > │ ### near_workspaces_error                                                    │
00:00:05 verbose #91 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #92 > >
00:00:05 verbose #93 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #94 > > nominal near_workspaces_error =
00:00:05 verbose #95 > >     `(
00:00:05 verbose #96 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:05 verbose #97 > > Fable.Core.Emit(\"near_workspaces::error::Error\")>]]\n#endif\ntype
00:00:05 verbose #98 > > near_workspaces_error_Error = class end"
00:00:05 verbose #99 > >         $'' : $'near_workspaces_error_Error'
00:00:05 verbose #100 > >     )
00:00:05 verbose #101 > >
00:00:05 verbose #102 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #103 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #104 > > │ ### sandbox                                                                  │
00:00:05 verbose #105 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #106 > >
00:00:05 verbose #107 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #108 > > nominal sandbox =
00:00:05 verbose #109 > >     `(
00:00:05 verbose #110 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:05 verbose #111 > > Fable.Core.Emit(\"near_workspaces::network::Sandbox\")>]]\n#endif\ntype
00:00:05 verbose #112 > > near_workspaces_network_Sandbox = class end"
00:00:05 verbose #113 > >         $'' : $'near_workspaces_network_Sandbox'
00:00:05 verbose #114 > >     )
00:00:05 verbose #115 > >
00:00:05 verbose #116 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #117 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #118 > > │ ### worker                                                                   │
00:00:05 verbose #119 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #120 > >
00:00:05 verbose #121 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #122 > > nominal worker t =
00:00:05 verbose #123 > >     `(
00:00:05 verbose #124 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:05 verbose #125 > > Fable.Core.Emit(\"near_workspaces::Worker<$0>\")>]]\n#endif\ntype
00:00:05 verbose #126 > > near_workspaces_Worker<'T> = class end"
00:00:05 verbose #127 > >         $'' : $'near_workspaces_Worker<`t>'
00:00:05 verbose #128 > >     )
00:00:05 verbose #129 > >
00:00:05 verbose #130 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #131 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #132 > > │ ### contract                                                                 │
00:00:05 verbose #133 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #134 > >
00:00:05 verbose #135 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #136 > > nominal contract =
00:00:05 verbose #137 > >     `(
00:00:05 verbose #138 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:05 verbose #139 > > Fable.Core.Emit(\"near_workspaces::Contract\")>]]\n#endif\ntype
00:00:05 verbose #140 > > near_workspaces_Contract = class end"
00:00:05 verbose #141 > >         $'' : $'near_workspaces_Contract'
00:00:05 verbose #142 > >     )
00:00:05 verbose #143 > >
00:00:05 verbose #144 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #145 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #146 > > │ ### call_transaction                                                         │
00:00:05 verbose #147 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #148 > >
00:00:05 verbose #149 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #150 > > nominal call_transaction =
00:00:05 verbose #151 > >     `(
00:00:05 verbose #152 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:05 verbose #153 > > Fable.Core.Emit(\"near_workspaces::operations::CallTransaction\")>]]\n#endif\nty
00:00:05 verbose #154 > > pe near_workspaces_operations_CallTransaction = class end"
00:00:05 verbose #155 > >         $'' : $'near_workspaces_operations_CallTransaction'
00:00:05 verbose #156 > >     )
00:00:06 verbose #157 > >
00:00:06 verbose #158 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #159 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #160 > > │ ### execution_final_result                                                   │
00:00:06 verbose #161 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #162 > >
00:00:06 verbose #163 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #164 > > nominal execution_final_result =
00:00:06 verbose #165 > >     `(
00:00:06 verbose #166 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:06 verbose #167 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionFinalResult\")>]]\n#endif\nt
00:00:06 verbose #168 > > ype near_workspaces_result_ExecutionFinalResult = class end"
00:00:06 verbose #169 > >         $'' : $'near_workspaces_result_ExecutionFinalResult'
00:00:06 verbose #170 > >     )
00:00:06 verbose #171 > >
00:00:06 verbose #172 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #173 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #174 > > │ ### execution_result                                                         │
00:00:06 verbose #175 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #176 > >
00:00:06 verbose #177 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #178 > > nominal execution_result t =
00:00:06 verbose #179 > >     `(
00:00:06 verbose #180 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:06 verbose #181 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionResult<$0>\")>]]\n#endif\nty
00:00:06 verbose #182 > > pe near_workspaces_result_ExecutionResult<'T> = class end"
00:00:06 verbose #183 > >         $'' : $'near_workspaces_result_ExecutionResult<`t>'
00:00:06 verbose #184 > >     )
00:00:06 verbose #185 > >
00:00:06 verbose #186 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #187 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #188 > > │ ### execution_success                                                        │
00:00:06 verbose #189 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #190 > >
00:00:06 verbose #191 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #192 > > nominal execution_success =
00:00:06 verbose #193 > >     `(
00:00:06 verbose #194 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:06 verbose #195 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionSuccess\")>]]\n#endif\ntype
00:00:06 verbose #196 > > near_workspaces_result_ExecutionSuccess = class end"
00:00:06 verbose #197 > >         $'' : $'near_workspaces_result_ExecutionSuccess'
00:00:06 verbose #198 > >     )
00:00:06 verbose #199 > >
00:00:06 verbose #200 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #201 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #202 > > │ ### execution_failure                                                        │
00:00:06 verbose #203 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #204 > >
00:00:06 verbose #205 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #206 > > nominal execution_failure =
00:00:06 verbose #207 > >     `(
00:00:06 verbose #208 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:06 verbose #209 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionFailure\")>]]\n#endif\ntype
00:00:06 verbose #210 > > near_workspaces_result_ExecutionFailure = class end"
00:00:06 verbose #211 > >         $'' : $'near_workspaces_result_ExecutionFailure'
00:00:06 verbose #212 > >     )
00:00:06 verbose #213 > >
00:00:06 verbose #214 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #215 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #216 > > │ ### execution_outcome                                                        │
00:00:06 verbose #217 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #218 > >
00:00:06 verbose #219 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #220 > > nominal execution_outcome =
00:00:06 verbose #221 > >     `(
00:00:06 verbose #222 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:06 verbose #223 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionOutcome\")>]]\n#endif\ntype
00:00:06 verbose #224 > > near_workspaces_result_ExecutionOutcome = class end"
00:00:06 verbose #225 > >         $'' : $'near_workspaces_result_ExecutionOutcome'
00:00:06 verbose #226 > >     )
00:00:07 verbose #227 > >
00:00:07 verbose #228 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 verbose #229 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 verbose #230 > > │ ### sandbox_worker                                                           │
00:00:07 verbose #231 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #232 > >
00:00:07 verbose #233 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #234 > > inl sandbox_worker () : resultm.result' (worker sandbox) near_workspaces_error =
00:00:07 verbose #235 > >     !\($'"near_workspaces::sandbox().await"')
00:00:07 verbose #236 > >
00:00:07 verbose #237 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 verbose #238 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 verbose #239 > > │ ### dev_deploy                                                               │
00:00:07 verbose #240 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #241 > >
00:00:07 verbose #242 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #243 > > inl dev_deploy
00:00:07 verbose #244 > >     (wasm : am'.vec u8)
00:00:07 verbose #245 > >     (worker : worker sandbox)
00:00:07 verbose #246 > >     : async.future_pin (resultm.result' contract near_workspaces_error)
00:00:07 verbose #247 > >     =
00:00:07 verbose #248 > >     !\\((worker, wasm), $'"Box::pin($0.dev_deploy(&$1))"')
00:00:07 verbose #249 > >
00:00:07 verbose #250 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 verbose #251 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 verbose #252 > > │ ### call                                                                     │
00:00:07 verbose #253 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #254 > >
00:00:07 verbose #255 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #256 > > inl call (fn_name : string) (contract : contract) : call_transaction =
00:00:07 verbose #257 > >     !\\((contract, fn_name), $'"$0.call(&*$1)"')
00:00:07 verbose #258 > >
00:00:07 verbose #259 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 verbose #260 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 verbose #261 > > │ ### transact                                                                 │
00:00:07 verbose #262 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #263 > >
00:00:07 verbose #264 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #265 > > inl transact
00:00:07 verbose #266 > >     (call : call_transaction)
00:00:07 verbose #267 > >     : async.future_pin (resultm.result' execution_final_result
00:00:07 verbose #268 > > near_workspaces_error)
00:00:07 verbose #269 > >     =
00:00:07 verbose #270 > >     !\($'"Box::pin(!call.transact())"')
00:00:07 verbose #271 > >
00:00:07 verbose #272 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 verbose #273 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 verbose #274 > > │ ### logs                                                                     │
00:00:07 verbose #275 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #276 > >
00:00:07 verbose #277 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #278 > > inl logs (result : execution_final_result) : am'.vec (rust.ref sm'.str) =
00:00:07 verbose #279 > >     !\($'"!result.logs()"')
00:00:07 verbose #280 > >
00:00:07 verbose #281 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 verbose #282 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 verbose #283 > > │ ### into_result                                                              │
00:00:07 verbose #284 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #285 > >
00:00:07 verbose #286 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #287 > > inl into_result
00:00:07 verbose #288 > >     (result : execution_final_result)
00:00:07 verbose #289 > >     : resultm.result' execution_success execution_failure
00:00:07 verbose #290 > >     =
00:00:07 verbose #291 > >     !\\(result, $'"$0.into_result()"')
00:00:07 verbose #292 > >
00:00:07 verbose #293 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 verbose #294 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 verbose #295 > > │ ### receipt_failures                                                         │
00:00:07 verbose #296 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #297 > >
00:00:07 verbose #298 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #299 > > inl receipt_failures (result : execution_final_result) : am'.vec (rust.ref
00:00:07 verbose #300 > > execution_outcome) =
00:00:07 verbose #301 > >     inl result = join result
00:00:07 verbose #302 > >     !\($'"!result.receipt_failures()"')
00:00:07 verbose #303 > >
00:00:07 verbose #304 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 verbose #305 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 verbose #306 > > │ ### receipt_outcomes                                                         │
00:00:07 verbose #307 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #308 > >
00:00:07 verbose #309 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #310 > > inl receipt_outcomes (result : execution_final_result) : am'.vec
00:00:07 verbose #311 > > execution_outcome =
00:00:07 verbose #312 > >     inl result = join result
00:00:07 verbose #313 > >     inl result : rust.ref (am'.slice execution_outcome) =
00:00:07 verbose #314 > > !\($'"!result.receipt_outcomes()"')
00:00:07 verbose #315 > >     result |> rust.into
00:00:07 verbose #316 > >
00:00:07 verbose #317 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 verbose #318 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 verbose #319 > > │ ### json                                                                     │
00:00:07 verbose #320 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #321 > >
00:00:07 verbose #322 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #323 > > inl json (result : execution_final_result) : resultm.result' sm'.std_string
00:00:07 verbose #324 > > near_workspaces_error =
00:00:07 verbose #325 > >     !\\(result, $'"$0.json()"')
00:00:07 verbose #326 > >
00:00:07 verbose #327 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 verbose #328 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 verbose #329 > > │ ### borsh                                                                    │
00:00:07 verbose #330 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #331 > >
00:00:07 verbose #332 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #333 > > inl borsh (result : execution_final_result) : resultm.result' sm'.std_string
00:00:07 verbose #334 > > near_workspaces_error =
00:00:07 verbose #335 > >     !\\(result, $'"$0.borsh()"')
00:00:07 verbose #336 > >
00:00:07 verbose #337 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 verbose #338 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 verbose #339 > > │ ### near_price_in_usd                                                        │
00:00:07 verbose #340 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #341 > >
00:00:07 verbose #342 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #343 > > inl near_price_in_usd () =
00:00:07 verbose #344 > >     6.68f64
00:00:08 verbose #345 > >
00:00:08 verbose #346 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 verbose #347 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 verbose #348 > > │ ### gas_to_usd                                                               │
00:00:08 verbose #349 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 verbose #350 > >
00:00:08 verbose #351 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #352 > > inl gas_to_usd (gas : u64) =
00:00:08 verbose #353 > >     (gas |> f64) / 10_000_000_000_000_000 * near_price_in_usd ()
00:00:08 verbose #354 > >
00:00:08 verbose #355 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 verbose #356 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 verbose #357 > > │ ### tokens_to_usd                                                            │
00:00:08 verbose #358 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 verbose #359 > >
00:00:08 verbose #360 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #361 > > inl tokens_to_usd (tokens : rust.u128) =
00:00:08 verbose #362 > >     (tokens |> rust.f64) / 1_000_000_000_000_000_000_000_000 * near_price_in_usd
00:00:08 verbose #363 > > ()
00:00:08 verbose #364 > >
00:00:08 verbose #365 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 verbose #366 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 verbose #367 > > │ ### total_gas_burnt                                                          │
00:00:08 verbose #368 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 verbose #369 > >
00:00:08 verbose #370 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #371 > > inl total_gas_burnt (result : execution_final_result) : gas =
00:00:08 verbose #372 > >     !\\(result, $'"$0.total_gas_burnt"')
00:00:08 verbose #373 > >
00:00:08 verbose #374 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 verbose #375 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 verbose #376 > > │ ### as_gas                                                                   │
00:00:08 verbose #377 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 verbose #378 > >
00:00:08 verbose #379 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #380 > > inl as_gas (gas : gas) : u64 =
00:00:08 verbose #381 > >     !\\(gas, $'"$0.as_gas()"')
00:00:08 verbose #382 > >
00:00:08 verbose #383 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 verbose #384 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 verbose #385 > > │ ### as_yoctonear                                                             │
00:00:08 verbose #386 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 verbose #387 > >
00:00:08 verbose #388 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #389 > > inl as_yoctonear (gas : near_token) : rust.u128 =
00:00:08 verbose #390 > >     !\\(gas, $'"$0.as_yoctonear()"')
00:00:08 verbose #391 > >
00:00:08 verbose #392 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 verbose #393 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 verbose #394 > > │ ### outcomes                                                                 │
00:00:08 verbose #395 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 verbose #396 > >
00:00:08 verbose #397 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #398 > > inl outcomes (result : execution_final_result) : am'.vec (rust.ref
00:00:08 verbose #399 > > execution_outcome) =
00:00:08 verbose #400 > >     inl result = result |> rust.emit
00:00:08 verbose #401 > >     !\($'"!result.outcomes()"')
00:00:08 verbose #402 > >
00:00:08 verbose #403 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 verbose #404 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 verbose #405 > > │ ### is_success                                                               │
00:00:08 verbose #406 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 verbose #407 > >
00:00:08 verbose #408 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #409 > > inl is_success (outcome : execution_outcome) : bool =
00:00:08 verbose #410 > >     !\\(outcome, $'"$0.is_success()"')
00:00:08 verbose #411 > >
00:00:08 verbose #412 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 verbose #413 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 verbose #414 > > │ ### gas_burnt                                                                │
00:00:08 verbose #415 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 verbose #416 > >
00:00:08 verbose #417 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #418 > > inl gas_burnt (outcome : execution_outcome) : gas =
00:00:08 verbose #419 > >     !\\(outcome, $'"$0.gas_burnt"')
00:00:08 verbose #420 > >
00:00:08 verbose #421 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 verbose #422 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 verbose #423 > > │ ### tokens_burnt                                                             │
00:00:08 verbose #424 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 verbose #425 > >
00:00:08 verbose #426 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #427 > > inl tokens_burnt (outcome : execution_outcome) : near_token =
00:00:08 verbose #428 > >     !\\(outcome, $'"$0.tokens_burnt"')
00:00:08 verbose #429 > >
00:00:08 verbose #430 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 verbose #431 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 verbose #432 > > │ ### print_usd                                                                │
00:00:08 verbose #433 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 verbose #434 > >
00:00:08 verbose #435 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #436 > > inl print_usd retry (result : execution_final_result) =
00:00:08 verbose #437 > >     inl total_gas_burnt = result |> total_gas_burnt |> as_gas
00:00:08 verbose #438 > >     inl total_gas_burnt_usd = total_gas_burnt |> gas_to_usd
00:00:08 verbose #439 > >
00:00:08 verbose #440 > >     trace Debug
00:00:08 verbose #441 > >         fun () => "spiral_wasm.print_usd"
00:00:08 verbose #442 > >         fun () => { retry total_gas_burnt_usd total_gas_burnt }
00:00:08 verbose #443 > >
00:00:08 verbose #444 > >     result
00:00:08 verbose #445 > >     |> outcomes
00:00:08 verbose #446 > >     |> iter.into_iter
00:00:08 verbose #447 > >     |> iter.cloned
00:00:08 verbose #448 > >     |> iter.for_each fun outcome =>
00:00:08 verbose #449 > >         inl is_success = outcome |> is_success
00:00:08 verbose #450 > >
00:00:08 verbose #451 > >         inl gas_burnt = outcome |> gas_burnt |> as_gas
00:00:08 verbose #452 > >         inl gas_burnt_usd = gas_burnt |> gas_to_usd
00:00:08 verbose #453 > >
00:00:08 verbose #454 > >         inl tokens_burnt = outcome |> tokens_burnt |> as_yoctonear
00:00:08 verbose #455 > >         inl tokens_burnt_usd = tokens_burnt |> tokens_to_usd
00:00:08 verbose #456 > >
00:00:08 verbose #457 > >         trace Debug
00:00:08 verbose #458 > >             fun () => "spiral_wasm.print_usd / outcome"
00:00:08 verbose #459 > >             fun () => { is_success gas_burnt_usd tokens_burnt_usd gas_burnt
00:00:08 verbose #460 > > tokens_burnt }
00:00:08 verbose #461 > >
00:00:08 verbose #462 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 verbose #463 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 verbose #464 > > │ ### run                                                                      │
00:00:08 verbose #465 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 verbose #466 > >
00:00:08 verbose #467 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #468 > > let rec run (matches : runtime.arg_matches) : async.future_pin (resultm.result'
00:00:08 verbose #469 > > u8 resultm.anyhow_error) =
00:00:08 verbose #470 > >     fun () =>
00:00:08 verbose #471 > >         inl wasm_path =
00:00:08 verbose #472 > >             matches
00:00:08 verbose #473 > >             |> runtime.matches_get_one (get_args () .wasm |> fst)
00:00:08 verbose #474 > >             |> optionm'.unbox
00:00:08 verbose #475 > >             |> optionm.value
00:00:08 verbose #476 > >             |> sm'.from_std_string
00:00:08 verbose #477 > >
00:00:08 verbose #478 > >         trace Verbose (fun () => "spiral_wasm.run") fun () => { wasm_path }
00:00:08 verbose #479 > >
00:00:08 verbose #480 > >         inl wasm = wasm_path |> file_system.read |> resultm.try'
00:00:08 verbose #481 > >
00:00:08 verbose #482 > >         let fn (retry : u8) =
00:00:08 verbose #483 > >             fun () =>
00:00:08 verbose #484 > >                 inl worker = sandbox_worker () |> resultm.try'
00:00:08 verbose #485 > >
00:00:08 verbose #486 > >                 trace Verbose (fun () => "spiral_wasm.run") fun () => { retry
00:00:08 verbose #487 > > worker }
00:00:08 verbose #488 > >
00:00:08 verbose #489 > >                 inl contract = worker |> dev_deploy wasm |> async.await |>
00:00:08 verbose #490 > > resultm.try'
00:00:08 verbose #491 > >
00:00:08 verbose #492 > >                 trace Verbose (fun () => "spiral_wasm.run") fun () => { retry
00:00:08 verbose #493 > > contract }
00:00:08 verbose #494 > >
00:00:08 verbose #495 > >                 inl result = contract |> call "state_main" |> transact |>
00:00:08 verbose #496 > > async.await |> resultm.try'
00:00:08 verbose #497 > >
00:00:08 verbose #498 > >                 trace Verbose (fun () => "spiral_wasm.run") fun () => { retry
00:00:08 verbose #499 > > result }
00:00:08 verbose #500 > >
00:00:08 verbose #501 > >                 result |> logs |> am'.vec_map sm'.ref_to_std_string |>
00:00:08 verbose #502 > > am'.vec_for_each console.write_line
00:00:08 verbose #503 > >
00:00:08 verbose #504 > >                 result |> print_usd retry
00:00:08 verbose #505 > >
00:00:08 verbose #506 > >                 inl result2 = result |> into_result
00:00:08 verbose #507 > >
00:00:08 verbose #508 > >                 trace Verbose (fun () => "spiral_wasm.run") fun () => { result2
00:00:08 verbose #509 > > }
00:00:08 verbose #510 > >
00:00:08 verbose #511 > >                 inl receipt_failures = result |> receipt_failures
00:00:08 verbose #512 > >                 inl receipt_failures_len = receipt_failures |> am'.vec_len |>
00:00:08 verbose #513 > > i32
00:00:08 verbose #514 > >
00:00:08 verbose #515 > >                 trace Verbose (fun () => "spiral_wasm.run") fun () => {
00:00:08 verbose #516 > > receipt_failures_len receipt_failures }
00:00:08 verbose #517 > >
00:00:08 verbose #518 > >                 inl receipt_outcomes = result |> receipt_outcomes
00:00:08 verbose #519 > >                 inl receipt_outcomes_len = receipt_outcomes |> am'.vec_len |>
00:00:08 verbose #520 > > i32
00:00:08 verbose #521 > >
00:00:08 verbose #522 > >                 trace Verbose (fun () => "spiral_wasm.run") fun () => {
00:00:08 verbose #523 > > receipt_outcomes_len receipt_outcomes }
00:00:08 verbose #524 > >
00:00:08 verbose #525 > >                 inl json = result |> json
00:00:08 verbose #526 > >
00:00:08 verbose #527 > >                 trace Verbose (fun () => "spiral_wasm.run") fun () => { json }
00:00:08 verbose #528 > >
00:00:08 verbose #529 > >                 inl borsh = result |> borsh
00:00:08 verbose #530 > >
00:00:08 verbose #531 > >                 trace Verbose (fun () => "spiral_wasm.run") fun () => { borsh }
00:00:08 verbose #532 > >
00:00:08 verbose #533 > >                 inl error = { receipt_failures receipt_outcomes_len retry } |>
00:00:08 verbose #534 > > sm'.format
00:00:08 verbose #535 > >                 if receipt_failures_len > 0
00:00:08 verbose #536 > >                 then (Ok (Some error) : _ _ resultm.anyhow_error) |> resultm.box
00:00:08 verbose #537 > >                 elif receipt_outcomes_len > 1
00:00:08 verbose #538 > >                 then (Ok None : _ _ resultm.anyhow_error) |> resultm.box
00:00:08 verbose #539 > >                 else error |> resultm.anyhow_error |> resultm.err
00:00:08 verbose #540 > >             |> async.new_future_move
00:00:08 verbose #541 > >
00:00:08 verbose #542 > >         inl rec loop (retry : u8) =
00:00:08 verbose #543 > >             inl max = 30
00:00:08 verbose #544 > >             inl init () =
00:00:08 verbose #545 > >                 fun () =>
00:00:08 verbose #546 > >                     retry
00:00:08 verbose #547 > >                 |> async.new_future_move
00:00:08 verbose #548 > >             if retry >= max then
00:00:08 verbose #549 > >                 fun () =>
00:00:08 verbose #550 > >                     init ()
00:00:08 verbose #551 > >                     |> async.await
00:00:08 verbose #552 > >                     |> Error
00:00:08 verbose #553 > >                 |> async.new_future_move
00:00:08 verbose #554 > >             else
00:00:08 verbose #555 > >                 inl result =
00:00:08 verbose #556 > >                     fn retry
00:00:08 verbose #557 > >                     |> async.await
00:00:08 verbose #558 > >                     |> resultm.map_error' sm'.format'
00:00:08 verbose #559 > >                     |> resultm.unbox
00:00:08 verbose #560 > >                 match result with
00:00:08 verbose #561 > >                 | Ok (None) =>
00:00:08 verbose #562 > >                     fun () =>
00:00:08 verbose #563 > >                         init ()
00:00:08 verbose #564 > >                         |> async.await
00:00:08 verbose #565 > >                         |> Ok
00:00:08 verbose #566 > >                     |> async.new_future_move
00:00:08 verbose #567 > >                 | Ok (Some error) =>
00:00:08 verbose #568 > >                     trace Critical (fun () => "spiral_wasm.run / Ok (Some
00:00:08 verbose #569 > > error)") fun () => { retry error }
00:00:08 verbose #570 > >                     fun () =>
00:00:08 verbose #571 > >                         init ()
00:00:08 verbose #572 > >                         |> async.await
00:00:08 verbose #573 > >                         |> Error
00:00:08 verbose #574 > >                     |> async.new_future_move
00:00:08 verbose #575 > >                 | Error error =>
00:00:08 verbose #576 > >                     trace Warning (fun () => "spiral_wasm.run / Error error")
00:00:08 verbose #577 > > fun () => { retry error }
00:00:08 verbose #578 > >                     loop (retry + 1)
00:00:08 verbose #579 > >         inl retries =
00:00:08 verbose #580 > >             loop 1
00:00:08 verbose #581 > >             |> async.await
00:00:08 verbose #582 > >
00:00:08 verbose #583 > >         trace Verbose (fun () => "spiral_wasm.run") fun () => { retries }
00:00:08 verbose #584 > >
00:00:08 verbose #585 > >         match retries with
00:00:08 verbose #586 > >         | Ok retries => Ok retries |> resultm.box
00:00:08 verbose #587 > >         | Error retries => { retries } |> sm'.format |> resultm.anyhow_error |>
00:00:08 verbose #588 > > resultm.err
00:00:08 verbose #589 > >
00:00:08 verbose #590 > >     |> async.new_future_move
00:00:09 verbose #591 > >
00:00:09 verbose #592 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:09 verbose #593 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:09 verbose #594 > > │ ### main                                                                     │
00:00:09 verbose #595 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:09 verbose #596 > >
00:00:09 verbose #597 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:09 verbose #598 > > ///! _
00:00:09 verbose #599 > >
00:00:09 verbose #600 > > inl main (args : array_base string) =
00:00:09 verbose #601 > >     inl command = get_command ()
00:00:09 verbose #602 > >     inl arg_matches = command |> runtime.command_get_matches
00:00:09 verbose #603 > >
00:00:09 verbose #604 > >     inl trace_level =
00:00:09 verbose #605 > >         arg_matches
00:00:09 verbose #606 > >         |> runtime.matches_get_one (get_args () .trace_level |> fst)
00:00:09 verbose #607 > >         |> optionm'.unbox
00:00:09 verbose #608 > >         |> optionm.map (
00:00:09 verbose #609 > >             sm'.from_std_string
00:00:09 verbose #610 > >             >> reflection.union_try_pick
00:00:09 verbose #611 > >         )
00:00:09 verbose #612 > >         |> optionm'.flatten
00:00:09 verbose #613 > >         |> optionm'.default_value Verbose
00:00:09 verbose #614 > >
00:00:09 verbose #615 > >     inl trace_state = get_trace_state_or_init (Some trace_level)
00:00:09 verbose #616 > >
00:00:09 verbose #617 > >     trace Verbose
00:00:09 verbose #618 > >         fun () => $'$"spiral_wasm.main"'
00:00:09 verbose #619 > >         fun () => { args }
00:00:09 verbose #620 > >
00:00:09 verbose #621 > >     inl exception : bool =
00:00:09 verbose #622 > >         arg_matches
00:00:09 verbose #623 > >         |> runtime.matches_get_flag (get_args () .exception |> fst)
00:00:09 verbose #624 > >
00:00:09 verbose #625 > >     inl result =
00:00:09 verbose #626 > >         arg_matches
00:00:09 verbose #627 > >         |> run
00:00:09 verbose #628 > >         |> async.block_on
00:00:09 verbose #629 > >         |> resultm.map_error' sm'.format'
00:00:09 verbose #630 > >
00:00:09 verbose #631 > >     match result |> resultm.ok' |> optionm'.unbox with
00:00:09 verbose #632 > >     | Some retries when exception => "spiral_wasm.main / exception=true" |>
00:00:09 verbose #633 > > resultm.err |> resultm.unwrap'
00:00:09 verbose #634 > >     | None when exception => ()
00:00:09 verbose #635 > >     | Some retries => retries |> ignore
00:00:09 verbose #636 > >     | None => result |> resultm.unwrap' |> ignore
00:00:09 verbose #637 > >
00:00:09 verbose #638 > >     0i32
00:00:09 verbose #639 > >
00:00:09 verbose #640 > > inl main () =
00:00:09 verbose #641 > >     $'let main args = !main args' : ()
00:00:18 verbose #642 > 00:00:18 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 31915 }
00:00:18 verbose #643 > 00:00:18   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:00:18 verbose #644 >     "nbconvert",
00:00:18 verbose #645 >     "/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb",
00:00:18 verbose #646 >     "--to",
00:00:18 verbose #647 >     "html",
00:00:18 verbose #648 >     "--HTMLExporter.theme=dark",
00:00:18 verbose #649 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:19 verbose #650 > 00:00:19 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb to html
00:00:19 verbose #651 > 00:00:19 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:19 verbose #652 > 00:00:19 verbose #7 !   validate(nb)
00:00:20 verbose #653 > 00:00:19 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:20 verbose #654 > 00:00:19 verbose #9 !   return _pygments_highlight(
00:00:20 verbose #655 > 00:00:19 verbose #10 ! [NbConvertApp] Writing 361683 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.html
00:00:20 verbose #656 > 00:00:19 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 918 }
00:00:20 verbose #657 > 00:00:19   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 918 }
00:00:20 verbose #658 > 00:00:19   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:00:20 verbose #659 >     "-c",
00:00:20 verbose #660 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:00:20 verbose #661 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:20 verbose #662 > 00:00:20 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:20 verbose #663 > 00:00:20   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:20 verbose #664 > 00:00:20   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 32892 }
00:00:20   debug #665 runtime.execute_with_options_async / { exit_code = 0; output_length = 37073 }
00:00:20   debug #1 main / executeCommand / exitCode: 0 / command: ../../../workspace/target/release/spiral_builder dib --path spiral_wasm.dib
00:00:00   debug #1 writeDibCode / output: Spi / path: spiral_wasm.dib
00:00:00   debug #2 parseDibCode / output: Spi / file: spiral_wasm.dib
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 verbose #2 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00   debug #1 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:00   debug #2 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:00   debug #3 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:00 verbose #4 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # spiral_wasm\nopen rust.rust_operators\nopen rust\nopen sm\u0027_operat...\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.spi"}} / result:
00:00:00 verbose #5 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.spi"}} / result:
00:00:01   debug #6 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:01   debug #7 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:01   debug #8 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:01   debug #9 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:02   debug #10 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:02   debug #11 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:02   debug #12 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:02   debug #13 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:03   debug #14 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:03   debug #15 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:03   debug #16 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:03   debug #17 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:04   debug #18 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:04   debug #19 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:04   debug #20 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:04   debug #21 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:05   debug #22 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:05   debug #23 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:05   debug #24 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:05   debug #25 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:06   debug #26 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:06   debug #27 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:06   debug #28 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:06   debug #29 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:07   debug #30 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:07   debug #31 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:07   debug #32 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:07   debug #33 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:08   debug #34 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:08   debug #35 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:08   debug #36 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:08   debug #37 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:09   debug #38 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:09   debug #39 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:09   debug #40 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:09   debug #41 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:09   debug #42 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
#endif
type Ref<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit...          Fable.Core.RustInterop.emitRustExpr v906 v907 
            ()
    0
let v0 : ((string []) -> int32) = closure0()
let main args = v0 args
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: spiral_wasm.spi
00:00:09   debug #43 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
#endif
type Ref<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit...          Fable.Core.RustInterop.emitRustExpr v906 v907 
            ()
    0
let v0 : ((string []) -> int32) = closure0()
let main args = v0 args
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi
00:00:09   debug #44 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:00   debug #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: spiral_wasm / hash:  / code.Length: 2206359
targetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm
Fable 4.19.3: F# to Rust compiler (status: alpha)

Thanks to the contributor! @ctaggart
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/spiral_wasm/spiral_wasm.fsproj...
target/Builder/spiral_wasm> dotnet restore spiral_wasm.fable-temp.csproj -p:FABLE_COMPILER=true -p:FABLE_COMPILER_4=true -p:FABLE_COMPILER_RUST=true -p:_LINUX=true
  Determining projects to restore...
  Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
  The last full restore is still up to date. Nothing left to do.
  Total time taken: 0 milliseconds
  Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
  Restoring /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/spiral_wasm.fable-temp.csproj
  Starting restore process.
  Total time taken: 0 milliseconds
  Restored /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/spiral_wasm.fable-temp.csproj (in 286 ms).
target/Builder/spiral_wasm> dotnet restore /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/spiral_wasm.fsproj
  Determining projects to restore...
  Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
  The last full restore is still up to date. Nothing left to do.
  Total time taken: 0 milliseconds
  Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
  Restoring /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/spiral_wasm.fsproj
  Starting restore process.
  Total time taken: 0 milliseconds
  Restored /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/spiral_wasm.fsproj (in 283 ms).
Project and references (14 source files) parsed in 5995ms

Started Fable compilation...

Fable compilation finished in 13535ms

./lib/spiral/common.fsx(1425,0): (1425,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/async_.fsx(76,0): (76,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/sm.fsx(414,0): (414,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/threading.fsx(145,0): (145,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/date_time.fsx(1012,0): (1012,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/crypto.fsx(1326,0): (1326,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/platform.fsx(104,0): (104,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/networking.fsx(4626,0): (4626,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/trace.fsx(1524,0): (1524,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/runtime.fsx(7219,0): (7219,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/file_system.fsx(11479,0): (11479,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
 Downloading crates ...
  Downloaded async-stream-impl v0.3.5
  Downloaded darling_macro v0.20.10
  Downloaded near-abi v0.4.3
  Downloaded urlencoding v2.1.3
  Downloaded strum_macros v0.24.3
  Downloaded smart-default v0.6.0
  Downloaded signal-hook-mio v0.2.4
  Downloaded rustix v0.38.35
  Downloaded prost-derive v0.12.6
  Downloaded schemars v0.8.21
  Downloaded serde_derive_internals v0.29.1
  Downloaded strum v0.24.1
  Downloaded slipped10 v0.4.6
  Downloaded prometheus v0.13.4
  Downloaded signal-hook v0.3.17
  Downloaded tracing-indicatif v0.3.6
  Downloaded symbolic-debuginfo v8.8.0
  Downloaded symbolic-common v8.8.0
  Downloaded portable-atomic v1.7.0
  Downloaded serde_with v3.9.0
  Downloaded tokio-io-timeout v1.2.0
  Downloaded term v0.7.0
  Downloaded nix v0.26.4
  Downloaded zvariant v3.15.2
  Downloaded tracing-appender v0.2.3
  Downloaded smawk v0.3.2
  Downloaded serde_yaml v0.9.34+deprecated
  Downloaded near-cli-rs v0.11.1
  Downloaded scroll v0.10.2
  Downloaded prettytable v0.10.0
  Downloaded opentelemetry-semantic-conventions v0.14.0
  Downloaded num-complex v0.4.6
  Downloaded num v0.4.3
  Downloaded near-parameters v0.23.0
  Downloaded near-jsonrpc-primitives v0.23.0
  Downloaded near-gas v0.2.5
  Downloaded memmap2 v0.5.10
  Downloaded sha3 v0.10.8
  Downloaded jsonptr v0.4.7
  Downloaded interactive-clap v0.2.10
  Downloaded indicatif v0.17.8
  Downloaded indexmap v1.9.3
  Downloaded gimli v0.26.2
  Downloaded scroll_derive v0.11.1
  Downloaded proc-macro-crate v1.3.1
  Downloaded owo-colors v3.5.0
  Downloaded ordered-float v4.2.2
  Downloaded opentelemetry-otlp v0.15.0
  Downloaded near-crypto v0.23.0
  Downloaded zvariant_utils v1.0.1
  Downloaded hyper-timeout v0.4.1
  Downloaded rustix v0.37.27
  Downloaded reed-solomon-erasure v4.0.2
  Downloaded plain v0.2.3
  Downloaded new_debug_unreachable v1.0.6
  Downloaded near_schemafy_core v0.7.0
  Downloaded near-sandbox-utils v0.8.0
  Downloaded near-rpc-error-core v0.23.0
  Downloaded near-primitives v0.23.0
  Downloaded near-async-derive v0.23.0
  Downloaded near-account-id v1.0.0
  Downloaded near-abi-client-impl v0.1.1
  Downloaded zbus_names v2.6.1
  Downloaded zbus v3.15.2
  Downloaded xdg-home v1.3.0
  Downloaded wasmparser v0.83.0
  Downloaded vt100 v0.15.2
  Downloaded keyring v2.3.3
  Downloaded hmac v0.9.0
  Downloaded num-rational v0.4.2
  Downloaded near-token v0.2.1
  Downloaded near-stdx v0.23.0
  Downloaded wasmparser v0.211.1
  Downloaded ureq v2.10.1
  Downloaded unicode-normalization v0.1.22
  Downloaded names v0.14.0
  Downloaded linux-keyutils v0.2.4
  Downloaded json-patch v2.0.0
  Downloaded io-lifetimes v1.0.11
  Downloaded goblin v0.5.4
  Downloaded futures-lite v1.13.0
  Downloaded fluent-uri v0.1.4
  Downloaded fastrand v1.9.0
  Downloaded enumflags2 v0.7.10
  Downloaded encode_unicode v1.0.0
  Downloaded ed25519-dalek v2.1.1
  Downloaded easy-ext v1.0.2
  Downloaded dirs v5.0.1
  Downloaded debugid v0.7.3
  Downloaded darling_core v0.20.10
  Downloaded rust_decimal v1.36.0
  Downloaded protobuf v2.28.0
  Downloaded pdb v0.7.0
  Downloaded opentelemetry_sdk v0.22.1
  Downloaded opentelemetry-proto v0.5.0
  Downloaded opentelemetry v0.22.0
  Downloaded num-bigint v0.3.3
  Downloaded near-workspaces v0.11.1
  Downloaded near-jsonrpc-client v0.10.1
  Downloaded near-chain-configs v0.23.0
  Downloaded near-async v0.23.0
  Downloaded zvariant_derive v3.15.2
  Downloaded secp256k1-sys v0.8.1
  Downloaded zip v0.5.13
  Downloaded zbus_macros v3.15.2
  Downloaded xml-rs v0.8.21
  Downloaded uuid v0.8.2
  Downloaded unsafe-libyaml v0.2.11
  Downloaded uint v0.9.5
  Downloaded ident_case v1.0.1
  Downloaded event-listener v2.5.3
  Downloaded dyn-clone v1.0.17
  Downloaded derive_arbitrary v1.3.2
  Downloaded curve25519-dalek-derive v0.1.1
  Downloaded crypto-mac v0.9.1
  Downloaded crossterm v0.25.0
  Downloaded colored v2.1.0
  Downloaded color-eyre v0.6.3
  Downloaded borsh-derive v1.5.1
  Downloaded bitcoin_hashes v0.11.0
  Downloaded binary-install v0.2.0
  Downloaded serde_with_macros v3.9.0
  Downloaded serde_repr v0.1.19
  Downloaded secret-service v3.1.0
  Downloaded secp256k1 v0.27.0
  Downloaded scroll v0.11.0
  Downloaded schemars_derive v0.8.21
  Downloaded prost v0.12.6
  Downloaded prettyplease v0.1.25
  Downloaded polling v2.8.0
  Downloaded ordered-stream v0.2.0
  Downloaded num-rational v0.3.2
  Downloaded nom-supreme v0.6.0
  Downloaded near_schemafy_lib v0.7.0
  Downloaded near-primitives-core v0.23.0
  Downloaded near-performance-metrics v0.23.0
  Downloaded near-o11y v0.23.0
  Downloaded near-fmt v0.23.0
  Downloaded unicode-linebreak v0.1.5
  Downloaded cargo-near v0.6.4
  Downloaded bs58 v0.4.0
  Downloaded block-buffer v0.9.0
  Downloaded async-trait v0.1.81
  Downloaded async-stream v0.3.5
  Downloaded async-io v1.13.0
  Downloaded shellexpand v3.1.0
  Downloaded tracing-opentelemetry v0.23.0
  Downloaded tracing-error v0.2.0
  Downloaded tonic v0.11.0
  Downloaded tokio-util v0.7.11
  Downloaded textwrap v0.16.1
  Downloaded smart-default v0.7.1
  Downloaded proc-macro-crate v3.2.0
  Downloaded primitive-types v0.10.1
  Downloaded opaque-debug v0.3.1
  Downloaded newline-converter v0.3.0
  Downloaded near-time v0.23.0
  Downloaded near-socialdb-client v0.3.2
  Downloaded near-sandbox-utils v0.9.0
  Downloaded near-rpc-error-macro v0.23.0
  Downloaded near-config-utils v0.23.0
  Downloaded near-abi-client-macros v0.1.1
  Downloaded waker-fn v1.2.0
  Downloaded uriparse v0.6.4
  Downloaded near-abi-client v0.1.1
  Downloaded linux-raw-sys v0.3.8
  Downloaded csv v1.3.0
  Downloaded axum-core v0.3.4
  Downloaded string_cache v0.8.7
  Downloaded sha2 v0.9.9
  Downloaded gimli v0.28.1
  Downloaded curve25519-dalek v4.1.3
  Downloaded color-spantrace v0.2.1
  Downloaded bip39 v2.0.0
  Downloaded backtrace v0.3.71
  Downloaded axum v0.6.20
  Downloaded keccak v0.1.5
  Downloaded json_comments v0.2.2
  Downloaded joinery v2.1.0
  Downloaded inquire v0.7.5
  Downloaded indexmap v2.4.0
  Downloaded indent_write v2.2.0
  Downloaded hyper-rustls v0.27.2
  Downloaded enum-map-derive v0.17.0
  Downloaded elementtree v0.7.0
  Downloaded easy-ext v0.2.9
  Downloaded derivative v2.2.0
  Downloaded cc v1.1.15
  Downloaded borsh v1.5.1
  Downloaded blake2 v0.10.6
  Downloaded async-lock v2.8.0
  Downloaded async-executor v1.13.0
  Downloaded arbitrary v1.3.2
  Downloaded addr2line v0.21.0
  Downloaded actix v0.13.5
  Downloaded memoffset v0.7.1
  Downloaded libloading v0.8.5
  Downloaded interactive-clap-derive v0.2.10
  Downloaded hyper-tls v0.6.0
  Downloaded hex v0.3.2
  Downloaded fuzzy-matcher v0.3.7
  Downloaded fs2 v0.4.3
  Downloaded fixed-hash v0.7.0
  Downloaded fallible-iterator v0.2.0
  Downloaded enumflags2_derive v0.7.10
  Downloaded enum-map v2.7.3
  Downloaded ed25519 v2.2.3
  Downloaded dmsort v1.0.2
  Downloaded digest v0.9.0
  Downloaded darling v0.20.10
  Downloaded csv-core v0.1.11
  Downloaded near-sandbox-utils v0.10.1
  Downloaded cargo-util v0.1.2
  Downloaded bs58 v0.5.1
  Downloaded async-fs v1.6.0
  Downloaded actix_derive v0.6.1
  Downloaded actix-macros v0.2.4
  Downloaded crypto-hash v0.3.4
  Downloaded convert_case v0.5.0
  Downloaded brownstone v1.1.0
  Downloaded actix-rt v2.10.0
  Downloaded Inflector v0.11.4
  Downloaded async-broadcast v0.5.1
  Downloaded openssl-src v300.3.1+3.3.1
   Compiling libc v0.2.158
   Compiling version_check v0.9.5
   Compiling serde v1.0.209
   Compiling syn v2.0.76
   Compiling shlex v1.3.0
   Compiling once_cell v1.19.0
   Compiling generic-array v0.14.7
   Compiling jobserver v0.1.32
   Compiling byteorder v1.5.0
   Compiling cc v1.1.15
   Compiling smallvec v1.13.2
   Compiling pkg-config v0.3.30
   Compiling getrandom v0.2.15
   Compiling syn v1.0.109
   Compiling parking_lot_core v0.9.10
   Compiling log v0.4.22
   Compiling parking_lot v0.12.3
   Compiling signal-hook-registry v1.4.2
   Compiling rand_core v0.6.4
   Compiling tracing-core v0.1.32
   Compiling futures-sink v0.3.30
   Compiling hashbrown v0.14.5
   Compiling equivalent v1.0.1
   Compiling socket2 v0.5.7
   Compiling indexmap v2.4.0
   Compiling mio v1.0.2
   Compiling toml_datetime v0.6.8
   Compiling subtle v2.6.1
   Compiling crypto-common v0.1.6
   Compiling futures-channel v0.3.30
   Compiling num-traits v0.2.19
   Compiling anyhow v1.0.86
   Compiling block-buffer v0.10.4
   Compiling proc-macro-error-attr v1.0.4
   Compiling fnv v1.0.7
   Compiling digest v0.10.7
   Compiling proc-macro-error v1.0.4
   Compiling ahash v0.8.11
   Compiling serde_derive v1.0.209
   Compiling zerocopy-derive v0.7.35
   Compiling tokio-macros v2.4.0
   Compiling tracing-attributes v0.1.27
   Compiling zerocopy v0.7.35
   Compiling tokio v1.40.0
   Compiling tracing v0.1.40
   Compiling futures-macro v0.3.30
   Compiling ppv-lite86 v0.2.20
   Compiling futures-util v0.3.30
   Compiling zstd-sys v2.0.13+zstd.1.5.6
   Compiling crossbeam-utils v0.8.20
   Compiling rand_chacha v0.3.1
   Compiling bitflags v2.6.0
   Compiling cfg_aliases v0.2.1
   Compiling lazy_static v1.5.0
   Compiling rand v0.8.5
   Compiling winnow v0.6.18
   Compiling thiserror-impl v1.0.63
   Compiling toml_edit v0.22.20
   Compiling rustversion v1.0.17
   Compiling thiserror v1.0.63
   Compiling syn_derive v0.1.8
   Compiling serde_json v1.0.127
   Compiling tokio-util v0.7.11
   Compiling sha2 v0.10.8
   Compiling semver v1.0.23
   Compiling proc-macro-crate v3.2.0
   Compiling percent-encoding v2.3.1
   Compiling borsh v1.5.1
   Compiling bitflags v1.3.2
   Compiling num-integer v0.1.46
   Compiling httparse v1.9.4
   Compiling hex v0.4.3
   Compiling ring v0.17.8
   Compiling tower-service v0.3.3
   Compiling cfg-if v1.0.0
   Compiling try-lock v0.2.5
   Compiling want v0.3.1
   Compiling pin-project-internal v1.1.5
   Compiling async-trait v0.1.81
   Compiling borsh-derive v1.5.1
   Compiling indexmap v1.9.3
   Compiling memchr v2.7.4
   Compiling typenum v1.17.0
   Compiling static_assertions v1.1.0
   Compiling pin-project v1.1.5
   Compiling http v0.2.12
   Compiling thread_local v1.1.8
   Compiling powerfmt v0.2.0
   Compiling tower-layer v0.3.3
   Compiling regex-syntax v0.6.29
   Compiling hashbrown v0.12.3
   Compiling deranged v0.3.11
   Compiling openssl-src v300.3.1+3.3.1
   Compiling num_cpus v1.16.0
   Compiling regex-automata v0.1.10
   Compiling time-core v0.1.2
   Compiling num-conv v0.1.0
   Compiling overload v0.1.1
   Compiling vcpkg v0.2.15
   Compiling openssl-sys v0.9.103
   Compiling matchers v0.1.0
   Compiling nu-ansi-term v0.46.0
   Compiling time v0.3.36
   Compiling futures-executor v0.3.30
   Compiling tower v0.4.13
   Compiling http-body v0.4.6
   Compiling rustc_version v0.4.1
   Compiling crossbeam-channel v0.5.13
   Compiling sharded-slab v0.1.7
   Compiling serde_repr v0.1.19
   Compiling tracing-log v0.2.0
   Compiling bzip2-sys v0.1.11+1.0.8
   Compiling num-bigint v0.3.3
   Compiling base64 v0.21.7
   Compiling zstd-safe v5.0.2+zstd.1.5.2
   Compiling tracing-subscriber v0.3.18
   Compiling curve25519-dalek v4.1.3
   Compiling h2 v0.3.26
   Compiling axum-core v0.3.4
   Compiling num-rational v0.3.2
   Compiling either v1.13.0
   Compiling crunchy v0.2.2
   Compiling tinyvec_macros v0.1.1
   Compiling httpdate v1.0.3
   Compiling base64 v0.22.1
   Compiling mime v0.3.17
   Compiling convert_case v0.4.0
   Compiling hyper v0.14.30
   Compiling derive_more v0.99.18
   Compiling tinyvec v1.8.0
   Compiling itertools v0.12.1
   Compiling near-account-id v1.0.0
   Compiling aho-corasick v1.1.3
   Compiling axum v0.6.20
   Compiling tokio-stream v0.1.15
   Compiling enum-map-derive v0.17.0
   Compiling derive_arbitrary v1.3.2
   Compiling curve25519-dalek-derive v0.1.1
   Compiling secp256k1-sys v0.8.1
   Compiling urlencoding v2.1.3
   Compiling rustls-pki-types v1.8.0
   Compiling heck v0.4.1
   Compiling rustls v0.23.12
   Compiling schemars v0.8.21
   Compiling signature v2.2.0
   Compiling bs58 v0.4.0
   Compiling regex-syntax v0.8.4
   Compiling ed25519 v2.2.3
   Compiling strum_macros v0.24.3
   Compiling regex-automata v0.4.7
   Compiling opentelemetry v0.22.0
   Compiling arbitrary v1.3.2
   Compiling enum-map v2.7.3
   Compiling prost-derive v0.12.6
   Compiling unicode-normalization v0.1.22
   Compiling concurrent-queue v2.5.0
   Compiling tokio-io-timeout v1.2.0
   Compiling ordered-float v4.2.2
   Compiling async-stream-impl v0.3.5
   Compiling serde_derive_internals v0.29.1
   Compiling block-padding v0.3.3
   Compiling ident_case v1.0.1
   Compiling matchit v0.7.3
   Compiling openssl v0.10.66
   Compiling sync_wrapper v0.1.2
   Compiling foreign-types-shared v0.1.1
   Compiling strsim v0.11.1
   Compiling glob v0.3.1
   Compiling opentelemetry_sdk v0.22.1
   Compiling darling_core v0.20.10
   Compiling schemars_derive v0.8.21
   Compiling foreign-types v0.3.2
   Compiling async-stream v0.3.5
   Compiling inout v0.1.3
   Compiling hyper-timeout v0.4.1
   Compiling uint v0.9.5
   Compiling prost v0.12.6
   Compiling near-primitives-core v0.23.0
   Compiling regex v1.10.6
   Compiling ed25519-dalek v2.1.1
   Compiling strum v0.24.1
   Compiling fixed-hash v0.7.0
   Compiling form_urlencoded v1.2.1
   Compiling openssl-macros v0.1.1
   Compiling http v1.1.0
   Compiling json_comments v0.2.2
   Compiling fastrand v2.1.1
   Compiling unicode-bidi v0.3.15
   Compiling rustix v0.38.35
   Compiling protobuf v2.28.0
   Compiling winnow v0.5.40
   Compiling idna v0.5.0
   Compiling near-config-utils v0.23.0
   Compiling tonic v0.11.0
   Compiling primitive-types v0.10.1
   Compiling toml_edit v0.19.15
   Compiling secp256k1 v0.27.0
   Compiling cipher v0.4.4
   Compiling darling_macro v0.20.10
   Compiling actix-rt v2.10.0
   Compiling actix-macros v0.2.4
   Compiling actix_derive v0.6.1
   Compiling blake2 v0.10.6
   Compiling hmac v0.12.1
   Compiling arrayvec v0.7.6
   Compiling zstd-safe v7.2.1
   Compiling near-stdx v0.23.0
   Compiling prometheus v0.13.4
   Compiling adler2 v2.0.0
   Compiling heck v0.5.0
   Compiling linux-raw-sys v0.4.14
   Compiling clap_builder v4.5.15
   Compiling clap_derive v4.5.13
   Compiling miniz_oxide v0.8.0
   Compiling near-crypto v0.23.0
   Compiling actix v0.13.5
   Compiling darling v0.20.10
   Compiling proc-macro-crate v1.3.1
   Compiling opentelemetry-proto v0.5.0
   Compiling url v2.5.2
   Compiling http-body v1.0.1
   Compiling event-listener v5.3.1
   Compiling futures v0.3.30
   Compiling sha1 v0.10.6
   Compiling zvariant_utils v1.0.1
   Compiling crc32fast v1.4.2
   Compiling reed-solomon-erasure v4.0.2
   Compiling opentelemetry-semantic-conventions v0.14.0
   Compiling unsafe-libyaml v0.2.11
   Compiling native-tls v0.2.12
   Compiling unicode-width v0.1.13
   Compiling cpufeatures v0.2.13
   Compiling io-lifetimes v1.0.11
   Compiling event-listener v2.5.3
   Compiling serde_yaml v0.9.34+deprecated
   Compiling opentelemetry-otlp v0.15.0
   Compiling chrono v0.4.38
   Compiling flate2 v1.0.33
   Compiling event-listener-strategy v0.5.2
   Compiling serde_with_macros v3.9.0
   Compiling clap v4.5.16
   Compiling aes v0.8.4
   Compiling h2 v0.4.6
   Compiling tracing-opentelemetry v0.23.0
   Compiling tracing-appender v0.2.3
   Compiling near-time v0.23.0
   Compiling near-rpc-error-core v0.23.0
   Compiling enumflags2_derive v0.7.10
   Compiling dirs-sys-next v0.1.2
   Compiling futures-lite v2.3.0
   Compiling polling v2.8.0
   Compiling memoffset v0.7.1
   Compiling ryu v1.0.18
   Compiling untrusted v0.9.0
   Compiling siphasher v0.3.11
   Compiling waker-fn v1.2.0
   Compiling itoa v1.0.11
   Compiling spin v0.9.8
   Compiling rustix v0.37.27
   Compiling fastrand v1.9.0
   Compiling dyn-clone v1.0.17
   Compiling openssl-probe v0.1.5
   Compiling keccak v0.1.5
   Compiling sha3 v0.10.8
   Compiling futures-lite v1.13.0
   Compiling itertools v0.10.5
   Compiling dirs-next v2.0.0
   Compiling hyper v1.4.1
   Compiling enumflags2 v0.7.10
   Compiling near-rpc-error-macro v0.23.0
   Compiling near-o11y v0.23.0
   Compiling zstd v0.13.2
   Compiling serde_with v3.9.0
   Compiling async-channel v2.3.1
   Compiling near-parameters v0.23.0
   Compiling async-lock v2.8.0
   Compiling zvariant_derive v3.15.2
   Compiling near-performance-metrics v0.23.0
   Compiling piper v0.2.4
   Compiling near-fmt v0.23.0
   Compiling bytesize v1.3.0
   Compiling smart-default v0.6.0
   Compiling near-async-derive v0.23.0
   Compiling filetime v0.2.25
   Compiling async-io v1.13.0
   Compiling async-fs v1.6.0
   Compiling proc-macro2 v1.0.86
   Compiling linux-raw-sys v0.3.8
   Compiling unicode-ident v1.0.12
   Compiling signal-hook v0.3.17
   Compiling base64ct v1.6.0
   Compiling easy-ext v0.2.9
   Compiling near-primitives v0.23.0
   Compiling password-hash v0.4.2
   Compiling near-async v0.23.0
   Compiling zvariant v3.15.2
   Compiling blocking v1.6.1
   Compiling hyper-util v0.1.7
   Compiling rustls-webpki v0.102.7
   Compiling http-body-util v0.1.2
   Compiling num-bigint v0.4.6
   Compiling interactive-clap-derive v0.2.10
   Compiling backtrace v0.3.71
   Compiling socket2 v0.4.10
   Compiling vte_generate_state_changes v0.1.2
   Compiling adler v1.0.2
   Compiling zeroize v1.8.1
   Compiling eyre v0.6.12
   Compiling gimli v0.28.1
   Compiling portable-atomic v1.7.0
   Compiling addr2line v0.21.0
   Compiling miniz_oxide v0.7.4
   Compiling vte v0.11.1
   Compiling interactive-clap v0.2.10
   Compiling num-rational v0.4.2
   Compiling near-chain-configs v0.23.0
   Compiling pbkdf2 v0.11.0
   Compiling nix v0.26.4
   Compiling zstd v0.11.2+zstd.1.5.2
   Compiling zbus_names v2.6.1
   Compiling bzip2 v0.4.4
   Compiling quote v1.0.37
   Compiling xattr v1.3.1
   Compiling async-executor v1.13.0
   Compiling webpki-roots v0.26.3
   Compiling async-broadcast v0.5.1
   Compiling zbus_macros v3.15.2
   Compiling serde_urlencoded v0.7.1
   Compiling rustls-pemfile v2.1.3
   Compiling tracing-error v0.2.0
   Compiling num-iter v0.1.45
   Compiling derivative v2.2.0
   Compiling num-complex v0.4.6
   Compiling async-recursion v1.1.1
   Compiling digest v0.9.0
   Compiling mio v0.8.11
   Compiling xdg-home v1.3.0
   Compiling ordered-stream v0.2.0
   Compiling sync_wrapper v1.0.1
   Compiling object v0.32.2
   Compiling option-ext v0.2.0
   Compiling rustc-demangle v0.1.24
   Compiling owo-colors v3.5.0
   Compiling indenter v0.3.3
   Compiling uuid v0.8.2
   Compiling ipnet v2.9.0
   Compiling radium v0.7.0
   Compiling constant_time_eq v0.1.5
   Compiling zip v0.6.6
   Compiling color-spantrace v0.2.1
   Compiling dirs-sys v0.4.1
   Compiling zbus v3.15.2
   Compiling ureq v2.10.1
   Compiling signal-hook-mio v0.2.4
   Compiling num v0.4.3
   Compiling tar v0.4.41
   Compiling near-jsonrpc-primitives v0.23.0
   Compiling vt100 v0.15.2
   Compiling Inflector v0.11.4
   Compiling uriparse v0.6.4
   Compiling near-abi v0.4.3
   Compiling near_schemafy_core v0.7.0
   Compiling phf_shared v0.10.0
   Compiling console v0.15.8
   Compiling hkdf v0.12.4
   Compiling cbc v0.1.2
   Compiling serde_spanned v0.6.7
   Compiling scroll_derive v0.11.1
   Compiling crypto-mac v0.9.1
   Compiling block-buffer v0.9.0
   Compiling fs2 v0.4.3
   Compiling csv-core v0.1.11
   Compiling is-docker v0.2.0
   Compiling is_executable v0.1.2
   Compiling minimal-lexical v0.2.1
   Compiling pin-project-lite v0.2.14
   Compiling number_prefix v0.4.0
   Compiling new_debug_unreachable v1.0.6
   Compiling stable_deref_trait v1.2.0
   Compiling iana-time-zone v0.1.60
   Compiling fallible-iterator v0.2.0
   Compiling rust_decimal v1.36.0
   Compiling unicode-segmentation v1.11.0
   Compiling bytes v1.7.1
   Compiling hex v0.3.2
   Compiling same-file v1.0.6
   Compiling tap v1.0.1
   Compiling opaque-debug v0.3.1
   Compiling near-sandbox-utils v0.8.0
   Compiling precomputed-hash v0.1.1
   Compiling camino v1.1.9
   Compiling string_cache v0.8.7
   Compiling sha2 v0.9.9
   Compiling wyz v0.5.1
   Compiling walkdir v2.5.0
   Compiling newline-converter v0.3.0
   Compiling indicatif v0.17.8
   Compiling nom v7.1.3
   Compiling binary-install v0.2.0
   Compiling csv v1.3.0
   Compiling is-wsl v0.4.0
   Compiling scroll v0.11.0
   Compiling hmac v0.9.0
   Compiling secret-service v3.1.0
   Compiling near_schemafy_lib v0.7.0
   Compiling crossterm v0.25.0
   Compiling dirs v5.0.1
   Compiling color-eyre v0.6.3
   Compiling debugid v0.7.3
   Compiling near-token v0.2.1
   Compiling term v0.7.0
   Compiling tempfile v3.12.0
   Compiling brownstone v1.1.0
   Compiling fuzzy-matcher v0.3.7
   Compiling linux-keyutils v0.2.4
   Compiling memmap2 v0.5.10
   Compiling is-terminal v0.4.13
   Compiling fxhash v0.2.1
   Compiling prettyplease v0.1.25
   Compiling xml-rs v0.8.21
   Compiling pathdiff v0.2.1
   Compiling home v0.5.9
   Compiling encode_unicode v1.0.0
   Compiling indent_write v2.2.0
   Compiling scroll v0.10.2
   Compiling bitcoin_hashes v0.11.0
   Compiling funty v2.0.0
   Compiling plain v0.2.3
   Compiling unicode-linebreak v0.1.5
   Compiling shell-escape v0.1.5
   Compiling names v0.14.0
   Compiling joinery v2.1.0
   Compiling smawk v0.3.2
   Compiling nom-supreme v0.6.0
   Compiling textwrap v0.16.1
   Compiling bip39 v2.0.0
   Compiling bitvec v1.0.1
   Compiling goblin v0.5.4
   Compiling pdb v0.7.0
   Compiling prettytable v0.10.0
   Compiling elementtree v0.7.0
   Compiling open v5.3.0
   Compiling inquire v0.7.5
   Compiling symbolic-common v8.8.0
   Compiling keyring v2.3.3
   Compiling shellexpand v3.1.0
   Compiling near-abi-client-impl v0.1.1
   Compiling slipped10 v0.4.6
   Compiling toml v0.8.19
   Compiling tracing-indicatif v0.3.6
   Compiling gimli v0.26.2
   Compiling near-gas v0.2.5
   Compiling wasmparser v0.211.1
   Compiling zip v0.5.13
   Compiling env_filter v0.1.2
   Compiling cargo-platform v0.1.8
   Compiling linked-hash-map v0.5.6
   Compiling smart-default v0.7.1
   Compiling humantime v2.1.0
   Compiling lazycell v1.3.0
   Compiling wasmparser v0.83.0
   Compiling shell-words v1.1.0
   Compiling bs58 v0.5.1
   Compiling dmsort v1.0.2
   Compiling easy-ext v1.0.2
   Compiling near-sandbox-utils v0.9.0
   Compiling env_logger v0.11.5
   Compiling symbolic-debuginfo v8.8.0
   Compiling cargo_metadata v0.18.1
   Compiling near-abi-client-macros v0.1.1
   Compiling near-workspaces v0.11.1
   Compiling jsonptr v0.4.7
   Compiling colored v2.1.0
   Compiling atty v0.2.14
   Compiling libloading v0.8.5
   Compiling near-sandbox-utils v0.10.1
   Compiling convert_case v0.5.0
   Compiling dunce v1.0.5
   Compiling json-patch v2.0.0
   Compiling near-abi-client v0.1.1
   Compiling tokio-retry v0.3.0
   Compiling uuid v1.10.0
   Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust)
   Compiling crypto-hash v0.3.4
   Compiling cargo-util v0.1.2
   Compiling tokio-native-tls v0.3.1
   Compiling hyper-tls v0.6.0
   Compiling reqwest v0.12.7
   Compiling near-jsonrpc-client v0.10.1
   Compiling near-socialdb-client v0.3.2
   Compiling near-cli-rs v0.11.1
   Compiling cargo-near v0.6.4
   Compiling spiral_wasm v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/wasm)
    Finished `release` profile [optimized] target(s) in 4m 34s
In [ ]:
{ pwsh ../lib/math/build.ps1 } | Invoke-Block
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00   debug #1 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path math.dib --retries 5; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:00 verbose #2 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "math.dib", "--retries", "5"])) }
00:00:00 verbose #3 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:00:00 verbose #4 >     "repl",
00:00:00 verbose #5 >     "--exit-after-run",
00:00:00 verbose #6 >     "--run",
00:00:00 verbose #7 >     "/home/runner/work/polyglot/polyglot/lib/math/math.dib",
00:00:00 verbose #8 >     "--output-path",
00:00:00 verbose #9 >     "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb",
00:00:00 verbose #10 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/math/math.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:01 verbose #11 > >
00:00:01 verbose #12 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:01 verbose #13 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:01 verbose #14 > > │ # math                                                                       │
00:00:01 verbose #15 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:04 verbose #16 > >
00:00:04 verbose #17 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:04 verbose #18 > > open testing
00:00:04 verbose #19 > > open rust.rust_operators
00:00:04 verbose #20 > > open rust
00:00:04 verbose #21 > >
00:00:04 verbose #22 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:04 verbose #23 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:04 verbose #24 > > │ ## complex                                                                   │
00:00:04 verbose #25 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:04 verbose #26 > >
00:00:04 verbose #27 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:04 verbose #28 > > nominal complex t =
00:00:04 verbose #29 > >     `(
00:00:04 verbose #30 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:04 verbose #31 > > Fable.Core.Emit(\"num_complex::Complex<$0>\")>]]\n#endif\ntype
00:00:04 verbose #32 > > num_complex_Complex<'T> = class end"
00:00:04 verbose #33 > >         $'' : $'num_complex_Complex<`t>'
00:00:04 verbose #34 > >     )
00:00:04 verbose #35 > >
00:00:04 verbose #36 > > inl complex forall t. ((re : t), (im : t)) : complex t =
00:00:04 verbose #37 > >     !\\((re, im), $'"num_complex::Complex::new($0, $1)"')
00:00:05 verbose #38 > >
00:00:05 verbose #39 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #40 > > //// test
00:00:05 verbose #41 > > ///! rust -d num-complex
00:00:05 verbose #42 > >
00:00:05 verbose #43 > > complex (0f64, 0f64)
00:00:05 verbose #44 > > |> sm'.format'
00:00:05 verbose #45 > > |> sm'.from_std_string
00:00:05 verbose #46 > > |> _assert_eq "0+0i"
00:00:15 verbose #47 > >
00:00:15 verbose #48 > > ╭─[ 10.72s - return value ]────────────────────────────────────────────────────╮
00:00:15 verbose #49 > > │ __assert_eq / actual: "0+0i" / expected: "0+0i"                              │
00:00:15 verbose #50 > > │                                                                              │
00:00:15 verbose #51 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 verbose #52 > >
00:00:15 verbose #53 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 verbose #54 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 verbose #55 > > │ ## re                                                                        │
00:00:15 verbose #56 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 verbose #57 > >
00:00:15 verbose #58 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 verbose #59 > > inl re forall t. (c : complex t) : t =
00:00:15 verbose #60 > >     !\\(c, $'"$0.re"')
00:00:15 verbose #61 > >
00:00:15 verbose #62 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 verbose #63 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 verbose #64 > > │ ## im                                                                        │
00:00:15 verbose #65 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 verbose #66 > >
00:00:15 verbose #67 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 verbose #68 > > inl im forall t. (c : complex t) : t =
00:00:15 verbose #69 > >     !\\(c, $'"$0.im"')
00:00:15 verbose #70 > >
00:00:15 verbose #71 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 verbose #72 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 verbose #73 > > │ ## complex_unbox                                                             │
00:00:15 verbose #74 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 verbose #75 > >
00:00:15 verbose #76 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 verbose #77 > > inl complex_unbox forall t. (c : complex t) =
00:00:15 verbose #78 > >     re c, im c
00:00:16 verbose #79 > >
00:00:16 verbose #80 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #81 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #82 > > │ ## (~.^)                                                                     │
00:00:16 verbose #83 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #84 > >
00:00:16 verbose #85 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #86 > > inl (~.^) c = complex c
00:00:16 verbose #87 > >
00:00:16 verbose #88 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #89 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #90 > > │ ## complex_eq                                                                │
00:00:16 verbose #91 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #92 > >
00:00:16 verbose #93 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #94 > > inl complex_eq forall t. (a : complex t) (b : complex t) : bool =
00:00:16 verbose #95 > >     !\\((a, b), $'"$0 == $1"')
00:00:16 verbose #96 > >
00:00:16 verbose #97 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #98 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #99 > > │ ## (.=)                                                                      │
00:00:16 verbose #100 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #101 > >
00:00:16 verbose #102 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #103 > > inl (.=) a b = complex_eq a b
00:00:16 verbose #104 > >
00:00:16 verbose #105 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #106 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #107 > > │ ## equable complex                                                           │
00:00:16 verbose #108 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #109 > >
00:00:16 verbose #110 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #111 > > instance equable complex t = complex_eq
00:00:16 verbose #112 > >
00:00:16 verbose #113 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #114 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #115 > > │ ## complex_add                                                               │
00:00:16 verbose #116 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #117 > >
00:00:16 verbose #118 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #119 > > inl complex_add forall t. (a : complex t) (b : complex t) : complex t =
00:00:16 verbose #120 > >     !\\((a, b), $'"$0 + $1"')
00:00:16 verbose #121 > >
00:00:16 verbose #122 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #123 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #124 > > │ ## (.+)                                                                      │
00:00:16 verbose #125 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #126 > >
00:00:16 verbose #127 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #128 > > inl (.+) a b = complex_add a b
00:00:16 verbose #129 > >
00:00:16 verbose #130 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #131 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #132 > > │ ## complex_sub                                                               │
00:00:16 verbose #133 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #134 > >
00:00:16 verbose #135 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #136 > > inl complex_sub forall t. (a : complex t) (b : complex t) : complex t =
00:00:16 verbose #137 > >     !\\((a, b), $'"$0 - $1"')
00:00:16 verbose #138 > >
00:00:16 verbose #139 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #140 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #141 > > │ ## (.-)                                                                      │
00:00:16 verbose #142 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #143 > >
00:00:16 verbose #144 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #145 > > inl (.-) a b = complex_sub a b
00:00:16 verbose #146 > >
00:00:16 verbose #147 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #148 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #149 > > │ ## complex_mult                                                              │
00:00:16 verbose #150 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #151 > >
00:00:16 verbose #152 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #153 > > inl complex_mult forall t. (a : complex t) (b : complex t) : complex t =
00:00:16 verbose #154 > >     !\\((a, b), $'"$0 * $1"')
00:00:16 verbose #155 > >
00:00:16 verbose #156 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #157 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #158 > > │ ## (.*)                                                                      │
00:00:16 verbose #159 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #160 > >
00:00:16 verbose #161 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #162 > > inl (.*) a b = complex_mult a b
00:00:17 verbose #163 > >
00:00:17 verbose #164 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 verbose #165 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 verbose #166 > > │ ## complex_div                                                               │
00:00:17 verbose #167 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 verbose #168 > >
00:00:17 verbose #169 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 verbose #170 > > inl complex_div forall t. (a : complex t) (b : complex t) : complex t =
00:00:17 verbose #171 > >     !\\((a, b), $'"$0 / $1"')
00:00:17 verbose #172 > >
00:00:17 verbose #173 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 verbose #174 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 verbose #175 > > │ ## (./)                                                                      │
00:00:17 verbose #176 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 verbose #177 > >
00:00:17 verbose #178 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 verbose #179 > > inl (./) a b = complex_div a b
00:00:17 verbose #180 > >
00:00:17 verbose #181 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 verbose #182 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 verbose #183 > > │ ## powc                                                                      │
00:00:17 verbose #184 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 verbose #185 > >
00:00:17 verbose #186 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 verbose #187 > > inl powc forall t. (s : complex t) (c : complex t) : complex t =
00:00:17 verbose #188 > >     !\\((c, s), $'"num_complex::Complex::powc($0, $1)"')
00:00:17 verbose #189 > >
00:00:17 verbose #190 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 verbose #191 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 verbose #192 > > │ ## (.**)                                                                     │
00:00:17 verbose #193 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 verbose #194 > >
00:00:17 verbose #195 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 verbose #196 > > inl (.**) a b = powc b a
00:00:17 verbose #197 > >
00:00:17 verbose #198 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 verbose #199 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 verbose #200 > > │ ## complex_sin                                                               │
00:00:17 verbose #201 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 verbose #202 > >
00:00:17 verbose #203 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 verbose #204 > > inl complex_sin forall t. (c : complex t) : complex t =
00:00:17 verbose #205 > >     !\\(c, $'"$0.sin()"')
00:00:17 verbose #206 > >
00:00:17 verbose #207 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 verbose #208 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 verbose #209 > > │ ## conj                                                                      │
00:00:17 verbose #210 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 verbose #211 > >
00:00:17 verbose #212 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 verbose #213 > > inl conj forall t. (c : complex t) : complex t =
00:00:17 verbose #214 > >     !\\(c, $'"$0.conj()"')
00:00:17 verbose #215 > >
00:00:17 verbose #216 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 verbose #217 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 verbose #218 > > │ ## zeta                                                                      │
00:00:17 verbose #219 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 verbose #220 > >
00:00:17 verbose #221 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:17 verbose #222 > > inl zeta log (gamma : complex f64 -> complex f64) (s : complex f64) : complex
00:00:17 verbose #223 > > f64 =
00:00:17 verbose #224 > >     inl rec zeta count gamma s =
00:00:17 verbose #225 > >         if log then
00:00:17 verbose #226 > >             !\\((count, s), $'"println\!(\\\"zeta / count: {:?} / s: {:?}\\\",
00:00:17 verbose #227 > > $0, $1)"')
00:00:17 verbose #228 > >         if re s > 1 then
00:00:17 verbose #229 > >             (.^(0, 0), (am.init 10000i32 id : a i32 _))
00:00:17 verbose #230 > >             ||> am.fold fun acc n =>
00:00:17 verbose #231 > >                 acc .+ (.^(1, 0) ./ (.^(f64 n, 0) .** s))
00:00:17 verbose #232 > >         else
00:00:17 verbose #233 > >             inl gamma_term = gamma (.^(1, 0) .- s)
00:00:17 verbose #234 > >             inl sin_term = .^(pi, 0) .* s ./ .^(2, 0) |> complex_sin
00:00:17 verbose #235 > >             inl one_minus_s = .^(1 - re s, -(im s))
00:00:17 verbose #236 > >             inl mirror_term =
00:00:17 verbose #237 > >                 if re one_minus_s <= 1
00:00:17 verbose #238 > >                 then .^(0, 0)
00:00:17 verbose #239 > >                 else
00:00:17 verbose #240 > >                     if count <= 3
00:00:17 verbose #241 > >                     then zeta (count + 1) gamma one_minus_s
00:00:17 verbose #242 > >                     else one_minus_s
00:00:17 verbose #243 > >             inl reflection_formula =
00:00:17 verbose #244 > >                 .^(2, 0) .* (.^(pi, 0) .** s) .* sin_term .* gamma_term .*
00:00:17 verbose #245 > > mirror_term
00:00:17 verbose #246 > >             reflection_formula
00:00:17 verbose #247 > >     join zeta 0i32 gamma s
00:00:18 verbose #248 > >
00:00:18 verbose #249 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 verbose #250 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 verbose #251 > > │ ## bound                                                                     │
00:00:18 verbose #252 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 verbose #253 > >
00:00:18 verbose #254 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 verbose #255 > > nominal bound t =
00:00:18 verbose #256 > >     `(
00:00:18 verbose #257 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:18 verbose #258 > > Fable.Core.Emit(\"pyo3::Bound<$0>\")>]]\n#endif\ntype pyo3_Bound<'T> = class
00:00:18 verbose #259 > > end"
00:00:18 verbose #260 > >         $'' : $'pyo3_Bound<`t>'
00:00:18 verbose #261 > >     )
00:00:18 verbose #262 > >
00:00:18 verbose #263 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 verbose #264 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 verbose #265 > > │ ## python                                                                    │
00:00:18 verbose #266 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 verbose #267 > >
00:00:18 verbose #268 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 verbose #269 > > nominal python =
00:00:18 verbose #270 > >     `(
00:00:18 verbose #271 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:18 verbose #272 > > Fable.Core.Emit(\"pyo3::Python\")>]]\n#endif\ntype pyo3_Python = class end"
00:00:18 verbose #273 > >         $'' : $'pyo3_Python'
00:00:18 verbose #274 > >     )
00:00:18 verbose #275 > >
00:00:18 verbose #276 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 verbose #277 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 verbose #278 > > │ ## pymodule                                                                  │
00:00:18 verbose #279 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 verbose #280 > >
00:00:18 verbose #281 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 verbose #282 > > nominal pymodule =
00:00:18 verbose #283 > >     `(
00:00:18 verbose #284 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:18 verbose #285 > > Fable.Core.Emit(\"pyo3::types::PyModule\")>]]\n#endif\ntype pyo3_types_PyModule
00:00:18 verbose #286 > > = class end"
00:00:18 verbose #287 > >         $'' : $'pyo3_types_PyModule'
00:00:18 verbose #288 > >     )
00:00:18 verbose #289 > >
00:00:18 verbose #290 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 verbose #291 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 verbose #292 > > │ ## pyany                                                                     │
00:00:18 verbose #293 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 verbose #294 > >
00:00:18 verbose #295 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 verbose #296 > > nominal pyany =
00:00:18 verbose #297 > >     `(
00:00:18 verbose #298 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:18 verbose #299 > > Fable.Core.Emit(\"pyo3::PyAny\")>]]\n#endif\ntype pyo3_PyAny = class end"
00:00:18 verbose #300 > >         $'' : $'pyo3_PyAny'
00:00:18 verbose #301 > >     )
00:00:18 verbose #302 > >
00:00:18 verbose #303 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 verbose #304 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 verbose #305 > > │ ## pyerr                                                                     │
00:00:18 verbose #306 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 verbose #307 > >
00:00:18 verbose #308 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 verbose #309 > > nominal pyerr =
00:00:18 verbose #310 > >     `(
00:00:18 verbose #311 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:18 verbose #312 > > Fable.Core.Emit(\"pyo3::PyErr\")>]]\n#endif\ntype pyo3_PyErr = class end"
00:00:18 verbose #313 > >         $'' : $'pyo3_PyErr'
00:00:18 verbose #314 > >     )
00:00:18 verbose #315 > >
00:00:18 verbose #316 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 verbose #317 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 verbose #318 > > │ ## eval                                                                      │
00:00:18 verbose #319 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 verbose #320 > >
00:00:18 verbose #321 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 verbose #322 > > inl module_from_code (py : python) (code : string) : _ (bound pymodule) _ =
00:00:18 verbose #323 > >     inl py = join py
00:00:18 verbose #324 > >     inl code = code |> sm'.as_str
00:00:18 verbose #325 > >     !\($'"pyo3::types::PyModule::from_code_bound(!py, !code, \\"\\", \\"\\")"')
00:00:18 verbose #326 > >     |> resultm.map_error' fun (x : pyerr) => x |> sm'.format'
00:00:18 verbose #327 > >
00:00:18 verbose #328 > > inl use_pyanymethods () =
00:00:18 verbose #329 > >     global "Fable.Core.RustInterop.emitRustExpr () \");\nuse
00:00:18 verbose #330 > > pyo3::prelude::PyAnyMethods;\n//\""
00:00:18 verbose #331 > >
00:00:18 verbose #332 > > inl getattr (attr : string) (module : bound pymodule) : _ (bound pyany) _ =
00:00:18 verbose #333 > >     inl attr = join attr
00:00:18 verbose #334 > >     inl attr = attr |> sm'.as_str
00:00:18 verbose #335 > >     inl module = join module
00:00:18 verbose #336 > >     use_pyanymethods ()
00:00:18 verbose #337 > >     !\($'"!module.getattr(!attr)"')
00:00:18 verbose #338 > >     |> resultm.map_error' fun (x : pyerr) => x |> sm'.format'
00:00:18 verbose #339 > >
00:00:18 verbose #340 > > inl call forall t. (args : t) (module : bound pyany) : _ (bound pyany) _ =
00:00:18 verbose #341 > >     inl args = join args
00:00:18 verbose #342 > >     inl module = join module
00:00:18 verbose #343 > >     !\($'"pyo3::prelude::PyAnyMethods::call(&!module, ((*!args).0, *(*!args).1),
00:00:18 verbose #344 > > None)"')
00:00:18 verbose #345 > >     |> resultm.map_error' fun (x : pyerr) => x |> sm'.format'
00:00:18 verbose #346 > >
00:00:18 verbose #347 > > inl extract forall t. (result : bound pyany) : _ t _ =
00:00:18 verbose #348 > >     inl result = join result
00:00:18 verbose #349 > >     use_pyanymethods ()
00:00:18 verbose #350 > >     !\($'"!result.extract()"')
00:00:18 verbose #351 > >     |> resultm.map_error' fun (x : pyerr) => x |> sm'.format'
00:00:18 verbose #352 > >
00:00:18 verbose #353 > > inl eval py code (args : pair bool (pair f64 f64)) : _ (_ f64) sm'.std_string =
00:00:18 verbose #354 > >     inl code =
00:00:18 verbose #355 > >         code
00:00:18 verbose #356 > >         |> module_from_code py
00:00:18 verbose #357 > >         |> resultm.unwrap'
00:00:18 verbose #358 > >     inl fn =
00:00:18 verbose #359 > >         code
00:00:18 verbose #360 > >         |> getattr "fn"
00:00:18 verbose #361 > >         |> resultm.unwrap'
00:00:18 verbose #362 > >
00:00:18 verbose #363 > >     fn
00:00:18 verbose #364 > >     |> call args
00:00:18 verbose #365 > >     |> resultm.try'
00:00:18 verbose #366 > >     |> extract
00:00:18 verbose #367 > >     |> resultm.try'
00:00:18 verbose #368 > >     |> complex
00:00:18 verbose #369 > >     |> Ok
00:00:18 verbose #370 > >     |> resultm.box
00:00:18 verbose #371 > >
00:00:18 verbose #372 > > inl call1_ log py s code =
00:00:18 verbose #373 > >     inl code = join (a code : _ i32 _) |> sm'.concat_array_trailing "\n"
00:00:18 verbose #374 > >
00:00:18 verbose #375 > >     inl s = new_pair (re s) (im s)
00:00:18 verbose #376 > >     inl args = new_pair log s
00:00:18 verbose #377 > >
00:00:18 verbose #378 > >     eval py code args
00:00:18 verbose #379 > >
00:00:18 verbose #380 > > inl call1_ log name py s line =
00:00:18 verbose #381 > >     inl s = join s
00:00:18 verbose #382 > >     join
00:00:18 verbose #383 > >         ;[[
00:00:18 verbose #384 > >             $'$"import sys"'
00:00:18 verbose #385 > >             $'$"import traceback"'
00:00:18 verbose #386 > >             $'$"import re"'
00:00:18 verbose #387 > >             $'$"count = 0"'
00:00:18 verbose #388 > >             $'$"memory_address_pattern = re.compile(r\' at 0x[[0-9a-fA-F]]+\')"'
00:00:18 verbose #389 > >             $'$"def trace_calls(frame, event, arg):"'
00:00:18 verbose #390 > >             $'$"    global count"'
00:00:18 verbose #391 > >             $'$"    count += 1"'
00:00:18 verbose #392 > >             $'$"    if count < 200:"'
00:00:18 verbose #393 > >             $'$"        try:"'
00:00:18 verbose #394 > >             $'$"            args = {{ k: v for k, v in frame.f_locals.items() if
00:00:18 verbose #395 > > frame.f_code.co_name \!= \'make_mpc\' and k not in [[\'ctx\']] and not
00:00:18 verbose #396 > > callable(v) }}"'
00:00:18 verbose #397 > >             $'$"            args_str = \', \'.join([[
00:00:18 verbose #398 > > f\\\"{{k}}={{re.sub(memory_address_pattern, \' at 0x<?>\', repr(v))}}\\\" for k,
00:00:18 verbose #399 > > v in args.items() ]])"'
00:00:18 verbose #400 > >             $'$"            print(f\\\"{{event}}({!name}) / f_code.co_name:
00:00:18 verbose #401 > > {{frame.f_code.co_name}} / f_locals: {{args_str}} / f_lineno: {{frame.f_lineno}}
00:00:18 verbose #402 > > / f_code.co_filename:
00:00:18 verbose #403 > > {{frame.f_code.co_filename.split(\'site-packages\')[[-1]]}} / f_back.f_lineno:
00:00:18 verbose #404 > > {{ \'\' if frame.f_back is None else frame.f_back.f_lineno }}
00:00:18 verbose #405 > > f_back.f_code.co_filename: {{ \'\' if frame.f_back is None else
00:00:18 verbose #406 > > frame.f_back.f_code.co_filename.split(\'site-packages\')[[-1]] }} / arg:
00:00:18 verbose #407 > > {{re.sub(memory_address_pattern, \' at 0x<?>\', repr(arg))}}\\\", flush=True)"'
00:00:18 verbose #408 > >             $'$"        except ValueError as e:"'
00:00:18 verbose #409 > >             $'$"            print(f\'{!name} / e: {{e}}\', flush=True)"'
00:00:18 verbose #410 > >             $'$"        return trace_calls"'
00:00:18 verbose #411 > >             $'$"import mpmath"'
00:00:18 verbose #412 > >             $'$"def fn(log, s):"'
00:00:18 verbose #413 > >             $'$"    global count"'
00:00:18 verbose #414 > >             $'$"    if log:"'
00:00:18 verbose #415 > >             $'$"        print(f\'{!name} / s: {{s}} / count: {{count}}\',
00:00:18 verbose #416 > > flush=True)"'
00:00:18 verbose #417 > >             $'$"    s = complex(*s)"'
00:00:18 verbose #418 > >             $'$"    try:"'
00:00:18 verbose #419 > >             $'$"        if log: sys.settrace(trace_calls)"'
00:00:18 verbose #420 > >             line
00:00:18 verbose #421 > >             $'$"        if log:"'
00:00:18 verbose #422 > >             $'$"            sys.settrace(None)"'
00:00:18 verbose #423 > >             $'$"            print(f\'{!name} / result: {{s}} / count:
00:00:18 verbose #424 > > {{count}}\', flush=True)"'
00:00:18 verbose #425 > >             $'$"    except ValueError as e:"'
00:00:18 verbose #426 > >             $'$"        if s.real == 1:"'
00:00:18 verbose #427 > >             $'$"            s = complex(float(\'inf\'), 0)"'
00:00:18 verbose #428 > >             $'$"    return (s.real, s.imag)"'
00:00:18 verbose #429 > >         ]]
00:00:18 verbose #430 > >         |> call1_ log py s
00:00:18 verbose #431 > >
00:00:18 verbose #432 > > inl gamma_ log py s =
00:00:18 verbose #433 > >     call1_ log "gamma_" py s $'$"        s = mpmath.gamma(s)"'
00:00:18 verbose #434 > >
00:00:18 verbose #435 > > inl zeta_ log py s =
00:00:18 verbose #436 > >     call1_ log "zeta_" py s $'$"        s = mpmath.zeta(s)"'
00:00:18 verbose #437 > >
00:00:18 verbose #438 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 verbose #439 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 verbose #440 > > │ ## run_test                                                                  │
00:00:18 verbose #441 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 verbose #442 > >
00:00:18 verbose #443 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 verbose #444 > > inl run_test log closure_fix (fn : (complex f64 -> complex f64) * (complex f64
00:00:18 verbose #445 > > -> complex f64) -> ()) =
00:00:18 verbose #446 > >     inl fn_ (py : python) : resultm.result' () pyerr =
00:00:18 verbose #447 > >         inl nan () =
00:00:18 verbose #448 > >             !\($'"f64::NAN"')
00:00:18 verbose #449 > >         inl gamma__ = fun (s : complex f64) =>
00:00:18 verbose #450 > >             inl result = gamma_ log py s
00:00:18 verbose #451 > >             if log then
00:00:18 verbose #452 > >                 inl s = join s
00:00:18 verbose #453 > >                 !\($'"println\!(\\\"gamma__ / s: {:?} / result: {:?}\\\", !s,
00:00:18 verbose #454 > > !result)"')
00:00:18 verbose #455 > >             result |> resultm.ok' |> optionm'.unbox |> optionm'.default_value
00:00:18 verbose #456 > > .^(nan (), nan ())
00:00:18 verbose #457 > >         inl zeta__ = fun (s : complex f64) =>
00:00:18 verbose #458 > >             inl result = zeta_ log py s
00:00:18 verbose #459 > >
00:00:18 verbose #460 > >             inl z = zeta true gamma__ s
00:00:18 verbose #461 > >
00:00:18 verbose #462 > >             if log then
00:00:18 verbose #463 > >                 inl s = join s
00:00:18 verbose #464 > >                 !\($'"println\!(\\\"zeta__ / s: {:?} / result: {:?} / z:
00:00:18 verbose #465 > > {:?}\\\", !s, !result, !z)"')
00:00:18 verbose #466 > >
00:00:18 verbose #467 > >     //             re result - re x |> abs
00:00:18 verbose #468 > >     //             |> _assert_lt 0.001
00:00:18 verbose #469 > >
00:00:18 verbose #470 > >     //             im result - im x |> abs
00:00:18 verbose #471 > >     //             |> _assert_lt 0.001
00:00:18 verbose #472 > >
00:00:18 verbose #473 > >             result |> resultm.ok' |> optionm'.unbox |> optionm'.default_value
00:00:18 verbose #474 > > .^(nan (), nan ())
00:00:18 verbose #475 > >         join fn (zeta__, gamma__)
00:00:18 verbose #476 > >
00:00:18 verbose #477 > >         Ok ()
00:00:18 verbose #478 > >         |> resultm.box
00:00:18 verbose #479 > >
00:00:18 verbose #480 > >     join
00:00:18 verbose #481 > >         !\($'"pyo3::prepare_freethreaded_python()"') : ()
00:00:18 verbose #482 > >
00:00:18 verbose #483 > >         !\($'"let __run_test = pyo3::Python::with_gil(|py| -> pyo3::PyResult<()>
00:00:18 verbose #484 > > { //"')
00:00:18 verbose #485 > >
00:00:18 verbose #486 > >         let x' = fn_ (!\($'"py"') : python)
00:00:18 verbose #487 > >         inl x' = join x'
00:00:18 verbose #488 > >
00:00:18 verbose #489 > >         inl closure_fix = 2u8, 1u8
00:00:18 verbose #490 > >         x' |> rust.fix_closure closure_fix
00:00:18 verbose #491 > >
00:00:18 verbose #492 > >         (!\($'"__run_test"') : _ () pyerr)
00:00:18 verbose #493 > >         |> resultm.unwrap'
00:00:18 verbose #494 > >
00:00:18 verbose #495 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 verbose #496 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 verbose #497 > > │ ## test_zeta_at_known_values_                                                │
00:00:18 verbose #498 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 verbose #499 > >
00:00:18 verbose #500 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 verbose #501 > > inl test_zeta_at_known_values_ log = run_test log (3u8, 2u8) fun zeta, gamma =>
00:00:18 verbose #502 > >     ;[[
00:00:18 verbose #503 > >         .^(2, 0), pi ** 2 / 6
00:00:18 verbose #504 > >         .^(-1, 0), -1 / 12
00:00:18 verbose #505 > >     ]]
00:00:18 verbose #506 > >     |> fun x => a x : _ i32 _
00:00:18 verbose #507 > >     |> am.iter fun s, e =>
00:00:18 verbose #508 > >         inl result = zeta s
00:00:18 verbose #509 > >
00:00:18 verbose #510 > >         result |> im |> _assert_eq 0
00:00:18 verbose #511 > >         re result - e |> abs |> _assert_lt 0.0001
00:00:18 verbose #512 > >
00:00:18 verbose #513 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 verbose #514 > > //// test
00:00:18 verbose #515 > > ///! rust -d num-complex pyo3
00:00:18 verbose #516 > >
00:00:18 verbose #517 > > test_zeta_at_known_values_ true
00:00:36 verbose #518 > >
00:00:36 verbose #519 > > ╭─[ 17.38s - return value ]────────────────────────────────────────────────────╮
00:00:36 verbose #520 > > │ zeta_ / s: (2.0, 0.0) / count: 0                                             │
00:00:36 verbose #521 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:00:36 verbose #522 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:                 │
00:00:36 verbose #523 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:36 verbose #524 > > │ / arg: None                                                                  │
00:00:36 verbose #525 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:00:36 verbose #526 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:                 │
00:00:36 verbose #527 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:36 verbose #528 > > │ / arg: None                                                                  │
00:00:36 verbose #529 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:00:36 verbose #530 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:            │
00:00:36 verbose #531 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:36 verbose #532 > > │ / arg: None                                                                  │
00:00:36 verbose #533 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:00:36 verbose #534 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:            │
00:00:36 verbose #535 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:36 verbose #536 > > │ / arg: None                                                                  │
00:00:36 verbose #537 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:00:36 verbose #538 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:            │
00:00:36 verbose #539 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:36 verbose #540 > > │ / arg: None                                                                  │
00:00:36 verbose #541 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │
00:00:36 verbose #542 > > │ / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py /             │
00:00:36 verbose #543 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py  │
00:00:36 verbose #544 > > │ / arg: None                                                                  │
00:00:36 verbose #545 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │
00:00:36 verbose #546 > > │ / f_linen...me: make_mpc / f_locals:  / f_lineno: 603 / f_code.co_filename:  │
00:00:36 verbose #547 > > │ /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 /                           │
00:00:36 verbose #548 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None              │
00:00:36 verbose #549 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals:  / f_lineno: 604 /       │
00:00:36 verbose #550 > > │ f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 /       │
00:00:36 verbose #551 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None              │
00:00:36 verbose #552 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals:  / f_lineno: 605 /       │
00:00:36 verbose #553 > > │ f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 /       │
00:00:36 verbose #554 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None              │
00:00:36 verbose #555 > > │ return(gamma_) / f_code.co_name: make_mpc / f_locals:  / f_lineno: 605 /     │
00:00:36 verbose #556 > > │ f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 /       │
00:00:36 verbose #557 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: mpc(real='1.0',   │
00:00:36 verbose #558 > > │ imag='0.0')                                                                  │
00:00:36 verbose #559 > > │ return(gamma_) / f_code.co_name: f / f_locals: x=mpc(real='2.0',             │
00:00:36 verbose #560 > > │ imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' / f_lineno: 1007 │
00:00:36 verbose #561 > > │ / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 25 /       │
00:00:36 verbose #562 > > │ f_back.f_code.co_filename:  / arg: mpc(real='1.0', imag='0.0')               │
00:00:36 verbose #563 > > │ gamma_ / result: (1.0 + 0.0j) / count: 140                                   │
00:00:36 verbose #564 > > │ gamma__ / s: Complex { re: 2.0, im: 0.0 } / result: Ok(Complex { re: 1.0,    │
00:00:36 verbose #565 > > │ im: 0.0 })                                                                   │
00:00:36 verbose #566 > > │ zeta / count: 1 / s: Complex { re: 2.0, im: -0.0 }                           │
00:00:36 verbose #567 > > │ zeta__ / s: Complex { re: -1.0, im: 0.0 } / result: Ok(Complex { re:         │
00:00:36 verbose #568 > > │ -0.08333333333333333, im: 0.0 }) / z: Complex { re: NaN, im: NaN }           │
00:00:36 verbose #569 > > │ __assert_eq / actual: 0.0 / expected: 0.0                                    │
00:00:36 verbose #570 > > │ __assert_lt / actual: 0.0 / expected: 0.0001                                 │
00:00:36 verbose #571 > > │                                                                              │
00:00:36 verbose #572 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 verbose #573 > >
00:00:36 verbose #574 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:36 verbose #575 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:36 verbose #576 > > │ ## test_zeta_at_2_minus2                                                     │
00:00:36 verbose #577 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 verbose #578 > >
00:00:36 verbose #579 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:36 verbose #580 > > inl test_zeta_at_2_minus2 log = run_test log (6u8, 5u8) fun zeta, gamma =>
00:00:36 verbose #581 > >     inl s = .^(2, -2)
00:00:36 verbose #582 > >     inl result = zeta s
00:00:36 verbose #583 > >
00:00:36 verbose #584 > >     (re result - 0.8673) |> abs |> _assert_lt 0.001
00:00:36 verbose #585 > >     (im result - 0.2750) |> abs |> _assert_lt 0.001
00:00:36 verbose #586 > >
00:00:36 verbose #587 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:36 verbose #588 > > //// test
00:00:36 verbose #589 > > ///! rust -d num-complex pyo3
00:00:36 verbose #590 > >
00:00:36 verbose #591 > > test_zeta_at_2_minus2 true
00:00:44 verbose #592 > >
00:00:44 verbose #593 > > ╭─[ 8.34s - return value ]─────────────────────────────────────────────────────╮
00:00:44 verbose #594 > > │ zeta_ / s: (2.0, -2.0) / count: 0                                            │
00:00:44 verbose #595 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0,  │
00:00:44 verbose #596 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:                 │
00:00:44 verbose #597 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:44 verbose #598 > > │ / arg: None                                                                  │
00:00:44 verbose #599 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0,  │
00:00:44 verbose #600 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:                 │
00:00:44 verbose #601 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:44 verbose #602 > > │ / arg: None                                                                  │
00:00:44 verbose #603 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0,  │
00:00:44 verbose #604 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:            │
00:00:44 verbose #605 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:44 verbose #606 > > │ / arg: None                                                                  │
00:00:44 verbose #607 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0,  │
00:00:44 verbose #608 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:            │
00:00:44 verbose #609 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:44 verbose #610 > > │ / arg: None                                                                  │
00:00:44 verbose #611 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0,  │
00:00:44 verbose #612 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:            │
00:00:44 verbose #613 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:44 verbose #614 > > │ / arg: None                                                                  │
00:00:44 verbose #615 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2-2j), kwargs={}, name='zeta' │
00:00:44 verbose #616 > > │ / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py /             │
00:00:44 verbose #617 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py  │
00:00:44 verbose #618 > > │ / arg: None                                                                  │
00:00:44 verbose #619 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2-2j), kwargs={}, name='zeta' │
00:00:44 verbose #620 > > │ / f_line.../ arg: None                                                       │
00:00:44 verbose #621 > > │ call(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2 / f_lineno: 91 │
00:00:44 verbose #622 > > │ / f_code.co_filename: /mpmath/libmp/libintmath.py / f_back.f_lineno: 778 /   │
00:00:44 verbose #623 > > │ f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: None               │
00:00:44 verbose #624 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2 / f_lineno: 93 │
00:00:44 verbose #625 > > │ / f_code.co_filename: /mpmath/libmp/libintmath.py / f_back.f_lineno: 778 /   │
00:00:44 verbose #626 > > │ f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: None               │
00:00:44 verbose #627 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2, bc=2 /        │
00:00:44 verbose #628 > > │ f_lineno: 94 / f_code.co_filename: /mpmath/libmp/libintmath.py /             │
00:00:44 verbose #629 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py /  │
00:00:44 verbose #630 > > │ arg: None                                                                    │
00:00:44 verbose #631 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2, bc=2 /        │
00:00:44 verbose #632 > > │ f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py /             │
00:00:44 verbose #633 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py /  │
00:00:44 verbose #634 > > │ arg: None                                                                    │
00:00:44 verbose #635 > > │ return(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2, bc=2 /      │
00:00:44 verbose #636 > > │ f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py /             │
00:00:44 verbose #637 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py /  │
00:00:44 verbose #638 > > │ arg: 2                                                                       │
00:00:44 verbose #639 > > │ zeta_ / result: (0.867351829635993 + 0.275127238807858j) / count: 1812       │
00:00:44 verbose #640 > > │ zeta / count: 0 / s: Complex { re: 2.0, im: -2.0 }                           │
00:00:44 verbose #641 > > │ zeta__ / s: Complex { re: 2.0, im: -2.0 } / result: Ok(Complex { re:         │
00:00:44 verbose #642 > > │ 0.8673518296359931, im: 0.27512723880785767 }) / z: Complex { re: NaN, im:   │
00:00:44 verbose #643 > > │ NaN }                                                                        │
00:00:44 verbose #644 > > │ __assert_lt / actual: 5.182963599315027e-5 / expected: 0.001                 │
00:00:44 verbose #645 > > │ __assert_lt / actual: 0.00012723880785764363 / expected: 0.001               │
00:00:44 verbose #646 > > │                                                                              │
00:00:44 verbose #647 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:44 verbose #648 > >
00:00:44 verbose #649 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:44 verbose #650 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:44 verbose #651 > > │ ## test_trivial_zero_at_negative_even___                                     │
00:00:44 verbose #652 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:44 verbose #653 > >
00:00:44 verbose #654 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:44 verbose #655 > > inl test_trivial_zero_at_negative_even___ log = run_test log (2u8, 1u8) fun
00:00:44 verbose #656 > > zeta, gamma =>
00:00:44 verbose #657 > >     (join listm'.init_series -2f64 -40 -2)
00:00:44 verbose #658 > >     |> listm.iter fun n =>
00:00:44 verbose #659 > >         inl s = .^(n, 0)
00:00:44 verbose #660 > >         inl result = zeta s
00:00:44 verbose #661 > >
00:00:44 verbose #662 > >         result |> re |> _assert_eq 0
00:00:44 verbose #663 > >         result |> im |> _assert_eq 0
00:00:44 verbose #664 > >
00:00:44 verbose #665 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:44 verbose #666 > > //// test
00:00:44 verbose #667 > > ///! rust -d num-complex pyo3
00:00:44 verbose #668 > >
00:00:44 verbose #669 > > test_trivial_zero_at_negative_even___ true
00:00:53 verbose #670 > >
00:00:53 verbose #671 > > ╭─[ 9.01s - return value ]─────────────────────────────────────────────────────╮
00:00:53 verbose #672 > > │ zeta_ / s: (-2.0, 0.0) / count: 0                                            │
00:00:53 verbose #673 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │
00:00:53 verbose #674 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:                 │
00:00:53 verbose #675 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:53 verbose #676 > > │ / arg: None                                                                  │
00:00:53 verbose #677 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │
00:00:53 verbose #678 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:                 │
00:00:53 verbose #679 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:53 verbose #680 > > │ / arg: None                                                                  │
00:00:53 verbose #681 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │
00:00:53 verbose #682 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:            │
00:00:53 verbose #683 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:53 verbose #684 > > │ / arg: None                                                                  │
00:00:53 verbose #685 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │
00:00:53 verbose #686 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:            │
00:00:53 verbose #687 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:53 verbose #688 > > │ / arg: None                                                                  │
00:00:53 verbose #689 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │
00:00:53 verbose #690 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:            │
00:00:53 verbose #691 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:00:53 verbose #692 > > │ / arg: None                                                                  │
00:00:53 verbose #693 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(-2+0j), kwargs={},            │
00:00:53 verbose #694 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / │
00:00:53 verbose #695 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py  │
00:00:53 verbose #696 > > │ / arg: None                                                                  │
00:00:53 verbose #697 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(-2+0j), kwargs={},            │
00:00:53 verbose #698 > > │ name='zeta' /...lename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 /   │
00:00:53 verbose #699 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None              │
00:00:53 verbose #700 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals:  / f_lineno: 604 /       │
00:00:53 verbose #701 > > │ f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 /       │
00:00:53 verbose #702 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None              │
00:00:53 verbose #703 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals:  / f_lineno: 605 /       │
00:00:53 verbose #704 > > │ f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 /       │
00:00:53 verbose #705 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None              │
00:00:53 verbose #706 > > │ return(gamma_) / f_code.co_name: make_mpc / f_locals:  / f_lineno: 605 /     │
00:00:53 verbose #707 > > │ f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 /       │
00:00:53 verbose #708 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg:                   │
00:00:53 verbose #709 > > │ mpc(real='8.1591528324789768e+47', imag='0.0')                               │
00:00:53 verbose #710 > > │ return(gamma_) / f_code.co_name: f / f_locals: x=mpc(real='41.0',            │
00:00:53 verbose #711 > > │ imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' / f_lineno: 1007 │
00:00:53 verbose #712 > > │ / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 25 /       │
00:00:53 verbose #713 > > │ f_back.f_code.co_filename:  / arg: mpc(real='8.1591528324789768e+47',        │
00:00:53 verbose #714 > > │ imag='0.0')                                                                  │
00:00:53 verbose #715 > > │ gamma_ / result: (8.15915283247898e+47 + 0.0j) / count: 149                  │
00:00:53 verbose #716 > > │ gamma__ / s: Complex { re: 41.0, im: 0.0 } / result: Ok(Complex { re:        │
00:00:53 verbose #717 > > │ 8.159152832478977e47, im: 0.0 })                                             │
00:00:53 verbose #718 > > │ zeta / count: 1 / s: Complex { re: 41.0, im: -0.0 }                          │
00:00:53 verbose #719 > > │ zeta__ / s: Complex { re: -40.0, im: 0.0 } / result: Ok(Complex { re: 0.0,   │
00:00:53 verbose #720 > > │ im: 0.0 }) / z: Complex { re: NaN, im: NaN }                                 │
00:00:53 verbose #721 > > │ __assert_eq / actual: 0.0 / expected: 0.0                                    │
00:00:53 verbose #722 > > │ __assert_eq / actual: 0.0 / expected: 0.0                                    │
00:00:53 verbose #723 > > │                                                                              │
00:00:53 verbose #724 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:53 verbose #725 > >
00:00:53 verbose #726 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:53 verbose #727 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:53 verbose #728 > > │ ## test_non_trivial_zero___                                                  │
00:00:53 verbose #729 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:53 verbose #730 > >
00:00:53 verbose #731 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:53 verbose #732 > > inl test_non_trivial_zero___ log = run_test log (3u8, 2u8) fun zeta, gamma =>
00:00:53 verbose #733 > >     ;[[
00:00:53 verbose #734 > >         .^(0.5, 14.134725)
00:00:53 verbose #735 > >         .^(0.5, 21.022040)
00:00:53 verbose #736 > >         .^(0.5, 25.010857)
00:00:53 verbose #737 > >         .^(0.5, 30.424876)
00:00:53 verbose #738 > >         .^(0.5, 32.935062)
00:00:53 verbose #739 > >         .^(0.5, 37.586178)
00:00:53 verbose #740 > >     ]]
00:00:53 verbose #741 > >     |> fun x => a x : _ i32 _
00:00:53 verbose #742 > >     |> am.iter fun x =>
00:00:53 verbose #743 > >             inl result = zeta x
00:00:53 verbose #744 > >             result |> re |> abs |> _assert_lt 0.0001
00:00:53 verbose #745 > >             result |> im |> abs |> _assert_lt 0.0001
00:00:53 verbose #746 > >
00:00:53 verbose #747 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:53 verbose #748 > > //// test
00:00:53 verbose #749 > > ///! rust -d num-complex pyo3
00:00:53 verbose #750 > >
00:00:53 verbose #751 > > test_non_trivial_zero___ true
00:01:02 verbose #752 > >
00:01:02 verbose #753 > > ╭─[ 8.51s - return value ]─────────────────────────────────────────────────────╮
00:01:02 verbose #754 > > │ zeta_ / s: (0.5, 14.134725) / count: 0                                       │
00:01:02 verbose #755 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:01:02 verbose #756 > > │ derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:   │
00:01:02 verbose #757 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:02 verbose #758 > > │ / arg: None                                                                  │
00:01:02 verbose #759 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:01:02 verbose #760 > > │ derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:   │
00:01:02 verbose #761 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:02 verbose #762 > > │ / arg: None                                                                  │
00:01:02 verbose #763 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:01:02 verbose #764 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 /                  │
00:01:02 verbose #765 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 /        │
00:01:02 verbose #766 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:01:02 verbose #767 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:01:02 verbose #768 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 /                  │
00:01:02 verbose #769 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 /        │
00:01:02 verbose #770 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:01:02 verbose #771 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:01:02 verbose #772 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 /                  │
00:01:02 verbose #773 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 /        │
00:01:02 verbose #774 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:01:02 verbose #775 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(0.5+14.134725j), kwargs={},   │
00:01:02 verbose #776 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / │
00:01:02 verbose #777 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py  │
00:01:02 verbose #778 > > │ / arg: None                                                                  │
00:01:02 verbose #779 > > │ line(zeta_) / f_code... arg: None                                            │
00:01:02 verbose #780 > > │ line(gamma_) / f_code.co_name: complex_stirling_series / f_locals:           │
00:01:02 verbose #781 > > │ x=1208925819614629174706176, y=-90877802089662679288381440, prec=81,         │
00:01:02 verbose #782 > > │ _m=3416353708500640443578529333, tre=855591523614410863719,                  │
00:01:02 verbose #783 > > │ tim=64316830603724894628746, ure=-1710577520534459139249,                    │
00:01:02 verbose #784 > > │ uim=45518868236127668552, sre=1013002518538853602038572,                     │
00:01:02 verbose #785 > > │ sim=90883161825546323029600502 / f_lineno: 1637 / f_code.co_filename:        │
00:01:02 verbose #786 > > │ /mpmath/libmp/gammazeta.py / f_back.f_lineno: 2050 /                         │
00:01:02 verbose #787 > > │ f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None            │
00:01:02 verbose #788 > > │ line(gamma_) / f_code.co_name: complex_stirling_series / f_locals:           │
00:01:02 verbose #789 > > │ x=1208925819614629174706176, y=-90877802089662679288381440, prec=81,         │
00:01:02 verbose #790 > > │ _m=3416353708500640443578529333, tre=-1816151534455075068,                   │
00:01:02 verbose #791 > > │ tim=-45486653225747820096, ure=-1710577520534459139249,                      │
00:01:02 verbose #792 > > │ uim=45518868236127668552, sre=1013002518538853602038572,                     │
00:01:02 verbose #793 > > │ sim=90883161825546323029600502 / f_lineno: 1638 / f_code.co_filename:        │
00:01:02 verbose #794 > > │ /mpmath/libmp/gammazeta.py / f_back.f_lineno: 2050 /                         │
00:01:02 verbose #795 > > │ f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None            │
00:01:02 verbose #796 > > │ gamma_ / result: (-1.32798420042152e-26 + 5.5751975252688e-26j) / count: 309 │
00:01:02 verbose #797 > > │ gamma__ / s: Complex { re: 0.5, im: -37.586178 } / result: Ok(Complex { re:  │
00:01:02 verbose #798 > > │ -1.3279842004215153e-26, im: 5.575197525268802e-26 })                        │
00:01:02 verbose #799 > > │ zeta__ / s: Complex { re: 0.5, im: 37.586178 } / result: Ok(Complex { re:    │
00:01:02 verbose #800 > > │ -8.910186507947958e-8, im: -2.943780446402868e-7 }) / z: Complex { re: -0.0, │
00:01:02 verbose #801 > > │ im: 0.0 }                                                                    │
00:01:02 verbose #802 > > │ __assert_lt / actual: 8.910186507947958e-8 / expected: 0.0001                │
00:01:02 verbose #803 > > │ __assert_lt / actual: 2.943780446402868e-7 / expected: 0.0001                │
00:01:02 verbose #804 > > │                                                                              │
00:01:02 verbose #805 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:02 verbose #806 > >
00:01:02 verbose #807 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:02 verbose #808 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:02 verbose #809 > > │ ## test_real_part_greater_than_one___                                        │
00:01:02 verbose #810 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:02 verbose #811 > >
00:01:02 verbose #812 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:02 verbose #813 > > inl test_real_part_greater_than_one___ log = run_test log (3u8, 2u8) fun zeta,
00:01:02 verbose #814 > > gamma =>
00:01:02 verbose #815 > >     inl points = ;[[ 2; 3; 4; 5; 10; 20; 50 ]]
00:01:02 verbose #816 > >     (a points : _ i32 _)
00:01:02 verbose #817 > >     |> am.iter fun point =>
00:01:02 verbose #818 > >         inl s = .^(point, 0)
00:01:02 verbose #819 > >         inl result = zeta s
00:01:02 verbose #820 > >         result |> re |> _assert_gt 0
00:01:02 verbose #821 > >         result |> im |> _assert_eq 0
00:01:02 verbose #822 > >
00:01:02 verbose #823 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:02 verbose #824 > > //// test
00:01:02 verbose #825 > > ///! rust -d num-complex pyo3
00:01:02 verbose #826 > >
00:01:02 verbose #827 > > test_real_part_greater_than_one___ true
00:01:10 verbose #828 > >
00:01:10 verbose #829 > > ╭─[ 8.53s - return value ]─────────────────────────────────────────────────────╮
00:01:10 verbose #830 > > │ zeta_ / s: (2.0, 0.0) / count: 0                                             │
00:01:10 verbose #831 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:01:10 verbose #832 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:                 │
00:01:10 verbose #833 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:10 verbose #834 > > │ / arg: None                                                                  │
00:01:10 verbose #835 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:01:10 verbose #836 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:                 │
00:01:10 verbose #837 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:10 verbose #838 > > │ / arg: None                                                                  │
00:01:10 verbose #839 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:01:10 verbose #840 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:            │
00:01:10 verbose #841 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:10 verbose #842 > > │ / arg: None                                                                  │
00:01:10 verbose #843 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:01:10 verbose #844 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:            │
00:01:10 verbose #845 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:10 verbose #846 > > │ / arg: None                                                                  │
00:01:10 verbose #847 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:01:10 verbose #848 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:            │
00:01:10 verbose #849 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:10 verbose #850 > > │ / arg: None                                                                  │
00:01:10 verbose #851 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │
00:01:10 verbose #852 > > │ / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py /             │
00:01:10 verbose #853 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py  │
00:01:10 verbose #854 > > │ / arg: None                                                                  │
00:01:10 verbose #855 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │
00:01:10 verbose #856 > > │ / f_linen...f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno:  │
00:01:10 verbose #857 > > │ 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None       │
00:01:10 verbose #858 > > │ line(zeta_) / f_code.co_name: make_mpc / f_locals:  / f_lineno: 605 /        │
00:01:10 verbose #859 > > │ f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 /       │
00:01:10 verbose #860 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None              │
00:01:10 verbose #861 > > │ return(zeta_) / f_code.co_name: make_mpc / f_locals:  / f_lineno: 605 /      │
00:01:10 verbose #862 > > │ f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 /       │
00:01:10 verbose #863 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg:                   │
00:01:10 verbose #864 > > │ mpc(real='1.0000000000000009', imag='0.0')                                   │
00:01:10 verbose #865 > > │ return(zeta_) / f_code.co_name: f / f_locals: x=mpc(real='50.0',             │
00:01:10 verbose #866 > > │ imag='0.0'), kwargs={}, name='zeta', prec=53, rounding='n' / f_lineno: 1007  │
00:01:10 verbose #867 > > │ / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 /      │
00:01:10 verbose #868 > > │ f_back.f_code.co_filename: /mpmath/functions/zeta.py / arg:                  │
00:01:10 verbose #869 > > │ mpc(real='1.0000000000000009', imag='0.0')                                   │
00:01:10 verbose #870 > > │ return(zeta_) / f_code.co_name: zeta / f_locals: s=(50+0j), a=1,             │
00:01:10 verbose #871 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 /                  │
00:01:10 verbose #872 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 /        │
00:01:10 verbose #873 > > │ f_back.f_code.co_filename:  / arg: mpc(real='1.0000000000000009',            │
00:01:10 verbose #874 > > │ imag='0.0')                                                                  │
00:01:10 verbose #875 > > │ zeta_ / result: (1.0 + 0.0j) / count: 181                                    │
00:01:10 verbose #876 > > │ zeta / count: 0 / s: Complex { re: 50.0, im: 0.0 }                           │
00:01:10 verbose #877 > > │ zeta__ / s: Complex { re: 50.0, im: 0.0 } / result: Ok(Complex { re:         │
00:01:10 verbose #878 > > │ 1.0000000000000009, im: 0.0 }) / z: Complex { re: NaN, im: NaN }             │
00:01:10 verbose #879 > > │ __assert_gt / actual: 1.0000000000000009 / expected: 0.0                     │
00:01:10 verbose #880 > > │ __assert_eq / actual: 0.0 / expected: 0.0                                    │
00:01:10 verbose #881 > > │                                                                              │
00:01:10 verbose #882 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:10 verbose #883 > >
00:01:10 verbose #884 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:10 verbose #885 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:10 verbose #886 > > │ ## test_zeta_at_1___                                                         │
00:01:10 verbose #887 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:10 verbose #888 > >
00:01:10 verbose #889 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:10 verbose #890 > > inl test_zeta_at_1___ log = run_test log (6u8, 5u8) fun zeta, gamma =>
00:01:10 verbose #891 > >     inl s = .^(1, 0)
00:01:10 verbose #892 > >     inl result = zeta s
00:01:10 verbose #893 > >     result |> re |> _assert_eq limit.max
00:01:10 verbose #894 > >     result |> im |> _assert_eq 0
00:01:10 verbose #895 > >
00:01:10 verbose #896 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:10 verbose #897 > > //// test
00:01:10 verbose #898 > > ///! rust -d num-complex pyo3
00:01:10 verbose #899 > >
00:01:10 verbose #900 > > test_zeta_at_1___ true
00:01:19 verbose #901 > >
00:01:19 verbose #902 > > ╭─[ 8.37s - return value ]─────────────────────────────────────────────────────╮
00:01:19 verbose #903 > > │ zeta_ / s: (1.0, 0.0) / count: 0                                             │
00:01:19 verbose #904 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0,  │
00:01:19 verbose #905 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:                 │
00:01:19 verbose #906 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:19 verbose #907 > > │ / arg: None                                                                  │
00:01:19 verbose #908 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0,  │
00:01:19 verbose #909 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:                 │
00:01:19 verbose #910 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:19 verbose #911 > > │ / arg: None                                                                  │
00:01:19 verbose #912 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0,  │
00:01:19 verbose #913 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:            │
00:01:19 verbose #914 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:19 verbose #915 > > │ / arg: None                                                                  │
00:01:19 verbose #916 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0,  │
00:01:19 verbose #917 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:            │
00:01:19 verbose #918 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:19 verbose #919 > > │ / arg: None                                                                  │
00:01:19 verbose #920 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0,  │
00:01:19 verbose #921 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:            │
00:01:19 verbose #922 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:19 verbose #923 > > │ / arg: None                                                                  │
00:01:19 verbose #924 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(1+0j), kwargs={}, name='zeta' │
00:01:19 verbose #925 > > │ / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py /             │
00:01:19 verbose #926 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py  │
00:01:19 verbose #927 > > │ / arg: None                                                                  │
00:01:19 verbose #928 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(1+0j), kwargs={}, name='zeta' │
00:01:19 verbose #929 > > │ / f_linen...back object at 0x<?>>)                                           │
00:01:19 verbose #930 > > │ return(gamma_) / f_code.co_name: f / f_locals: x=mpc(real='0.0',             │
00:01:19 verbose #931 > > │ imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' / f_lineno: 1007 │
00:01:19 verbose #932 > > │ / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 25 /       │
00:01:19 verbose #933 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:01:19 verbose #934 > > │ exception(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j /          │
00:01:19 verbose #935 > > │ f_lineno: 25 / f_code.co_filename:  / f_back.f_lineno:  /                    │
00:01:19 verbose #936 > > │ f_back.f_code.co_filename:  / arg: (<class 'ValueError'>, ValueError('gamma  │
00:01:19 verbose #937 > > │ function pole'), <traceback object at 0x<?>>)                                │
00:01:19 verbose #938 > > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j / f_lineno: 29  │
00:01:19 verbose #939 > > │ / f_code.co_filename:  / f_back.f_lineno:  / f_back.f_code.co_filename:  /   │
00:01:19 verbose #940 > > │ arg: None                                                                    │
00:01:19 verbose #941 > > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j,                │
00:01:19 verbose #942 > > │ e=ValueError('gamma function pole') / f_lineno: 30 / f_code.co_filename:  /  │
00:01:19 verbose #943 > > │ f_back.f_lineno:  / f_back.f_code.co_filename:  / arg: None                  │
00:01:19 verbose #944 > > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j / f_lineno: 32  │
00:01:19 verbose #945 > > │ / f_code.co_filename:  / f_back.f_lineno:  / f_back.f_code.co_filename:  /   │
00:01:19 verbose #946 > > │ arg: None                                                                    │
00:01:19 verbose #947 > > │ return(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j / f_lineno:   │
00:01:19 verbose #948 > > │ 32 / f_code.co_filename:  / f_back.f_lineno:  / f_back.f_code.co_filename:   │
00:01:19 verbose #949 > > │ / arg: (0.0, 0.0)                                                            │
00:01:19 verbose #950 > > │ gamma__ / s: Complex { re: 0.0, im: 0.0 } / result: Ok(Complex { re: 0.0,    │
00:01:19 verbose #951 > > │ im: 0.0 })                                                                   │
00:01:19 verbose #952 > > │ zeta__ / s: Complex { re: 1.0, im: 0.0 } / result: Ok(Complex { re: inf, im: │
00:01:19 verbose #953 > > │ 0.0 }) / z: Complex { re: 0.0, im: 0.0 }                                     │
00:01:19 verbose #954 > > │ __assert_eq / actual: inf / expected: inf                                    │
00:01:19 verbose #955 > > │ __assert_eq / actual: 0.0 / expected: 0.0                                    │
00:01:19 verbose #956 > > │                                                                              │
00:01:19 verbose #957 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:19 verbose #958 > >
00:01:19 verbose #959 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:19 verbose #960 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:19 verbose #961 > > │ ## test_symmetry_across_real_axis___                                         │
00:01:19 verbose #962 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:19 verbose #963 > >
00:01:19 verbose #964 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:19 verbose #965 > > inl test_symmetry_across_real_axis___ log = run_test log (8u8, 7u8) fun zeta,
00:01:19 verbose #966 > > gamma =>
00:01:19 verbose #967 > >     inl s = .^(2, 10)
00:01:19 verbose #968 > >     inl result_positive_im = zeta s
00:01:19 verbose #969 > >     inl result_negative_im = zeta .^(re s, -(im s))
00:01:19 verbose #970 > >     inl conj = result_negative_im |> conj
00:01:19 verbose #971 > >     result_positive_im |> re |> _assert_eq (conj |> re)
00:01:19 verbose #972 > >     result_positive_im |> im |> _assert_eq (conj |> im)
00:01:19 verbose #973 > >
00:01:19 verbose #974 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:19 verbose #975 > > //// test
00:01:19 verbose #976 > > ///! rust -d num-complex pyo3
00:01:19 verbose #977 > >
00:01:19 verbose #978 > > test_symmetry_across_real_axis___ true
00:01:27 verbose #979 > >
00:01:27 verbose #980 > > ╭─[ 8.30s - return value ]─────────────────────────────────────────────────────╮
00:01:27 verbose #981 > > │ zeta_ / s: (2.0, 10.0) / count: 0                                            │
00:01:27 verbose #982 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │
00:01:27 verbose #983 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:                 │
00:01:27 verbose #984 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:27 verbose #985 > > │ / arg: None                                                                  │
00:01:27 verbose #986 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │
00:01:27 verbose #987 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:                 │
00:01:27 verbose #988 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:27 verbose #989 > > │ / arg: None                                                                  │
00:01:27 verbose #990 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │
00:01:27 verbose #991 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:            │
00:01:27 verbose #992 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:27 verbose #993 > > │ / arg: None                                                                  │
00:01:27 verbose #994 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │
00:01:27 verbose #995 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:            │
00:01:27 verbose #996 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:27 verbose #997 > > │ / arg: None                                                                  │
00:01:27 verbose #998 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │
00:01:27 verbose #999 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:            │
00:01:27 verbose #1000 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:27 verbose #1001 > > │ / arg: None                                                                  │
00:01:27 verbose #1002 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+10j), kwargs={},            │
00:01:27 verbose #1003 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / │
00:01:27 verbose #1004 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py  │
00:01:27 verbose #1005 > > │ / arg: None                                                                  │
00:01:27 verbose #1006 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+10j), kwargs={},            │
00:01:27 verbose #1007 > > │ name='zeta' /.../ f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg:  │
00:01:27 verbose #1008 > > │ None                                                                         │
00:01:27 verbose #1009 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=26, bc=5 /       │
00:01:27 verbose #1010 > > │ f_lineno: 94 / f_code.co_filename: /mpmath/libmp/libintmath.py /             │
00:01:27 verbose #1011 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py /  │
00:01:27 verbose #1012 > > │ arg: None                                                                    │
00:01:27 verbose #1013 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=26, bc=5 /       │
00:01:27 verbose #1014 > > │ f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py /             │
00:01:27 verbose #1015 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py /  │
00:01:27 verbose #1016 > > │ arg: None                                                                    │
00:01:27 verbose #1017 > > │ return(zeta_) / f_code.co_name: python_bitcount / f_locals: n=26, bc=5 /     │
00:01:27 verbose #1018 > > │ f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py /             │
00:01:27 verbose #1019 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py /  │
00:01:27 verbose #1020 > > │ arg: 5                                                                       │
00:01:27 verbose #1021 > > │ line(zeta_) / f_code.co_name: mpf_add / f_locals: s=(0, 1, 2, 1), t=(0, 25,  │
00:01:27 verbose #1022 > > │ 2, 5), prec=14, rnd='d', _sub=0, ssign=0, sman=1, sexp=2, sbc=1, tsign=0,    │
00:01:27 verbose #1023 > > │ tman=25, texp=2, tbc=5, offset=0, man=26, bc=5 / f_lineno: 779 /             │
00:01:27 verbose #1024 > > │ f_code.co_filename: /mpmath/libmp/libmpf.py / f_back.f_lineno: 1401 /        │
00:01:27 verbose #1025 > > │ f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: None               │
00:01:27 verbose #1026 > > │ zeta_ / result: (1.19798250067418 + 0.0791704917205257j) / count: 1174       │
00:01:27 verbose #1027 > > │ zeta / count: 0 / s: Complex { re: 2.0, im: -10.0 }                          │
00:01:27 verbose #1028 > > │ zeta__ / s: Complex { re: 2.0, im: -10.0 } / result: Ok(Complex { re:        │
00:01:27 verbose #1029 > > │ 1.1979825006741847, im: 0.07917049172052575 }) / z: Complex { re: NaN, im:   │
00:01:27 verbose #1030 > > │ NaN }                                                                        │
00:01:27 verbose #1031 > > │ __assert_eq / actual: 1.1979825006741847 / expected: 1.1979825006741847      │
00:01:27 verbose #1032 > > │ __assert_eq / actual: -0.07917049172052575 / expected: -0.07917049172052575  │
00:01:27 verbose #1033 > > │                                                                              │
00:01:27 verbose #1034 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:27 verbose #1035 > >
00:01:27 verbose #1036 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:27 verbose #1037 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:27 verbose #1038 > > │ ## test_behavior_near_origin___                                              │
00:01:27 verbose #1039 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:27 verbose #1040 > >
00:01:27 verbose #1041 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 verbose #1042 > > inl test_behavior_near_origin___ log = run_test log (6u8, 5u8) fun zeta, gamma
00:01:27 verbose #1043 > > =>
00:01:27 verbose #1044 > >     inl s = .^(0.01, 0.01)
00:01:27 verbose #1045 > >     inl result = zeta s
00:01:27 verbose #1046 > >     result |> re |> _assert_lt limit.max
00:01:27 verbose #1047 > >     result |> im |> _assert_lt limit.max
00:01:27 verbose #1048 > >
00:01:27 verbose #1049 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 verbose #1050 > > //// test
00:01:27 verbose #1051 > > ///! rust -d num-complex pyo3
00:01:27 verbose #1052 > >
00:01:27 verbose #1053 > > test_behavior_near_origin___ true
00:01:36 verbose #1054 > >
00:01:36 verbose #1055 > > ╭─[ 8.41s - return value ]─────────────────────────────────────────────────────╮
00:01:36 verbose #1056 > > │ zeta_ / s: (0.01, 0.01) / count: 0                                           │
00:01:36 verbose #1057 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1,          │
00:01:36 verbose #1058 > > │ derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:   │
00:01:36 verbose #1059 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:36 verbose #1060 > > │ / arg: None                                                                  │
00:01:36 verbose #1061 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1,          │
00:01:36 verbose #1062 > > │ derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:   │
00:01:36 verbose #1063 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:36 verbose #1064 > > │ / arg: None                                                                  │
00:01:36 verbose #1065 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1,          │
00:01:36 verbose #1066 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 /                  │
00:01:36 verbose #1067 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 /        │
00:01:36 verbose #1068 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:01:36 verbose #1069 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1,          │
00:01:36 verbose #1070 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 /                  │
00:01:36 verbose #1071 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 /        │
00:01:36 verbose #1072 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:01:36 verbose #1073 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1,          │
00:01:36 verbose #1074 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 /                  │
00:01:36 verbose #1075 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 /        │
00:01:36 verbose #1076 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:01:36 verbose #1077 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(0.01+0.01j), kwargs={},       │
00:01:36 verbose #1078 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / │
00:01:36 verbose #1079 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py  │
00:01:36 verbose #1080 > > │ / arg: None                                                                  │
00:01:36 verbose #1081 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(0...py / f_back.f_lineno:     │
00:01:36 verbose #1082 > > │ 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None       │
00:01:36 verbose #1083 > > │ line(gamma_) / f_code.co_name: mpc_gamma / f_locals: z=((0,                  │
00:01:36 verbose #1084 > > │ 4458563631096791, -52, 52), (1, 5764607523034235, -59, 53)), prec=53,        │
00:01:36 verbose #1085 > > │ rnd='n', type=0, a=(0, 4458563631096791, -52, 52), b=(1, 5764607523034235,   │
00:01:36 verbose #1086 > > │ -59, 53), asign=0, aman=4458563631096791, aexp=-52, abc=52, bsign=1,         │
00:01:36 verbose #1087 > > │ bman=5764607523034235, bexp=-59, bbc=53, wp=73, amag=0, bmag=-6, mag=0,      │
00:01:36 verbose #1088 > > │ an=0, bn=0, absn=0j, gamma_size=0, need_reflection=0, zorig=((0,             │
00:01:36 verbose #1089 > > │ 4458563631096791, -52, 52), (1, 5764607523034235, -59, 53)), yfinal=0,       │
00:01:36 verbose #1090 > > │ balance_prec=0, n_for_stirling=14, need_reduction=True,                      │
00:01:36 verbose #1091 > > │ afix=132131814190692672995328, bfix=-94447329657392906240, r=0, zprered=((0, │
00:01:36 verbose #1092 > > │ 4458563631096791, -52, 52), (1, 5764607523034235, -59, 53)), d=14,           │
00:01:36 verbose #1093 > > │ rre=56942610883563778729574216337150, one=9444732965739290427392,            │
00:01:36 verbose #1094 > > │ rim=-1820461636508155576115177658065, k=12 / f_lineno: 2043 /                │
00:01:36 verbose #1095 > > │ f_code.co_filename: /mpmath/libmp/gammazeta.py / f_back.f_lineno: 1007 /     │
00:01:36 verbose #1096 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None              │
00:01:36 verbose #1097 > > │ gamma_ / result: (1.00577030202902 + 0.0059717824054102j) / count: 383       │
00:01:36 verbose #1098 > > │ gamma__ / s: Complex { re: 0.99, im: -0.01 } / result: Ok(Complex { re:      │
00:01:36 verbose #1099 > > │ 1.005770302029023, im: 0.005971782405410201 })                               │
00:01:36 verbose #1100 > > │ zeta__ / s: Complex { re: 0.01, im: 0.01 } / result: Ok(Complex { re:        │
00:01:36 verbose #1101 > > │ -0.5091873433665667, im: -0.00939202213994577 }) / z: Complex { re: 0.0, im: │
00:01:36 verbose #1102 > > │ 0.0 }                                                                        │
00:01:36 verbose #1103 > > │ __assert_lt / actual: -0.5091873433665667 / expected: inf                    │
00:01:36 verbose #1104 > > │ __assert_lt / actual: -0.00939202213994577 / expected: inf                   │
00:01:36 verbose #1105 > > │                                                                              │
00:01:36 verbose #1106 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:36 verbose #1107 > >
00:01:36 verbose #1108 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:36 verbose #1109 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:36 verbose #1110 > > │ ## test_imaginary_axis                                                       │
00:01:36 verbose #1111 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:36 verbose #1112 > >
00:01:36 verbose #1113 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:36 verbose #1114 > > inl test_imaginary_axis log = run_test log (3u8, 2u8) fun zeta, gamma =>
00:01:36 verbose #1115 > >     (join [[ 10; 20; 30; 40; 50; 60; 70; 80; 90; 100 ]])
00:01:36 verbose #1116 > >     |> listm.iter fun s =>
00:01:36 verbose #1117 > >         inl s = .^(0, s)
00:01:36 verbose #1118 > >         inl result = zeta s
00:01:36 verbose #1119 > >         result |> re |> _assert_ne 0
00:01:36 verbose #1120 > >         result |> im |> _assert_ne 0
00:01:36 verbose #1121 > >
00:01:36 verbose #1122 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:36 verbose #1123 > > //// test
00:01:36 verbose #1124 > > ///! rust -d num-complex pyo3
00:01:36 verbose #1125 > >
00:01:36 verbose #1126 > > test_imaginary_axis true
00:01:45 verbose #1127 > >
00:01:45 verbose #1128 > > ╭─[ 8.68s - return value ]─────────────────────────────────────────────────────╮
00:01:45 verbose #1129 > > │ zeta_ / s: (0.0, 10.0) / count: 0                                            │
00:01:45 verbose #1130 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0,     │
00:01:45 verbose #1131 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:                 │
00:01:45 verbose #1132 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:45 verbose #1133 > > │ / arg: None                                                                  │
00:01:45 verbose #1134 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0,     │
00:01:45 verbose #1135 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:                 │
00:01:45 verbose #1136 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:45 verbose #1137 > > │ / arg: None                                                                  │
00:01:45 verbose #1138 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0,     │
00:01:45 verbose #1139 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:            │
00:01:45 verbose #1140 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:45 verbose #1141 > > │ / arg: None                                                                  │
00:01:45 verbose #1142 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0,     │
00:01:45 verbose #1143 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:            │
00:01:45 verbose #1144 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:45 verbose #1145 > > │ / arg: None                                                                  │
00:01:45 verbose #1146 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0,     │
00:01:45 verbose #1147 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:            │
00:01:45 verbose #1148 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:45 verbose #1149 > > │ / arg: None                                                                  │
00:01:45 verbose #1150 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=10j, kwargs={}, name='zeta' /  │
00:01:45 verbose #1151 > > │ f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py /               │
00:01:45 verbose #1152 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py  │
00:01:45 verbose #1153 > > │ / arg: None                                                                  │
00:01:45 verbose #1154 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=10j, kwargs={}, name='zeta' /  │
00:01:45 verbose #1155 > > │ f_lineno: 990 / f_code.co_f...g: None                                        │
00:01:45 verbose #1156 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 0, 1), prec=83  │
00:01:45 verbose #1157 > > │ / f_lineno: 511 / f_code.co_filename: /mpmath/libmp/libmpf.py /              │
00:01:45 verbose #1158 > > │ f_back.f_lineno: 2031 / f_back.f_code.co_filename:                           │
00:01:45 verbose #1159 > > │ /mpmath/libmp/gammazeta.py / arg: None                                       │
00:01:45 verbose #1160 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 0, 1), prec=83, │
00:01:45 verbose #1161 > > │ sign=0, man=1, exp=0, bc=1 / f_lineno: 512 / f_code.co_filename:             │
00:01:45 verbose #1162 > > │ /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031 / f_back.f_code.co_filename: │
00:01:45 verbose #1163 > > │ /mpmath/libmp/gammazeta.py / arg: None                                       │
00:01:45 verbose #1164 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 0, 1), prec=83, │
00:01:45 verbose #1165 > > │ sign=0, man=1, exp=0, bc=1, offset=83 / f_lineno: 513 / f_code.co_filename:  │
00:01:45 verbose #1166 > > │ /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031 / f_back.f_code.co_filename: │
00:01:45 verbose #1167 > > │ /mpmath/libmp/gammazeta.py / arg: None                                       │
00:01:45 verbose #1168 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 0, 1), prec=83, │
00:01:45 verbose #1169 > > │ sign=0, man=1, exp=0, bc=1, offset=83 / f_lineno: 517 / f_code.co_filename:  │
00:01:45 verbose #1170 > > │ /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031 / f_back.f_code.co_filename: │
00:01:45 verbose #1171 > > │ /mpmath/libmp/gammazeta.py / arg: None                                       │
00:01:45 verbose #1172 > > │ gamma_ / result: (-1.51425318049776e-67 + 2.79082155561748e-69j) / count:    │
00:01:45 verbose #1173 > > │ 289                                                                          │
00:01:45 verbose #1174 > > │ gamma__ / s: Complex { re: 1.0, im: -100.0 } / result: Ok(Complex { re:      │
00:01:45 verbose #1175 > > │ -1.514253180497756e-67, im: 2.7908215556174775e-69 })                        │
00:01:45 verbose #1176 > > │ zeta__ / s: Complex { re: 0.0, im: 100.0 } / result: Ok(Complex { re:        │
00:01:45 verbose #1177 > > │ 6.51721042625301, im: 0.18128842533791736 }) / z: Complex { re: 0.0, im: 0.0 │
00:01:45 verbose #1178 > > │ }                                                                            │
00:01:45 verbose #1179 > > │ __assert_ne / actual: 6.51721042625301 / expected: 0.0                       │
00:01:45 verbose #1180 > > │ __assert_ne / actual: 0.18128842533791736 / expected: 0.0                    │
00:01:45 verbose #1181 > > │                                                                              │
00:01:45 verbose #1182 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:45 verbose #1183 > >
00:01:45 verbose #1184 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:45 verbose #1185 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:45 verbose #1186 > > │ ## test_critical_strip                                                       │
00:01:45 verbose #1187 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:45 verbose #1188 > >
00:01:45 verbose #1189 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:45 verbose #1190 > > inl test_critical_strip log = run_test log (3u8, 2u8) fun zeta, gamma =>
00:01:45 verbose #1191 > >     (join [[
00:01:45 verbose #1192 > >         .^(0.5, 14.134725)
00:01:45 verbose #1193 > >         .^(0.75, 20.5)
00:01:45 verbose #1194 > >         .^(1.25, 30.1)
00:01:45 verbose #1195 > >         .^(0.25, 40.0)
00:01:45 verbose #1196 > >         .^(1.0, 50.0)
00:01:45 verbose #1197 > >     ]])
00:01:45 verbose #1198 > >     |> listm.iter fun s =>
00:01:45 verbose #1199 > >         inl result = zeta s
00:01:45 verbose #1200 > >         result |> re |> _assert_ne 0
00:01:45 verbose #1201 > >         result |> im |> _assert_ne 0
00:01:45 verbose #1202 > >
00:01:45 verbose #1203 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:45 verbose #1204 > > //// test
00:01:45 verbose #1205 > > ///! rust -d num-complex pyo3
00:01:45 verbose #1206 > >
00:01:45 verbose #1207 > > test_critical_strip true
00:01:53 verbose #1208 > >
00:01:53 verbose #1209 > > ╭─[ 8.51s - return value ]─────────────────────────────────────────────────────╮
00:01:53 verbose #1210 > > │ zeta_ / s: (0.5, 14.134725) / count: 0                                       │
00:01:53 verbose #1211 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:01:53 verbose #1212 > > │ derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:   │
00:01:53 verbose #1213 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:53 verbose #1214 > > │ / arg: None                                                                  │
00:01:53 verbose #1215 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:01:53 verbose #1216 > > │ derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:   │
00:01:53 verbose #1217 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:01:53 verbose #1218 > > │ / arg: None                                                                  │
00:01:53 verbose #1219 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:01:53 verbose #1220 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 /                  │
00:01:53 verbose #1221 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 /        │
00:01:53 verbose #1222 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:01:53 verbose #1223 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:01:53 verbose #1224 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 /                  │
00:01:53 verbose #1225 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 /        │
00:01:53 verbose #1226 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:01:53 verbose #1227 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1,      │
00:01:53 verbose #1228 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 /                  │
00:01:53 verbose #1229 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 /        │
00:01:53 verbose #1230 > > │ f_back.f_code.co_filename:  / arg: None                                      │
00:01:53 verbose #1231 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(0.5+14.134725j), kwargs={},   │
00:01:53 verbose #1232 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / │
00:01:53 verbose #1233 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py  │
00:01:53 verbose #1234 > > │ / arg: None                                                                  │
00:01:53 verbose #1235 > > │ line(zeta_) / f_code...210, sim=241793223535862290161314995 / f_lineno: 1648 │
00:01:53 verbose #1236 > > │ / f_code.co_filename: /mpmath/libmp/gammazeta.py / f_back.f_lineno: 2050 /   │
00:01:53 verbose #1237 > > │ f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None            │
00:01:53 verbose #1238 > > │ line(gamma_) / f_code.co_name: complex_stirling_series / f_locals: x=0,      │
00:01:53 verbose #1239 > > │ y=-241785163922925834941235200, prec=82, _m=12089258196146291747061760000,   │
00:01:53 verbose #1240 > > │ tre=0, tim=396, ure=-1934281311383406679530, uim=0,                          │
00:01:53 verbose #1241 > > │ sre=4443714077719696485012210, sim=241793223535862290161314995 / f_lineno:   │
00:01:53 verbose #1242 > > │ 1649 / f_code.co_filename: /mpmath/libmp/gammazeta.py / f_back.f_lineno:     │
00:01:53 verbose #1243 > > │ 2050 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None     │
00:01:53 verbose #1244 > > │ line(gamma_) / f_code.co_name: complex_stirling_series / f_locals: x=0,      │
00:01:53 verbose #1245 > > │ y=-241785163922925834941235200, prec=82, _m=12089258196146291747061760000,   │
00:01:53 verbose #1246 > > │ tre=0, tim=396, ure=-1934281311383406679530, uim=0,                          │
00:01:53 verbose #1247 > > │ sre=4443714077719696485012210, sim=241793223535862290161314997 / f_lineno:   │
00:01:53 verbose #1248 > > │ 1650 / f_code.co_filename: /mpmath/libmp/gammazeta.py / f_back.f_lineno:     │
00:01:53 verbose #1249 > > │ 2050 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None     │
00:01:53 verbose #1250 > > │ gamma_ / result: (2.63173210619768e-35 - 8.16464935465334e-36j) / count: 262 │
00:01:53 verbose #1251 > > │ gamma__ / s: Complex { re: 0.0, im: -50.0 } / result: Ok(Complex { re:       │
00:01:53 verbose #1252 > > │ 2.6317321061976804e-35, im: -8.164649354653339e-36 })                        │
00:01:53 verbose #1253 > > │ zeta__ / s: Complex { re: 1.0, im: 50.0 } / result: Ok(Complex { re:         │
00:01:53 verbose #1254 > > │ 0.44103873082309397, im: 0.281582455029683 }) / z: Complex { re: 0.0, im:    │
00:01:53 verbose #1255 > > │ 0.0 }                                                                        │
00:01:53 verbose #1256 > > │ __assert_ne / actual: 0.44103873082309397 / expected: 0.0                    │
00:01:53 verbose #1257 > > │ __assert_ne / actual: 0.281582455029683 / expected: 0.0                      │
00:01:53 verbose #1258 > > │                                                                              │
00:01:53 verbose #1259 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:53 verbose #1260 > >
00:01:53 verbose #1261 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:53 verbose #1262 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:53 verbose #1263 > > │ ## test_reflection_formula_for_specific_value                                │
00:01:53 verbose #1264 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:53 verbose #1265 > >
00:01:53 verbose #1266 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:53 verbose #1267 > > inl test_reflection_formula_for_specific_value log = run_test log (3u8, 2u8) fun
00:01:53 verbose #1268 > > zeta, gamma =>
00:01:53 verbose #1269 > >     (join [[
00:01:53 verbose #1270 > >         .^(3, 4)
00:01:53 verbose #1271 > >         .^(2.5, -3.5)
00:01:53 verbose #1272 > >         .^(1.5, 2.5)
00:01:53 verbose #1273 > >         .^(0.5, 14.134725)
00:01:53 verbose #1274 > >     ]])
00:01:53 verbose #1275 > >     |> listm.iter fun s =>
00:01:53 verbose #1276 > >         inl lhs = zeta s
00:01:53 verbose #1277 > >         inl reflection_coefficient =
00:01:53 verbose #1278 > >             (.^(2, 0) .** s)
00:01:53 verbose #1279 > >             .* (.^(pi, 0) .** (s .- .^(1, 0)))
00:01:53 verbose #1280 > >             .* (.^(pi, 0) .* s ./ .^(2, 0) |> complex_sin)
00:01:53 verbose #1281 > >             .* gamma (.^(1, 0) .- s)
00:01:53 verbose #1282 > >
00:01:53 verbose #1283 > >         inl one_minus_s = .^(1 - re s, -(im s))
00:01:53 verbose #1284 > >         inl rhs = reflection_coefficient .* zeta one_minus_s
00:01:53 verbose #1285 > >
00:01:53 verbose #1286 > >         re lhs - re rhs |> abs |> _assert_lt 0.0001
00:01:53 verbose #1287 > >         im lhs - im rhs |> abs |> _assert_lt 0.0001
00:01:53 verbose #1288 > >
00:01:53 verbose #1289 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:53 verbose #1290 > > //// test
00:01:53 verbose #1291 > > ///! rust -d num-complex pyo3
00:01:53 verbose #1292 > >
00:01:53 verbose #1293 > > test_reflection_formula_for_specific_value true
00:02:02 verbose #1294 > >
00:02:02 verbose #1295 > > ╭─[ 8.63s - return value ]─────────────────────────────────────────────────────╮
00:02:02 verbose #1296 > > │ zeta_ / s: (3.0, 4.0) / count: 0                                             │
00:02:02 verbose #1297 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0,  │
00:02:02 verbose #1298 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:                 │
00:02:02 verbose #1299 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:02:02 verbose #1300 > > │ / arg: None                                                                  │
00:02:02 verbose #1301 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0,  │
00:02:02 verbose #1302 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:                 │
00:02:02 verbose #1303 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:02:02 verbose #1304 > > │ / arg: None                                                                  │
00:02:02 verbose #1305 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0,  │
00:02:02 verbose #1306 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:            │
00:02:02 verbose #1307 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:02:02 verbose #1308 > > │ / arg: None                                                                  │
00:02:02 verbose #1309 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0,  │
00:02:02 verbose #1310 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:            │
00:02:02 verbose #1311 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:02:02 verbose #1312 > > │ / arg: None                                                                  │
00:02:02 verbose #1313 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0,  │
00:02:02 verbose #1314 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:            │
00:02:02 verbose #1315 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:02:02 verbose #1316 > > │ / arg: None                                                                  │
00:02:02 verbose #1317 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(3+4j), kwargs={}, name='zeta' │
00:02:02 verbose #1318 > > │ / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py /             │
00:02:02 verbose #1319 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py  │
00:02:02 verbose #1320 > > │ / arg: None                                                                  │
00:02:02 verbose #1321 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(3+4j), kwargs={}, name='zeta' │
00:02:02 verbose #1322 > > │ / f_linen...045 / f_code.co_filename: /mpmath/libmp/gammazeta.py /           │
00:02:02 verbose #1323 > > │ f_back.f_lineno: 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py  │
00:02:02 verbose #1324 > > │ / arg: None                                                                  │
00:02:02 verbose #1325 > > │ line(gamma_) / f_code.co_name: mpc_gamma / f_locals: z=((0, 1, -1, 1), (0,   │
00:02:02 verbose #1326 > > │ 3978571390186527, -48, 52)), prec=53, rnd='n', type=0, a=(0, 1, -1, 1),      │
00:02:02 verbose #1327 > > │ b=(0, 3978571390186527, -48, 52), asign=0, aman=1, aexp=-1, abc=1, bsign=0,  │
00:02:02 verbose #1328 > > │ bman=3978571390186527, bexp=-48, bbc=52, wp=79, amag=0, bmag=4, mag=4, an=0, │
00:02:02 verbose #1329 > > │ bn=14, absn=14j, gamma_size=56, need_reflection=0, zorig=((0, 1, -1, 1), (0, │
00:02:02 verbose #1330 > > │ 3978571390186527, -48, 52)), yfinal=0, balance_prec=0, n_for_stirling=15,    │
00:02:02 verbose #1331 > > │ need_reduction=True, afix=2115620184325601055735808,                         │
00:02:02 verbose #1332 > > │ bfix=8543917002826194402410496, r=0, zprered=((0, 1, -1, 1), (0,             │
00:02:02 verbose #1333 > > │ 3978571390186527, -48, 52)), d=5, rre=-542313259704087430481959845,          │
00:02:02 verbose #1334 > > │ one=604462909807314587353088, rim=-1657865507045117397880679064, k=2 /       │
00:02:02 verbose #1335 > > │ f_lineno: 2043 / f_code.co_filename: /mpmath/libmp/gammazeta.py /            │
00:02:02 verbose #1336 > > │ f_back.f_lineno: 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py  │
00:02:02 verbose #1337 > > │ / arg: None                                                                  │
00:02:02 verbose #1338 > > │ gamma_ / result: (-1.4455538437607e-10 - 5.52278876877407e-10j) / count: 318 │
00:02:02 verbose #1339 > > │ gamma__ / s: Complex { re: 0.5, im: 14.134725 } / result: Ok(Complex { re:   │
00:02:02 verbose #1340 > > │ -1.4455538437606964e-10, im: -5.522788768774066e-10 })                       │
00:02:02 verbose #1341 > > │ zeta__ / s: Complex { re: 0.5, im: -14.134725 } / result: Ok(Complex { re:   │
00:02:02 verbose #1342 > > │ 1.7674298413849186e-8, im: 1.1102028930923156e-7 }) / z: Complex { re: 0.0,  │
00:02:02 verbose #1343 > > │ im: 0.0 }                                                                    │
00:02:02 verbose #1344 > > │ __assert_lt / actual: 4.433688083284228e-22 / expected: 0.0001               │
00:02:02 verbose #1345 > > │ __assert_lt / actual: 1.3234889800848443e-22 / expected: 0.0001              │
00:02:02 verbose #1346 > > │                                                                              │
00:02:02 verbose #1347 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:02 verbose #1348 > >
00:02:02 verbose #1349 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:02 verbose #1350 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:02 verbose #1351 > > │ ## test_euler_product_formula                                                │
00:02:02 verbose #1352 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:02 verbose #1353 > >
00:02:02 verbose #1354 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:02 verbose #1355 > > inl test_euler_product_formula log = run_test log (3u8, 2u8) fun zeta, gamma =>
00:02:02 verbose #1356 > >     inl s_values = join [[ 2; 2.5; 3; 3.5; 4; 4.5; 5 ]]
00:02:02 verbose #1357 > >     inl primes = join [[ 2; 3; 5; 7; 11; 13; 17; 19; 23; 29; 31; 37; 41; 43; 47;
00:02:02 verbose #1358 > > 53; 59; 61; 67; 71 ]]
00:02:02 verbose #1359 > >     s_values
00:02:02 verbose #1360 > >     |> listm.iter fun s_re =>
00:02:02 verbose #1361 > >         inl s = .^(s_re, 0)
00:02:02 verbose #1362 > >         inl product =
00:02:02 verbose #1363 > >             (1, primes)
00:02:02 verbose #1364 > >             ||> listm.fold fun acc x =>
00:02:02 verbose #1365 > >                 acc * 1 / (1 - x ** -s_re)
00:02:02 verbose #1366 > >
00:02:02 verbose #1367 > >         inl result = zeta s
00:02:02 verbose #1368 > >         re result - product |> abs |> _assert_lt 0.01
00:02:02 verbose #1369 > >         result |> im |> _assert_lt 0.01
00:02:02 verbose #1370 > >
00:02:02 verbose #1371 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:02 verbose #1372 > > //// test
00:02:02 verbose #1373 > > ///! rust -d num-complex pyo3
00:02:02 verbose #1374 > >
00:02:02 verbose #1375 > > test_euler_product_formula true
00:02:11 verbose #1376 > >
00:02:11 verbose #1377 > > ╭─[ 8.54s - return value ]─────────────────────────────────────────────────────╮
00:02:11 verbose #1378 > > │ zeta_ / s: (2.0, 0.0) / count: 0                                             │
00:02:11 verbose #1379 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:02:11 verbose #1380 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename:                 │
00:02:11 verbose #1381 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:02:11 verbose #1382 > > │ / arg: None                                                                  │
00:02:11 verbose #1383 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:02:11 verbose #1384 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename:                 │
00:02:11 verbose #1385 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:02:11 verbose #1386 > > │ / arg: None                                                                  │
00:02:11 verbose #1387 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:02:11 verbose #1388 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename:            │
00:02:11 verbose #1389 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:02:11 verbose #1390 > > │ / arg: None                                                                  │
00:02:11 verbose #1391 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:02:11 verbose #1392 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename:            │
00:02:11 verbose #1393 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:02:11 verbose #1394 > > │ / arg: None                                                                  │
00:02:11 verbose #1395 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0,  │
00:02:11 verbose #1396 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename:            │
00:02:11 verbose #1397 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │
00:02:11 verbose #1398 > > │ / arg: None                                                                  │
00:02:11 verbose #1399 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │
00:02:11 verbose #1400 > > │ / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py /             │
00:02:11 verbose #1401 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py  │
00:02:11 verbose #1402 > > │ / arg: None                                                                  │
00:02:11 verbose #1403 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │
00:02:11 verbose #1404 > > │ / f_linen...k.f_lineno: 985 / f_back.f_code.co_filename:                     │
00:02:11 verbose #1405 > > │ /mpmath/libmp/gammazeta.py / arg: None                                       │
00:02:11 verbose #1406 > > │ line(zeta_) / f_code.co_name: mpf_zeta_int / f_locals: s=5, prec=53,         │
00:02:11 verbose #1407 > > │ rnd='n', wp=73, m=19.25, needed_terms=623488, n=33, d=[1, 2179, 792067,      │
00:02:11 verbose #1408 > > │ 115062531, 8930212611, 429314925315, 13983537177347, 327666966438659,        │
00:02:11 verbose #1409 > > │ 5764846406968067, 78615943485956867, 851604426176701187,                     │
00:02:11 verbose #1410 > > │ 7470527451121689347, 53898915046387983107, 323897845985013506819,            │
00:02:11 verbose #1411 > > │ 1638178356374090130179, 7034281785235908174595, 25833609859980306522883,     │
00:02:11 verbose #1412 > > │ 81661917475887913739011, 223448095548034217779971, 532029677981012660429571, │
00:02:11 verbose #1413 > > │ 1108048631855905753375491, 2029946562680066824315651,                        │
00:02:11 verbose #1414 > > │ 3292927237466655352791811, 4769455369342763680768771,                        │
00:02:11 verbose #1415 > > │ 6235511670496346417767171, 7463408621503347142796035,                        │
00:02:11 verbose #1416 > > │ 8322751284048216428487427, 8818779962777819524211459,                        │
00:02:11 verbose #1417 > > │ 9050689474911140452082435, 9136270117622166323831555,                        │
00:02:11 verbose #1418 > > │ 9160252037839493347779331, 9165045885455648617505539,                        │
00:02:11 verbose #1419 > > │ 9165654628010081032708867, 9165691521498228451812099],                       │
00:02:11 verbose #1420 > > │ t=-84153986440240940095109733900764881301998910956, k=26 / f_lineno: 954 /   │
00:02:11 verbose #1421 > > │ f_code.co_filename: /mpmath/libmp/gammazeta.py / f_back.f_lineno: 985 /      │
00:02:11 verbose #1422 > > │ f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None            │
00:02:11 verbose #1423 > > │ zeta_ / result: (1.03692775514337 + 0.0j) / count: 228                       │
00:02:11 verbose #1424 > > │ zeta / count: 0 / s: Complex { re: 5.0, im: 0.0 }                            │
00:02:11 verbose #1425 > > │ zeta__ / s: Complex { re: 5.0, im: 0.0 } / result: Ok(Complex { re:          │
00:02:11 verbose #1426 > > │ 1.03692775514337, im: 0.0 }) / z: Complex { re: NaN, im: NaN }               │
00:02:11 verbose #1427 > > │ __assert_lt / actual: 2.0033654735129858e-9 / expected: 0.01                 │
00:02:11 verbose #1428 > > │ __assert_lt / actual: 0.0 / expected: 0.01                                   │
00:02:11 verbose #1429 > > │                                                                              │
00:02:11 verbose #1430 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:11 verbose #1431 > >
00:02:11 verbose #1432 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:11 verbose #1433 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:11 verbose #1434 > > │ ## graph                                                                     │
00:02:11 verbose #1435 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:11 verbose #1436 > >
00:02:11 verbose #1437 > > ── mermaid ─────────────────────────────────────────────────────────────────────
00:02:11 verbose #1438 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:11 verbose #1439 > > │ <div class="mermaidMarkdownContainer" style="background-color:white">        │
00:02:11 verbose #1440 > > │ <link rel="stylesheet"                                                       │
00:02:11 verbose #1441 > > │ href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min. │
00:02:11 verbose #1442 > > │ css">                                                                        │
00:02:11 verbose #1443 > > │ <div id="60ccba5ed74d43aa8b253f466cc59a45"></div>                            │
00:02:11 verbose #1444 > > │ <script type="module">                                                       │
00:02:11 verbose #1445 > > │                                                                              │
00:02:11 verbose #1446 > > │             import mermaid from                                              │
00:02:11 verbose #1447 > > │ 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs';      │
00:02:11 verbose #1448 > > │             let renderTarget =                                               │
00:02:11 verbose #1449 > > │ document.getElementById('60ccba5ed74d43aa8b253f466cc59a45');                 │
00:02:11 verbose #1450 > > │             try {                                                            │
00:02:11 verbose #1451 > > │                 const {svg, bindFunctions} = await                           │
00:02:11 verbose #1452 > > │ mermaid.mermaidAPI.render(                                                   │
00:02:11 verbose #1453 > > │                     'mermaid_60ccba5ed74d43aa8b253f466cc59a45',              │
00:02:11 verbose #1454 > > │                     `graph TD                                                │
00:02:11 verbose #1455 > > │     zeta("zeta()") --> convert                                               │
00:02:11 verbose #1456 > > │     zeta --> f["f()"]                                                        │
00:02:11 verbose #1457 > > │     f --> mpc_f["mpc_zeta()"]                                                │
00:02:11 verbose #1458 > > │     f --> mpf_f["mpf_zeta()"]                                                │
00:02:11 verbose #1459 > > │     convert --> from_float                                                   │
00:02:11 verbose #1460 > > │     from_float --> from_man_exp                                              │
00:02:11 verbose #1461 > > │     from_man_exp --> python_bitcount                                         │
00:02:11 verbose #1462 > > │     python_bitcount --> _normalize                                           │
00:02:11 verbose #1463 > > │     _normalize --> make_mpc                                                  │
00:02:11 verbose #1464 > > │     make_mpc --> mpc_zeta["mpc_zeta()"]                                      │
00:02:11 verbose #1465 > > │     mpc_zeta --> mpf_zeta["mpf_zeta()"]                                      │
00:02:11 verbose #1466 > > │     mpf_zeta --> to_int                                                      │
00:02:11 verbose #1467 > > │     to_int --> mpf_zeta_int["mpf_zeta_int()"]                                │
00:02:11 verbose #1468 > > │     mpf_zeta_int --> borwein_coefficients                                    │
00:02:11 verbose #1469 > > │     borwein_coefficients --> from_man_exp_2("from_man_exp()")                │
00:02:11 verbose #1470 > > │     from_man_exp_2 --> python_bitcount_2("python_bitcount()")                │
00:02:11 verbose #1471 > > │     python_bitcount_2 --> _normalize_2("_normalize()")                       │
00:02:11 verbose #1472 > > │     _normalize_2 --> make_mpc_2("make_mpc()")                                │
00:02:11 verbose #1473 > > │     make_mpc_2 --> stop_trace                                                │
00:02:11 verbose #1474 > > │     mpf_zeta_int --> mpf_bernoulli                                           │
00:02:11 verbose #1475 > > │     mpf_bernoulli --> bernoulli_size                                         │
00:02:11 verbose #1476 > > │     bernoulli_size --> mpf_rdiv_int                                          │
00:02:11 verbose #1477 > > │     mpf_rdiv_int --> python_bitcount_3("python_bitcount()")                  │
00:02:11 verbose #1478 > > │     python_bitcount_3 --> _normalize1                                        │
00:02:11 verbose #1479 > > │     _normalize1 --> from_man_exp_3("from_man_exp()")                         │
00:02:11 verbose #1480 > > │     from_man_exp_3 --> _normalize_3("_normalize()")                          │
00:02:11 verbose #1481 > > │     _normalize_3 --> mpf_sub                                                 │
00:02:11 verbose #1482 > > │     mpf_sub --> mpf_add                                                      │
00:02:11 verbose #1483 > > │     mpf_add --> mpf_neg                                                      │
00:02:11 verbose #1484 > > │     mpf_neg --> _normalize1_2("_normalize1()")                               │
00:02:11 verbose #1485 > > │     _normalize1_2 --> from_int                                               │
00:02:11 verbose #1486 > > │     from_int --> mpf_div                                                     │
00:02:11 verbose #1487 > > │     mpf_div --> python_bitcount_4("python_bitcount()")                       │
00:02:11 verbose #1488 > > │     python_bitcount_4 --> _normalize1_3("_normalize1()")                     │
00:02:11 verbose #1489 > > │     _normalize1_3 --> make_mpc_3("make_mpc()")                               │
00:02:11 verbose #1490 > > │     make_mpc_3 --> final_stop["stop_trace()"]`);                             │
00:02:11 verbose #1491 > > │                 renderTarget.innerHTML = svg;                                │
00:02:11 verbose #1492 > > │                 bindFunctions?.(renderTarget);                               │
00:02:11 verbose #1493 > > │             }                                                                │
00:02:11 verbose #1494 > > │             catch (error) {                                                  │
00:02:11 verbose #1495 > > │                 console.log(error);                                          │
00:02:11 verbose #1496 > > │             }                                                                │
00:02:11 verbose #1497 > > │ </script>                                                                    │
00:02:11 verbose #1498 > > │ </div>                                                                       │
00:02:11 verbose #1499 > > │                                                                              │
00:02:11 verbose #1500 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:11 verbose #1501 > >
00:02:11 verbose #1502 > > ── mermaid ─────────────────────────────────────────────────────────────────────
00:02:11 verbose #1503 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:11 verbose #1504 > > │ <div class="mermaidMarkdownContainer" style="background-color:white">        │
00:02:11 verbose #1505 > > │ <link rel="stylesheet"                                                       │
00:02:11 verbose #1506 > > │ href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min. │
00:02:11 verbose #1507 > > │ css">                                                                        │
00:02:11 verbose #1508 > > │ <div id="917144003bc5449ea588e9fb2a954643"></div>                            │
00:02:11 verbose #1509 > > │ <script type="module">                                                       │
00:02:11 verbose #1510 > > │                                                                              │
00:02:11 verbose #1511 > > │             import mermaid from                                              │
00:02:11 verbose #1512 > > │ 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs';      │
00:02:11 verbose #1513 > > │             let renderTarget =                                               │
00:02:11 verbose #1514 > > │ document.getElementById('917144003bc5449ea588e9fb2a954643');                 │
00:02:11 verbose #1515 > > │             try {                                                            │
00:02:11 verbose #1516 > > │                 const {svg, bindFunctions} = await                           │
00:02:11 verbose #1517 > > │ mermaid.mermaidAPI.render(                                                   │
00:02:11 verbose #1518 > > │                     'mermaid_917144003bc5449ea588e9fb2a954643',              │
00:02:11 verbose #1519 > > │                     `graph TD                                                │
00:02:11 verbose #1520 > > │     zeta_rust("zeta() - Rust") --> num_traits("num-traits")                  │
00:02:11 verbose #1521 > > │     zeta_rust --> num_bigint("num-bigint")                                   │
00:02:11 verbose #1522 > > │     zeta_rust --> rust_decimal("rust_decimal for precision")                 │
00:02:11 verbose #1523 > > │     zeta_rust --> error_handling("Rust Error Handling")                      │
00:02:11 verbose #1524 > > │                                                                              │
00:02:11 verbose #1525 > > │     num_traits --> num_traits_usage("Use for common traits")                 │
00:02:11 verbose #1526 > > │     num_bigint --> bigint_operations("Arbitrary-precision arithmetic         │
00:02:11 verbose #1527 > > │ operations")                                                                 │
00:02:11 verbose #1528 > > │     rust_decimal --> decimal_operations("High-precision decimal operations") │
00:02:11 verbose #1529 > > │     error_handling --> result_type("Use Result<T, E> for error handling")    │
00:02:11 verbose #1530 > > │                                                                              │
00:02:11 verbose #1531 > > │     bigint_operations --> convert_rust("convert() - Rust")                   │
00:02:11 verbose #1532 > > │     bigint_operations --> normalize_rust("_normalize() - Rust")              │
00:02:11 verbose #1533 > > │                                                                              │
00:02:11 verbose #1534 > > │     convert_rust --> from_float_rust("from_float() - Rust")                  │
00:02:11 verbose #1535 > > │     from_float_rust --> from_man_exp_rust("from_man_exp() - Rust")           │
00:02:11 verbose #1536 > > │     from_man_exp_rust --> bitcount_rust("bitcount() - Rust")                 │
00:02:11 verbose #1537 > > │     bitcount_rust --> normalize_rust                                         │
00:02:11 verbose #1538 > > │     normalize_rust --> mpc_zeta_rust("mpc_zeta() - Rust")                    │
00:02:11 verbose #1539 > > │     mpc_zeta_rust --> mpf_zeta_rust("mpf_zeta() - Rust")                     │
00:02:11 verbose #1540 > > │     mpf_zeta_rust --> to_int_rust("to_int() - Rust")                         │
00:02:11 verbose #1541 > > │     to_int_rust --> mpf_zeta_int_rust("mpf_zeta_int() - Rust")               │
00:02:11 verbose #1542 > > │                                                                              │
00:02:11 verbose #1543 > > │     mpf_zeta_int_rust --> borwein_coefficients_rust("borwein_coefficients()  │
00:02:11 verbose #1544 > > │ - Rust")                                                                     │
00:02:11 verbose #1545 > > │     borwein_coefficients_rust --> from_man_exp_rust_2("from_man_exp() -      │
00:02:11 verbose #1546 > > │ Rust")                                                                       │
00:02:11 verbose #1547 > > │     from_man_exp_rust_2 --> bitcount_rust_2("bitcount() - Rust")             │
00:02:11 verbose #1548 > > │     bitcount_rust_2 --> normalize_rust_2("_normalize() - Rust")              │
00:02:11 verbose #1549 > > │     normalize_rust_2 --> make_mpc_rust("make_mpc() - Rust")                  │
00:02:11 verbose #1550 > > │                                                                              │
00:02:11 verbose #1551 > > │     mpf_zeta_int_rust --> mpf_bernoulli_rust("mpf_bernoulli() - Rust")       │
00:02:11 verbose #1552 > > │     mpf_bernoulli_rust --> bernoulli_size_rust("bernoulli_size() - Rust")    │
00:02:11 verbose #1553 > > │     bernoulli_size_rust --> mpf_rdiv_int_rust("mpf_rdiv_int() - Rust")       │
00:02:11 verbose #1554 > > │     mpf_rdiv_int_rust --> bitcount_rust_3("bitcount() - Rust")               │
00:02:11 verbose #1555 > > │     bitcount_rust_3 --> normalize1_rust("_normalize1() - Rust")              │
00:02:11 verbose #1556 > > │     normalize1_rust --> from_man_exp_rust_3("from_man_exp() - Rust")         │
00:02:11 verbose #1557 > > │     from_man_exp_rust_3 --> normalize_rust_3("_normalize() - Rust")          │
00:02:11 verbose #1558 > > │     normalize_rust_3 --> mpf_sub_rust("mpf_sub() - Rust")                    │
00:02:11 verbose #1559 > > │     mpf_sub_rust --> mpf_add_rust("mpf_add() - Rust")                        │
00:02:11 verbose #1560 > > │     mpf_add_rust --> mpf_neg_rust("mpf_neg() - Rust")                        │
00:02:11 verbose #1561 > > │     mpf_neg_rust --> normalize1_rust_2("_normalize1() - Rust")               │
00:02:11 verbose #1562 > > │     normalize1_rust_2 --> from_int_rust("from_int() - Rust")                 │
00:02:11 verbose #1563 > > │     from_int_rust --> mpf_div_rust("mpf_div() - Rust")                       │
00:02:11 verbose #1564 > > │     mpf_div_rust --> bitcount_rust_4("bitcount() - Rust")                    │
00:02:11 verbose #1565 > > │     bitcount_rust_4 --> normalize1_rust_3("_normalize1() - Rust")            │
00:02:11 verbose #1566 > > │                                                                              │
00:02:11 verbose #1567 > > │     style zeta_rust fill:#f9f,stroke:#333,stroke-width:4px                   │
00:02:11 verbose #1568 > > │     style num_traits fill:#bbf,stroke:#333,stroke-width:2px                  │
00:02:11 verbose #1569 > > │     style num_bigint fill:#bbf,stroke:#333,stroke-width:2px                  │
00:02:11 verbose #1570 > > │     style rust_decimal fill:#bbf,stroke:#333,stroke-width:2px                │
00:02:11 verbose #1571 > > │     style error_handling fill:#bbf,stroke:#333,stroke-width:2px              │
00:02:11 verbose #1572 > > │     style bigint_operations fill:#bfb,stroke:#333,stroke-width:2px           │
00:02:11 verbose #1573 > > │     style decimal_operations fill:#bfb,stroke:#333,stroke-width:2px          │
00:02:11 verbose #1574 > > │     style result_type fill:#bfb,stroke:#333,stroke-width:2px`);              │
00:02:11 verbose #1575 > > │                 renderTarget.innerHTML = svg;                                │
00:02:11 verbose #1576 > > │                 bindFunctions?.(renderTarget);                               │
00:02:11 verbose #1577 > > │             }                                                                │
00:02:11 verbose #1578 > > │             catch (error) {                                                  │
00:02:11 verbose #1579 > > │                 console.log(error);                                          │
00:02:11 verbose #1580 > > │             }                                                                │
00:02:11 verbose #1581 > > │ </script>                                                                    │
00:02:11 verbose #1582 > > │ </div>                                                                       │
00:02:11 verbose #1583 > > │                                                                              │
00:02:11 verbose #1584 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:11 verbose #1585 > >
00:02:11 verbose #1586 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:11 verbose #1587 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:11 verbose #1588 > > │ ## tests                                                                     │
00:02:11 verbose #1589 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:11 verbose #1590 > >
00:02:11 verbose #1591 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:11 verbose #1592 > > inl tests () =
00:02:11 verbose #1593 > >     testing.run_tests_log {
00:02:11 verbose #1594 > >         test_zeta_at_known_values_
00:02:11 verbose #1595 > >         test_zeta_at_2_minus2
00:02:11 verbose #1596 > >         test_trivial_zero_at_negative_even___
00:02:11 verbose #1597 > >         test_non_trivial_zero___
00:02:11 verbose #1598 > >         test_real_part_greater_than_one___
00:02:11 verbose #1599 > >         test_zeta_at_1___
00:02:11 verbose #1600 > >         test_symmetry_across_real_axis___
00:02:11 verbose #1601 > >         test_behavior_near_origin___
00:02:11 verbose #1602 > >         test_imaginary_axis
00:02:11 verbose #1603 > >         test_critical_strip
00:02:11 verbose #1604 > >         test_reflection_formula_for_specific_value
00:02:11 verbose #1605 > >         test_euler_product_formula
00:02:11 verbose #1606 > >     }
00:02:11 verbose #1607 > >
00:02:11 verbose #1608 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:11 verbose #1609 > > ///! _
00:02:11 verbose #1610 > >
00:02:11 verbose #1611 > > inl main (_args : array_base string) =
00:02:11 verbose #1612 > >     inl value = 1i32
00:02:11 verbose #1613 > >     console.write_line ($'$"value: {!value}"' : string)
00:02:11 verbose #1614 > >     0i32
00:02:11 verbose #1615 > >
00:02:11 verbose #1616 > > inl main () =
00:02:11 verbose #1617 > >     $'let tests () = !tests ()' : ()
00:02:11 verbose #1618 > >     $'let main args = !main args' : ()
00:02:11 verbose #1619 > 00:02:11 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 123388 }
00:02:11 verbose #1620 > 00:02:11   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:02:11 verbose #1621 >     "nbconvert",
00:02:11 verbose #1622 >     "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb",
00:02:11 verbose #1623 >     "--to",
00:02:11 verbose #1624 >     "html",
00:02:11 verbose #1625 >     "--HTMLExporter.theme=dark",
00:02:11 verbose #1626 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:12 verbose #1627 > 00:02:11 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb to html
00:02:12 verbose #1628 > 00:02:11 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:02:12 verbose #1629 > 00:02:11 verbose #7 !   validate(nb)
00:02:12 verbose #1630 > 00:02:12 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:02:12 verbose #1631 > 00:02:12 verbose #9 !   return _pygments_highlight(
00:02:13 verbose #1632 > 00:02:13 verbose #10 ! [NbConvertApp] Writing 7171334 bytes to /home/runner/work/polyglot/polyglot/lib/math/math.dib.html
00:02:13 verbose #1633 > 00:02:13 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 889 }
00:02:13 verbose #1634 > 00:02:13   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 889 }
00:02:13 verbose #1635 > 00:02:13   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:02:13 verbose #1636 >     "-c",
00:02:13 verbose #1637 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:02:13 verbose #1638 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:14 verbose #1639 > 00:02:13 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:02:14 verbose #1640 > 00:02:13   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:02:14 verbose #1641 > 00:02:13   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 124336 }
00:02:14   debug #1642 runtime.execute_with_options_async / { exit_code = 0; output_length = 130364 }
00:02:14   debug #1 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path math.dib --retries 5
00:00:00   debug #1 writeDibCode / output: Spi / path: math.dib
00:00:00   debug #2 parseDibCode / output: Spi / file: math.dib
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 verbose #2 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00   debug #1 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: math.spi
00:00:00   debug #2 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: math.spi
00:00:00   debug #3 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: math.spi
00:00:00 verbose #4 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # math\nopen testing\nopen rust.rust_operators\nopen rust\n\n/// ## comp...gs = !main args\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/math/math.spi"}} / result:
00:00:00 verbose #5 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/math/math.spi"}} / result:
00:00:01   debug #6 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("pyo3::Python")>]
#endif
type pyo3_Python = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fa...v3 (); v2) ()
    0
let v0 : (unit -> unit) = closure0()
let tests () = v0 ()
let v1 : ((string []) -> int32) = closure8()
let main args = v1 args
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: math.spi
00:00:01   debug #7 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("pyo3::Python")>]
#endif
type pyo3_Python = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fa...v3 (); v2) ()
    0
let v0 : (unit -> unit) = closure0()
let tests () = v0 ()
let v1 : ((string []) -> int32) = closure8()
let main args = v1 args
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: math.spi
00:00:01   debug #8 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:00   debug #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: math / hash:  / code.Length: 133363
00:00:00   debug #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj
00:00:00   debug #1 runtime.execute_with_options_async / { options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/lib/math/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/math" } }
00:00:00 verbose #2 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:00 verbose #3 >   Determining projects to restore...
00:00:01 verbose #4 >   Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
00:00:01 verbose #5 >   The last full restore is still up to date. Nothing left to do.
00:00:01 verbose #6 >   Total time taken: 0 milliseconds
00:00:01 verbose #7 >   Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
00:00:01 verbose #8 >   Restoring /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj
00:00:01 verbose #9 >   Starting restore process.
00:00:02 verbose #10 >   Total time taken: 0 milliseconds
00:00:02 verbose #11 >   Restored /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj (in 281 ms).
00:00:02 verbose #12 > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj]
00:00:13 verbose #13 >   math -> /home/runner/work/polyglot/polyglot/target/Builder/math/bin/Release/net9.0/linux-x64/math.dll
00:00:13 verbose #14 >   math -> /home/runner/work/polyglot/polyglot/lib/math/dist
00:00:13   debug #15 runtime.execute_with_options_async / { exit_code = 0; output_length = 1049 }
targetDir: /home/runner/work/polyglot/polyglot/target/Builder/math
Fable 4.19.3: F# to Rust compiler (status: alpha)

Thanks to the contributor! @ptrelford
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/math/math.fsproj...
target/Builder/math> dotnet restore math.fable-temp.csproj -p:FABLE_COMPILER=true -p:FABLE_COMPILER_4=true -p:FABLE_COMPILER_RUST=true -p:_LINUX=true
  Determining projects to restore...
  Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
  The last full restore is still up to date. Nothing left to do.
  Total time taken: 0 milliseconds
  Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
  Restoring /home/runner/work/polyglot/polyglot/target/Builder/math/math.fable-temp.csproj
  Starting restore process.
  Total time taken: 0 milliseconds
  Restored /home/runner/work/polyglot/polyglot/target/Builder/math/math.fable-temp.csproj (in 302 ms).
target/Builder/math> dotnet restore /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj
  Determining projects to restore...
  Restored /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj (in 292 ms).
Project and references (14 source files) parsed in 4960ms

Started Fable compilation...

Fable compilation finished in 6845ms

./lib/spiral/date_time.fsx(1012,0): (1012,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/async_.fsx(76,0): (76,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/sm.fsx(414,0): (414,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/threading.fsx(145,0): (145,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/common.fsx(1425,0): (1425,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/crypto.fsx(1326,0): (1326,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/platform.fsx(104,0): (104,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/networking.fsx(4626,0): (4626,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/trace.fsx(1524,0): (1524,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/runtime.fsx(7219,0): (7219,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/file_system.fsx(11479,0): (11479,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./target/Builder/math/math.fs(33,0): (35,3) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
 Downloading crates ...
  Downloaded bytemuck v1.17.1
  Downloaded simba v0.8.1
  Downloaded rand_distr v0.4.3
  Downloaded float-cmp v0.9.0
  Downloaded safe_arch v0.7.2
  Downloaded approx v0.5.1
  Downloaded wide v0.7.28
  Downloaded statrs v0.17.1
  Downloaded rawpointer v0.2.1
  Downloaded nalgebra-macros v0.2.2
  Downloaded nalgebra v0.32.6
  Downloaded matrixmultiply v0.3.9
   Compiling target-lexicon v0.12.16
   Compiling libm v0.2.8
   Compiling num-traits v0.2.19
   Compiling syn v2.0.76
   Compiling rand_core v0.6.4
   Compiling bytemuck v1.17.1
   Compiling paste v1.0.15
   Compiling pyo3-build-config v0.22.2
   Compiling futures-core v0.3.30
   Compiling futures-channel v0.3.30
   Compiling safe_arch v0.7.2
   Compiling matrixmultiply v0.3.9
   Compiling futures-io v0.3.30
   Compiling wide v0.7.28
   Compiling num-complex v0.4.6
   Compiling num-integer v0.1.46
   Compiling pyo3-macros-backend v0.22.2
   Compiling pyo3-ffi v0.22.2
   Compiling approx v0.5.1
   Compiling memoffset v0.9.1
   Compiling rawpointer v0.2.1
   Compiling simba v0.8.1
   Compiling num-rational v0.4.2
   Compiling pyo3 v0.22.2
   Compiling chrono v0.4.38
   Compiling zerocopy-derive v0.7.35
   Compiling zerocopy v0.7.35
   Compiling ppv-lite86 v0.2.20
   Compiling futures-macro v0.3.30
   Compiling rand_chacha v0.3.1
   Compiling futures-util v0.3.30
   Compiling rand v0.8.5
   Compiling nalgebra-macros v0.2.2
   Compiling pyo3-macros v0.22.2
   Compiling rand_distr v0.4.3
   Compiling nalgebra v0.32.6
   Compiling unindent v0.2.3
   Compiling once_cell v1.19.0
   Compiling indoc v2.0.5
   Compiling float-cmp v0.9.0
   Compiling futures-executor v0.3.30
   Compiling futures v0.3.30
   Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust)
   Compiling statrs v0.17.1
   Compiling math v0.0.1 (/home/runner/work/polyglot/polyglot/lib/math)
    Finished `release` profile [optimized] target(s) in 23.14s
     Running unittests math.rs (/home/runner/work/polyglot/polyglot/workspace/target/release/deps/math-3f14260dc74185c8)

running 12 tests
test module_b7a9935b::Math::test_behavior_near_origin___ ... ok
test module_b7a9935b::Math::test_critical_strip ... ok
test module_b7a9935b::Math::test_non_trivial_zero___ ... ok
test module_b7a9935b::Math::test_euler_product_formula ... ok
test module_b7a9935b::Math::test_real_part_greater_than_one___ ... ok
test module_b7a9935b::Math::test_symmetry_across_real_axis___ ... ok
test module_b7a9935b::Math::test_zeta_at_1___ ... ok
test module_b7a9935b::Math::test_zeta_at_2_minus2 ... ok
test module_b7a9935b::Math::test_zeta_at_known_values_ ... ok
test module_b7a9935b::Math::test_reflection_formula_for_specific_value ... ok
test module_b7a9935b::Math::test_imaginary_axis ... ok
test module_b7a9935b::Math::test_trivial_zero_at_negative_even___ ... ok

test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s

In [ ]:
{ pwsh ../apps/plot/build.ps1 } | Invoke-Block
 Downloading crates ...
  Downloaded plotters-backend v0.3.6
  Downloaded plotters-svg v0.3.6
  Downloaded plotters v0.3.6
   Compiling num-traits v0.2.19
   Compiling futures-core v0.3.30
   Compiling futures-io v0.3.30
   Compiling getrandom v0.2.15
   Compiling futures-channel v0.3.30
   Compiling plotters-backend v0.3.6
   Compiling uuid v1.10.0
   Compiling futures-util v0.3.30
   Compiling plotters-svg v0.3.6
   Compiling chrono v0.4.38
   Compiling plotters v0.3.6
   Compiling futures-executor v0.3.30
   Compiling futures v0.3.30
   Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust)
   Compiling plot v0.0.1 (/home/runner/work/polyglot/polyglot/apps/plot)
    Finished `release` profile [optimized] target(s) in 12.56s
In [ ]:
{ pwsh ../apps/perf/build.ps1 } | Invoke-Block
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00   debug #1 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path Perf.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:00 verbose #2 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Perf.dib", "--retries", "3"])) }
00:00:00 verbose #3 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:00:00 verbose #4 >     "repl",
00:00:00 verbose #5 >     "--exit-after-run",
00:00:00 verbose #6 >     "--run",
00:00:00 verbose #7 >     "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib",
00:00:00 verbose #8 >     "--output-path",
00:00:00 verbose #9 >     "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb",
00:00:00 verbose #10 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:01 verbose #11 > >
00:00:01 verbose #12 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:01 verbose #13 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:01 verbose #14 > > │ # Perf (Polyglot)                                                            │
00:00:01 verbose #15 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #16 > >
00:00:16 verbose #17 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #18 > > //// test
00:00:16 verbose #19 > >
00:00:16 verbose #20 > > open testing
00:00:16 verbose #21 > > open benchmark
00:00:16 verbose #22 > >
00:00:16 verbose #23 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #24 > > #if !INTERACTIVE
00:00:16 verbose #25 > > open Lib
00:00:16 verbose #26 > > #endif
00:00:16 verbose #27 > >
00:00:16 verbose #28 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #29 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #30 > > │ ## TestCaseResult                                                            │
00:00:16 verbose #31 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #32 > >
00:00:16 verbose #33 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #34 > > type TestCaseResult =
00:00:16 verbose #35 > >     {
00:00:16 verbose #36 > >         Input: string
00:00:16 verbose #37 > >         Expected: string
00:00:16 verbose #38 > >         Result: string
00:00:16 verbose #39 > >         TimeList: int64 list
00:00:16 verbose #40 > >     }
00:00:16 verbose #41 > >
00:00:16 verbose #42 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #43 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #44 > > │ ## run                                                                       │
00:00:16 verbose #45 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #46 > >
00:00:16 verbose #47 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #48 > > let run count (solutions: (string * ('TInput -> 'TExpected)) list) (input,
00:00:16 verbose #49 > > expected) =
00:00:16 verbose #50 > >     let inputStr =
00:00:16 verbose #51 > >         match box input with
00:00:16 verbose #52 > >         | :? System.Collections.ICollection as input ->
00:00:16 verbose #53 > >             System.Linq.Enumerable.Cast<obj> input
00:00:16 verbose #54 > >             |> Seq.map string
00:00:16 verbose #55 > >             |> SpiralSm.concat ","
00:00:16 verbose #56 > >         | _ -> input.ToString ()
00:00:16 verbose #57 > >
00:00:16 verbose #58 > >     printfn ""
00:00:16 verbose #59 > >     printfn $"Solution: {inputStr}  "
00:00:16 verbose #60 > >
00:00:16 verbose #61 > >     let performanceInvoke (fn: unit -> 'T) =
00:00:16 verbose #62 > >         GC.Collect ()
00:00:16 verbose #63 > >         let stopwatch = System.Diagnostics.Stopwatch ()
00:00:16 verbose #64 > >         stopwatch.Start ()
00:00:16 verbose #65 > >         let time1 = stopwatch.ElapsedMilliseconds
00:00:16 verbose #66 > >
00:00:16 verbose #67 > >         let result =
00:00:16 verbose #68 > >             [[| 0 .. count |]]
00:00:16 verbose #69 > >             |> Array.Parallel.map (fun _ ->
00:00:16 verbose #70 > >                 fn ()
00:00:16 verbose #71 > >             )
00:00:16 verbose #72 > >             |> Array.last
00:00:16 verbose #73 > >
00:00:16 verbose #74 > >         let time2 = stopwatch.ElapsedMilliseconds - time1
00:00:16 verbose #75 > >
00:00:16 verbose #76 > >         result, time2
00:00:16 verbose #77 > >
00:00:16 verbose #78 > >     let resultsWithTime =
00:00:16 verbose #79 > >         solutions
00:00:16 verbose #80 > >         |> List.mapi (fun i (testName, solution) ->
00:00:16 verbose #81 > >             let result, time = performanceInvoke (fun () -> solution input)
00:00:16 verbose #82 > >             printfn $"Test case %d{i + 1}. %s{testName}. Time: %A{time}  "
00:00:16 verbose #83 > >             result, time
00:00:16 verbose #84 > >         )
00:00:16 verbose #85 > >
00:00:16 verbose #86 > >
00:00:16 verbose #87 > >     match resultsWithTime |> List.map fst with
00:00:16 verbose #88 > >     | ([[]] | [[ _ ]]) -> ()
00:00:16 verbose #89 > >     | (head :: tail) when tail |> List.forall ((=) head) -> ()
00:00:16 verbose #90 > >     | results -> failwithf $"Challenge error: %A{results}"
00:00:16 verbose #91 > >
00:00:16 verbose #92 > >     {
00:00:16 verbose #93 > >         Input = inputStr
00:00:16 verbose #94 > >         Expected = expected.ToString ()
00:00:16 verbose #95 > >         Result = resultsWithTime |> Seq.map fst |> Seq.head |> _.ToString()
00:00:16 verbose #96 > >         TimeList = resultsWithTime |> List.map snd
00:00:16 verbose #97 > >     }
00:00:16 verbose #98 > >
00:00:16 verbose #99 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #100 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #101 > > │ ## runAll                                                                    │
00:00:16 verbose #102 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #103 > >
00:00:16 verbose #104 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #105 > > let runAll testName count (solutions: (string * ('TInput -> 'TExpected)) list)
00:00:16 verbose #106 > > testCases =
00:00:16 verbose #107 > >     printfn ""
00:00:16 verbose #108 > >     printfn ""
00:00:16 verbose #109 > >     printfn $"Test: {testName}"
00:00:16 verbose #110 > >     testCases
00:00:16 verbose #111 > >     |> Seq.map (run count solutions)
00:00:16 verbose #112 > >     |> Seq.toList
00:00:16 verbose #113 > >
00:00:16 verbose #114 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #115 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #116 > > │ ## sortResultList                                                            │
00:00:16 verbose #117 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #118 > >
00:00:16 verbose #119 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #120 > > let sortResultList resultList =
00:00:16 verbose #121 > >     let table =
00:00:16 verbose #122 > >         let rows =
00:00:16 verbose #123 > >             resultList
00:00:16 verbose #124 > >             |> List.map (fun result ->
00:00:16 verbose #125 > >                 let best =
00:00:16 verbose #126 > >                     result.TimeList
00:00:16 verbose #127 > >                     |> List.mapi (fun i time ->
00:00:16 verbose #128 > >                         i + 1, time
00:00:16 verbose #129 > >                     )
00:00:16 verbose #130 > >                     |> List.sortBy snd
00:00:16 verbose #131 > >                     |> List.head
00:00:16 verbose #132 > >                     |> _.ToString()
00:00:16 verbose #133 > >                 let row =
00:00:16 verbose #134 > >                     [[
00:00:16 verbose #135 > >                         result.Input
00:00:16 verbose #136 > >                         result.Expected
00:00:16 verbose #137 > >                         result.Result
00:00:16 verbose #138 > >                         best
00:00:16 verbose #139 > >                     ]]
00:00:16 verbose #140 > >                 let color =
00:00:16 verbose #141 > >                     match result.Expected = result.Result with
00:00:16 verbose #142 > >                     | true -> Some ConsoleColor.DarkGreen
00:00:16 verbose #143 > >                     | false -> Some ConsoleColor.DarkRed
00:00:16 verbose #144 > >                 row, color
00:00:16 verbose #145 > >             )
00:00:16 verbose #146 > >         let header =
00:00:16 verbose #147 > >             [[
00:00:16 verbose #148 > >                 [[
00:00:16 verbose #149 > >                     "Input"
00:00:16 verbose #150 > >                     "Expected"
00:00:16 verbose #151 > >                     "Result"
00:00:16 verbose #152 > >                     "Best"
00:00:16 verbose #153 > >                 ]]
00:00:16 verbose #154 > >                 [[
00:00:16 verbose #155 > >                     "---"
00:00:16 verbose #156 > >                     "---"
00:00:16 verbose #157 > >                     "---"
00:00:16 verbose #158 > >                     "---"
00:00:16 verbose #159 > >                 ]]
00:00:16 verbose #160 > >             ]]
00:00:16 verbose #161 > >             |> List.map (fun row -> row, None)
00:00:16 verbose #162 > >         header @ rows
00:00:16 verbose #163 > >
00:00:16 verbose #164 > >     let formattedTable =
00:00:16 verbose #165 > >         let lengthMap =
00:00:16 verbose #166 > >             table
00:00:16 verbose #167 > >             |> List.map fst
00:00:16 verbose #168 > >             |> List.transpose
00:00:16 verbose #169 > >             |> List.map (fun column ->
00:00:16 verbose #170 > >                 column
00:00:16 verbose #171 > >                 |> List.map String.length
00:00:16 verbose #172 > >                 |> List.sortDescending
00:00:16 verbose #173 > >                 |> List.tryHead
00:00:16 verbose #174 > >                 |> Option.defaultValue 0
00:00:16 verbose #175 > >             )
00:00:16 verbose #176 > >             |> List.indexed
00:00:16 verbose #177 > >             |> Map.ofList
00:00:16 verbose #178 > >         table
00:00:16 verbose #179 > >         |> List.map (fun (row, color) ->
00:00:16 verbose #180 > >             let newRow =
00:00:16 verbose #181 > >                 row
00:00:16 verbose #182 > >                 |> List.mapi (fun i cell ->
00:00:16 verbose #183 > >                     cell.PadRight lengthMap.[[i]]
00:00:16 verbose #184 > >                 )
00:00:16 verbose #185 > >             newRow, color
00:00:16 verbose #186 > >         )
00:00:16 verbose #187 > >
00:00:16 verbose #188 > >     printfn ""
00:00:16 verbose #189 > >     formattedTable
00:00:16 verbose #190 > >     |> List.iter (fun (row, color) ->
00:00:16 verbose #191 > >         match color with
00:00:16 verbose #192 > >         | Some color -> Console.ForegroundColor <- color
00:00:16 verbose #193 > >         | None -> Console.ResetColor ()
00:00:16 verbose #194 > >
00:00:16 verbose #195 > >         printfn "%s" (String.Join ("\t| ", row))
00:00:16 verbose #196 > >
00:00:16 verbose #197 > >         Console.ResetColor ()
00:00:16 verbose #198 > >     )
00:00:16 verbose #199 > >
00:00:16 verbose #200 > >     let averages =
00:00:16 verbose #201 > >         resultList
00:00:16 verbose #202 > >         |> List.map (fun result -> result.TimeList |> List.map float)
00:00:16 verbose #203 > >         |> List.transpose
00:00:16 verbose #204 > >         |> List.map List.average
00:00:16 verbose #205 > >         |> List.map int64
00:00:16 verbose #206 > >         |> List.indexed
00:00:16 verbose #207 > >
00:00:16 verbose #208 > >     printfn ""
00:00:16 verbose #209 > >     printfn "Average Ranking  "
00:00:16 verbose #210 > >     averages
00:00:16 verbose #211 > >     |> List.sortBy snd
00:00:16 verbose #212 > >     |> List.iter (fun (i, avg) ->
00:00:16 verbose #213 > >         printfn $"Test case %d{i + 1}. Average Time: %A{avg}  "
00:00:16 verbose #214 > >     )
00:00:16 verbose #215 > >
00:00:16 verbose #216 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #217 > > let mutable _count =
00:00:16 verbose #218 > >     if ("CI" |> System.Environment.GetEnvironmentVariable |> fun x -> $"%A{x}")
00:00:16 verbose #219 > > <> "<null>"
00:00:16 verbose #220 > >     then 2000000
00:00:16 verbose #221 > >     else 2000
00:00:16 verbose #222 > >
00:00:16 verbose #223 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #224 > > inl is_fast () =
00:00:16 verbose #225 > >     false
00:00:16 verbose #226 > >
00:00:16 verbose #227 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #228 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #229 > > │ ## empty3Tests                                                               │
00:00:16 verbose #230 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #231 > >
00:00:16 verbose #232 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #233 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #234 > > │ Test: Empty3                                                                 │
00:00:16 verbose #235 > > │                                                                              │
00:00:16 verbose #236 > > │ Solution: (a, a)                                                             │
00:00:16 verbose #237 > > │ Test case 1. A. Time: 91L                                                    │
00:00:16 verbose #238 > > │                                                                              │
00:00:16 verbose #239 > > │ Solution: (a, a)                                                             │
00:00:16 verbose #240 > > │ Test case 1. A. Time: 56L                                                    │
00:00:16 verbose #241 > > │                                                                              │
00:00:16 verbose #242 > > │ Input  | Expected      | Result | Best                                       │
00:00:16 verbose #243 > > │ ---    | ---           | ---    | ---                                        │
00:00:16 verbose #244 > > │ (a, a) | a             | a      | (1, 91)                                    │
00:00:16 verbose #245 > > │ (a, a) | a             | a      | (1, 56)                                    │
00:00:16 verbose #246 > > │                                                                              │
00:00:16 verbose #247 > > │ Averages                                                                     │
00:00:16 verbose #248 > > │ Test case 1. Average Time: 73L                                               │
00:00:16 verbose #249 > > │                                                                              │
00:00:16 verbose #250 > > │ Ranking                                                                      │
00:00:16 verbose #251 > > │ Test case 1. Average Time: 73L                                               │
00:00:16 verbose #252 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #253 > >
00:00:16 verbose #254 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #255 > > //// test
00:00:16 verbose #256 > >
00:00:16 verbose #257 > > let solutions = [[
00:00:16 verbose #258 > >     "A",
00:00:16 verbose #259 > >     fun (a, _b) ->
00:00:16 verbose #260 > >         a
00:00:16 verbose #261 > > ]]
00:00:16 verbose #262 > > let testCases = seq {
00:00:16 verbose #263 > >     ("a", "a"), "a"
00:00:16 verbose #264 > >     ("a", "a"), "a"
00:00:16 verbose #265 > > }
00:00:16 verbose #266 > > let rec empty3Tests = runAll (nameof empty3Tests) _count solutions testCases
00:00:16 verbose #267 > > empty3Tests
00:00:16 verbose #268 > > |> sortResultList
00:00:17 verbose #269 > >
00:00:17 verbose #270 > > ╭─[ 408.44ms - stdout ]────────────────────────────────────────────────────────╮
00:00:17 verbose #271 > > │                                                                              │
00:00:17 verbose #272 > > │                                                                              │
00:00:17 verbose #273 > > │ Test: empty3Tests                                                            │
00:00:17 verbose #274 > > │                                                                              │
00:00:17 verbose #275 > > │ Solution: (a, a)                                                             │
00:00:17 verbose #276 > > │ Test case 1. A. Time: 37L                                                    │
00:00:17 verbose #277 > > │                                                                              │
00:00:17 verbose #278 > > │ Solution: (a, a)                                                             │
00:00:17 verbose #279 > > │ Test case 1. A. Time: 27L                                                    │
00:00:17 verbose #280 > > │                                                                              │
00:00:17 verbose #281 > > │ Input 	| Expected	| Result	| Best                                                  │
00:00:17 verbose #282 > > │ ---   	| ---     	| ---   	| ---                                                   │
00:00:17 verbose #283 > > │ (a, a)	| a       	| a     	| (1, 37)                                               │
00:00:17 verbose #284 > > │ (a, a)	| a       	| a     	| (1, 27)                                               │
00:00:17 verbose #285 > > │                                                                              │
00:00:17 verbose #286 > > │ Average Ranking                                                              │
00:00:17 verbose #287 > > │ Test case 1. Average Time: 32L                                               │
00:00:17 verbose #288 > > │                                                                              │
00:00:17 verbose #289 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 verbose #290 > >
00:00:17 verbose #291 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 verbose #292 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 verbose #293 > > │ ## empty2Tests                                                               │
00:00:17 verbose #294 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 verbose #295 > >
00:00:17 verbose #296 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 verbose #297 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 verbose #298 > > │ Test: Empty2                                                                 │
00:00:17 verbose #299 > > │                                                                              │
00:00:17 verbose #300 > > │ Solution: (a, a)                                                             │
00:00:17 verbose #301 > > │ Test case 1. A. Time: 59L                                                    │
00:00:17 verbose #302 > > │                                                                              │
00:00:17 verbose #303 > > │ Solution: (a, a)                                                             │
00:00:17 verbose #304 > > │ Test case 1. A. Time: 53L                                                    │
00:00:17 verbose #305 > > │                                                                              │
00:00:17 verbose #306 > > │ Input   | Expected        | Result  | Best                                   │
00:00:17 verbose #307 > > │ ---     | ---             | ---     | ---                                    │
00:00:17 verbose #308 > > │ (a, a)  | a               | a       | (1, 59)                                │
00:00:17 verbose #309 > > │ (a, a)  | a               | a       | (1, 53)                                │
00:00:17 verbose #310 > > │                                                                              │
00:00:17 verbose #311 > > │ Averages                                                                     │
00:00:17 verbose #312 > > │ Test case 1. Average Time: 56L                                               │
00:00:17 verbose #313 > > │                                                                              │
00:00:17 verbose #314 > > │ Ranking                                                                      │
00:00:17 verbose #315 > > │ Test case 1. Average Time: 56L                                               │
00:00:17 verbose #316 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 verbose #317 > >
00:00:17 verbose #318 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:17 verbose #319 > > //// test
00:00:17 verbose #320 > >
00:00:17 verbose #321 > > let solutions = [[
00:00:17 verbose #322 > >     "A",
00:00:17 verbose #323 > >     fun (a, _b) ->
00:00:17 verbose #324 > >         a
00:00:17 verbose #325 > > ]]
00:00:17 verbose #326 > > let testCases = seq {
00:00:17 verbose #327 > >     ("a", "a"), "a"
00:00:17 verbose #328 > >     ("a", "a"), "a"
00:00:17 verbose #329 > > }
00:00:17 verbose #330 > > let rec empty2Tests = runAll (nameof empty2Tests) _count solutions testCases
00:00:17 verbose #331 > > empty2Tests
00:00:17 verbose #332 > > |> sortResultList
00:00:17 verbose #333 > >
00:00:17 verbose #334 > > ╭─[ 380.29ms - stdout ]────────────────────────────────────────────────────────╮
00:00:17 verbose #335 > > │                                                                              │
00:00:17 verbose #336 > > │                                                                              │
00:00:17 verbose #337 > > │ Test: empty2Tests                                                            │
00:00:17 verbose #338 > > │                                                                              │
00:00:17 verbose #339 > > │ Solution: (a, a)                                                             │
00:00:17 verbose #340 > > │ Test case 1. A. Time: 24L                                                    │
00:00:17 verbose #341 > > │                                                                              │
00:00:17 verbose #342 > > │ Solution: (a, a)                                                             │
00:00:17 verbose #343 > > │ Test case 1. A. Time: 32L                                                    │
00:00:17 verbose #344 > > │                                                                              │
00:00:17 verbose #345 > > │ Input 	| Expected	| Result	| Best                                                  │
00:00:17 verbose #346 > > │ ---   	| ---     	| ---   	| ---                                                   │
00:00:17 verbose #347 > > │ (a, a)	| a       	| a     	| (1, 24)                                               │
00:00:17 verbose #348 > > │ (a, a)	| a       	| a     	| (1, 32)                                               │
00:00:17 verbose #349 > > │                                                                              │
00:00:17 verbose #350 > > │ Average Ranking                                                              │
00:00:17 verbose #351 > > │ Test case 1. Average Time: 28L                                               │
00:00:17 verbose #352 > > │                                                                              │
00:00:17 verbose #353 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 verbose #354 > >
00:00:17 verbose #355 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 verbose #356 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 verbose #357 > > │ ## emptyTests                                                                │
00:00:17 verbose #358 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 verbose #359 > >
00:00:17 verbose #360 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:17 verbose #361 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:17 verbose #362 > > │ Test: Empty                                                                  │
00:00:17 verbose #363 > > │                                                                              │
00:00:17 verbose #364 > > │ Solution: 0                                                                  │
00:00:17 verbose #365 > > │ Test case 1. A. Time: 61L                                                    │
00:00:17 verbose #366 > > │                                                                              │
00:00:17 verbose #367 > > │ Solution: 2                                                                  │
00:00:17 verbose #368 > > │ Test case 1. A. Time: 62L                                                    │
00:00:17 verbose #369 > > │                                                                              │
00:00:17 verbose #370 > > │ Solution: 5                                                                  │
00:00:17 verbose #371 > > │ Test case 1. A. Time: 70L                                                    │
00:00:17 verbose #372 > > │                                                                              │
00:00:17 verbose #373 > > │ Input   | Expected        | Result  | Best                                   │
00:00:17 verbose #374 > > │ ---     | ---             | ---     | ---                                    │
00:00:17 verbose #375 > > │ 0       | 0               | 0       | (1, 61)                                │
00:00:17 verbose #376 > > │ 2       | 2               | 2       | (1, 62)                                │
00:00:17 verbose #377 > > │ 5       | 5               | 5       | (1, 70)                                │
00:00:17 verbose #378 > > │                                                                              │
00:00:17 verbose #379 > > │ Averages                                                                     │
00:00:17 verbose #380 > > │ Test case 1. Average Time: 64L                                               │
00:00:17 verbose #381 > > │                                                                              │
00:00:17 verbose #382 > > │ Ranking                                                                      │
00:00:17 verbose #383 > > │ Test case 1. Average Time: 64L                                               │
00:00:17 verbose #384 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:17 verbose #385 > >
00:00:17 verbose #386 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:17 verbose #387 > > //// test
00:00:17 verbose #388 > >
00:00:17 verbose #389 > > let solutions = [[
00:00:17 verbose #390 > >     "A",
00:00:17 verbose #391 > >     fun n ->
00:00:17 verbose #392 > >         n + 0
00:00:17 verbose #393 > > ]]
00:00:17 verbose #394 > > let testCases = seq {
00:00:17 verbose #395 > >     0, 0
00:00:17 verbose #396 > >     2, 2
00:00:17 verbose #397 > >     5, 5
00:00:17 verbose #398 > > }
00:00:17 verbose #399 > > let rec emptyTests = runAll (nameof emptyTests) _count solutions testCases
00:00:17 verbose #400 > > emptyTests
00:00:17 verbose #401 > > |> sortResultList
00:00:18 verbose #402 > >
00:00:18 verbose #403 > > ╭─[ 555.23ms - stdout ]────────────────────────────────────────────────────────╮
00:00:18 verbose #404 > > │                                                                              │
00:00:18 verbose #405 > > │                                                                              │
00:00:18 verbose #406 > > │ Test: emptyTests                                                             │
00:00:18 verbose #407 > > │                                                                              │
00:00:18 verbose #408 > > │ Solution: 0                                                                  │
00:00:18 verbose #409 > > │ Test case 1. A. Time: 26L                                                    │
00:00:18 verbose #410 > > │                                                                              │
00:00:18 verbose #411 > > │ Solution: 2                                                                  │
00:00:18 verbose #412 > > │ Test case 1. A. Time: 36L                                                    │
00:00:18 verbose #413 > > │                                                                              │
00:00:18 verbose #414 > > │ Solution: 5                                                                  │
00:00:18 verbose #415 > > │ Test case 1. A. Time: 24L                                                    │
00:00:18 verbose #416 > > │                                                                              │
00:00:18 verbose #417 > > │ Input	| Expected	| Result	| Best                                                   │
00:00:18 verbose #418 > > │ ---  	| ---     	| ---   	| ---                                                    │
00:00:18 verbose #419 > > │ 0    	| 0       	| 0     	| (1, 26)                                                │
00:00:18 verbose #420 > > │ 2    	| 2       	| 2     	| (1, 36)                                                │
00:00:18 verbose #421 > > │ 5    	| 5       	| 5     	| (1, 24)                                                │
00:00:18 verbose #422 > > │                                                                              │
00:00:18 verbose #423 > > │ Average Ranking                                                              │
00:00:18 verbose #424 > > │ Test case 1. Average Time: 28L                                               │
00:00:18 verbose #425 > > │                                                                              │
00:00:18 verbose #426 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 verbose #427 > >
00:00:18 verbose #428 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 verbose #429 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 verbose #430 > > │ ## uniqueLettersTests                                                        │
00:00:18 verbose #431 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 verbose #432 > >
00:00:18 verbose #433 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:18 verbose #434 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:18 verbose #435 > > │ Test: UniqueLetters                                                          │
00:00:18 verbose #436 > > │                                                                              │
00:00:18 verbose #437 > > │ Solution: abc                                                                │
00:00:18 verbose #438 > > │ Test case 1. A. Time: 1512L                                                  │
00:00:18 verbose #439 > > │ Test case 2. B. Time: 1947L                                                  │
00:00:18 verbose #440 > > │ Test case 3. C. Time: 2023L                                                  │
00:00:18 verbose #441 > > │ Test case 4. D. Time: 1358L                                                  │
00:00:18 verbose #442 > > │ Test case 5. E. Time: 1321L                                                  │
00:00:18 verbose #443 > > │ Test case 6. F. Time: 1346L                                                  │
00:00:18 verbose #444 > > │ Test case 7. G. Time: 1304L                                                  │
00:00:18 verbose #445 > > │ Test case 8. H. Time: 1383L                                                  │
00:00:18 verbose #446 > > │ Test case 9. I. Time: 1495L                                                  │
00:00:18 verbose #447 > > │ Test case 10. J. Time: 1245L                                                 │
00:00:18 verbose #448 > > │ Test case 11. K. Time: 1219L                                                 │
00:00:18 verbose #449 > > │                                                                              │
00:00:18 verbose #450 > > │ Solution: accabb                                                             │
00:00:18 verbose #451 > > │ Test case 1. A. Time: 1648L                                                  │
00:00:18 verbose #452 > > │ Test case 2. B. Time: 2061L                                                  │
00:00:18 verbose #453 > > │ Test case 3. C. Time: 2413L                                                  │
00:00:18 verbose #454 > > │ Test case 4. D. Time: 1561L                                                  │
00:00:18 verbose #455 > > │ Test case 5. E. Time: 1593L                                                  │
00:00:18 verbose #456 > > │ Test case 6. F. Time: 1518L                                                  │
00:00:18 verbose #457 > > │ Test case 7. G. Time: 1415L                                                  │
00:00:18 verbose #458 > > │ Test case 8. H. Time: 1510L                                                  │
00:00:18 verbose #459 > > │ Test case 9. I. Time: 1445L                                                  │
00:00:18 verbose #460 > > │ Test case 10. J. Time: 1636L                                                 │
00:00:18 verbose #461 > > │ Test case 11. K. Time: 1317L                                                 │
00:00:18 verbose #462 > > │                                                                              │
00:00:18 verbose #463 > > │ Solution: pprrqqpp                                                           │
00:00:18 verbose #464 > > │ Test case 1. A. Time: 2255L                                                  │
00:00:18 verbose #465 > > │ Test case 2. B. Time: 2408L                                                  │
00:00:18 verbose #466 > > │ Test case 3. C. Time: 2393L                                                  │
00:00:18 verbose #467 > > │ Test case 4. D. Time: 1675L                                                  │
00:00:18 verbose #468 > > │ Test case 5. E. Time: 1911L                                                  │
00:00:18 verbose #469 > > │ Test case 6. F. Time: 2126L                                                  │
00:00:18 verbose #470 > > │ Test case 7. G. Time: 1504L                                                  │
00:00:18 verbose #471 > > │ Test case 8. H. Time: 1715L                                                  │
00:00:18 verbose #472 > > │ Test case 9. I. Time: 1537L                                                  │
00:00:18 verbose #473 > > │ Test case 10. J. Time: 1522L                                                 │
00:00:18 verbose #474 > > │ Test case 11. K. Time: 1322L                                                 │
00:00:18 verbose #475 > > │                                                                              │
00:00:18 verbose #476 > > │ Solution:                                                                    │
00:00:18 verbose #477 > > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │
00:00:18 verbose #478 > > │ bbb                                                                          │
00:00:18 verbose #479 > > │ Test case 1. A. Time: 13073L                                                 │
00:00:18 verbose #480 > > │ Test case 2. B. Time: 11519L                                                 │
00:00:18 verbose #481 > > │ Test case 3. C. Time: 8373L                                                  │
00:00:18 verbose #482 > > │ Test case 4. D. Time: 5860L                                                  │
00:00:18 verbose #483 > > │ Test case 5. E. Time: 6490L                                                  │
00:00:18 verbose #484 > > │ Test case 6. F. Time: 6325L                                                  │
00:00:18 verbose #485 > > │ Test case 7. G. Time: 5799L                                                  │
00:00:18 verbose #486 > > │ Test case 8. H. Time: 7099L                                                  │
00:00:18 verbose #487 > > │ Test case 9. I. Time: 6133L                                                  │
00:00:18 verbose #488 > > │ Test case 10. J. Time: 5993L                                                 │
00:00:18 verbose #489 > > │ Test case 11. K. Time: 2040L                                                 │
00:00:18 verbose #490 > > │                                                                              │
00:00:18 verbose #491 > > │ Input                                                                        │
00:00:18 verbose #492 > > │ | Expected        | Result  | Best                                           │
00:00:18 verbose #493 > > │ ---                                                                          │
00:00:18 verbose #494 > > │                                                                              │
00:00:18 verbose #495 > > │ | ---             | ---     | ---                                            │
00:00:18 verbose #496 > > │ abc                                                                          │
00:00:18 verbose #497 > > │                                                                              │
00:00:18 verbose #498 > > │ | abc             | abc     | (11, 1219)                                     │
00:00:18 verbose #499 > > │ accabb                                                                       │
00:00:18 verbose #500 > > │ | acb             | acb     | (11, 1317)                                     │
00:00:18 verbose #501 > > │ pprrqqpp                                                                     │
00:00:18 verbose #502 > > │ | prq             | prq     | (11, 1322)                                     │
00:00:18 verbose #503 > > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │
00:00:18 verbose #504 > > │ bbb | acb             | acb     | (11, 2040)                                 │
00:00:18 verbose #505 > > │                                                                              │
00:00:18 verbose #506 > > │ Averages                                                                     │
00:00:18 verbose #507 > > │ Test case 1. Average Time: 4622L                                             │
00:00:18 verbose #508 > > │ Test case 2. Average Time: 4483L                                             │
00:00:18 verbose #509 > > │ Test case 3. Average Time: 3800L                                             │
00:00:18 verbose #510 > > │ Test case 4. Average Time: 2613L                                             │
00:00:18 verbose #511 > > │ Test case 5. Average Time: 2828L                                             │
00:00:18 verbose #512 > > │ Test case 6. Average Time: 2828L                                             │
00:00:18 verbose #513 > > │ Test case 7. Average Time: 2505L                                             │
00:00:18 verbose #514 > > │ Test case 8. Average Time: 2926L                                             │
00:00:18 verbose #515 > > │ Test case 9. Average Time: 2652L                                             │
00:00:18 verbose #516 > > │ Test case 10. Average Time: 2599L                                            │
00:00:18 verbose #517 > > │ Test case 11. Average Time: 1474L                                            │
00:00:18 verbose #518 > > │                                                                              │
00:00:18 verbose #519 > > │ Ranking                                                                      │
00:00:18 verbose #520 > > │ Test case 1. Average Time: 4622L                                             │
00:00:18 verbose #521 > > │ Test case 2. Average Time: 4483L                                             │
00:00:18 verbose #522 > > │ Test case 3. Average Time: 3800L                                             │
00:00:18 verbose #523 > > │ Test case 8. Average Time: 2926L                                             │
00:00:18 verbose #524 > > │ Test case 5. Average Time: 2828L                                             │
00:00:18 verbose #525 > > │ Test case 6. Average Time: 2828L                                             │
00:00:18 verbose #526 > > │ Test case 9. Average Time: 2652L                                             │
00:00:18 verbose #527 > > │ Test case 4. Average Time: 2613L                                             │
00:00:18 verbose #528 > > │ Test case 10. Average Time: 2599L                                            │
00:00:18 verbose #529 > > │ Test case 7. Average Time: 2505L                                             │
00:00:18 verbose #530 > > │ Test case 11. Average Time: 1474L                                            │
00:00:18 verbose #531 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 verbose #532 > >
00:00:18 verbose #533 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:18 verbose #534 > > //// test
00:00:18 verbose #535 > >
00:00:18 verbose #536 > > let solutions = [[
00:00:18 verbose #537 > >     "A",
00:00:18 verbose #538 > >     fun input ->
00:00:18 verbose #539 > >         input
00:00:18 verbose #540 > >         |> Seq.toList
00:00:18 verbose #541 > >         |> List.fold (fun acc x -> if List.contains x acc then acc else acc @ [[
00:00:18 verbose #542 > > x ]]) [[]]
00:00:18 verbose #543 > >         |> Seq.toArray
00:00:18 verbose #544 > >         |> String
00:00:18 verbose #545 > >
00:00:18 verbose #546 > >     "B",
00:00:18 verbose #547 > >     fun input ->
00:00:18 verbose #548 > >         input
00:00:18 verbose #549 > >         |> Seq.rev
00:00:18 verbose #550 > >         |> fun list -> Seq.foldBack (fun x acc -> if List.contains x acc then
00:00:18 verbose #551 > > acc else x :: acc) list [[]]
00:00:18 verbose #552 > >         |> Seq.rev
00:00:18 verbose #553 > >         |> Seq.toArray
00:00:18 verbose #554 > >         |> String
00:00:18 verbose #555 > >
00:00:18 verbose #556 > >     "C",
00:00:18 verbose #557 > >     fun input ->
00:00:18 verbose #558 > >         input
00:00:18 verbose #559 > >         |> Seq.rev
00:00:18 verbose #560 > >         |> fun list -> Seq.foldBack (fun x (set, acc) -> if Set.contains x set
00:00:18 verbose #561 > > then set, acc else set.Add x, x :: acc) list (Set.empty, [[]])
00:00:18 verbose #562 > >         |> snd
00:00:18 verbose #563 > >         |> Seq.rev
00:00:18 verbose #564 > >         |> Seq.toArray
00:00:18 verbose #565 > >         |> String
00:00:18 verbose #566 > >
00:00:18 verbose #567 > >     "D",
00:00:18 verbose #568 > >     fun input ->
00:00:18 verbose #569 > >         input
00:00:18 verbose #570 > >         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:18 verbose #571 > > else set.Add x, Array.append acc [[| x |]]) (Set.empty, [[||]])
00:00:18 verbose #572 > >         |> snd
00:00:18 verbose #573 > >         |> String
00:00:18 verbose #574 > >
00:00:18 verbose #575 > >     "E",
00:00:18 verbose #576 > >     fun input ->
00:00:18 verbose #577 > >         input
00:00:18 verbose #578 > >         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:18 verbose #579 > > else set.Add x, x :: acc) (Set.empty, [[]])
00:00:18 verbose #580 > >         |> snd
00:00:18 verbose #581 > >         |> List.rev
00:00:18 verbose #582 > >         |> List.toArray
00:00:18 verbose #583 > >         |> String
00:00:18 verbose #584 > >
00:00:18 verbose #585 > >     "F",
00:00:18 verbose #586 > >     fun input ->
00:00:18 verbose #587 > >         input
00:00:18 verbose #588 > >         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:18 verbose #589 > > else set.Add x, acc @ [[ x ]]) (Set.empty, [[]])
00:00:18 verbose #590 > >         |> snd
00:00:18 verbose #591 > >         |> List.toArray
00:00:18 verbose #592 > >         |> String
00:00:18 verbose #593 > >
00:00:18 verbose #594 > >     "G",
00:00:18 verbose #595 > >     fun input ->
00:00:18 verbose #596 > >         input
00:00:18 verbose #597 > >         |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc
00:00:18 verbose #598 > > else set.Add x, x :: acc) (Set.empty, [[]])
00:00:18 verbose #599 > >         |> snd
00:00:18 verbose #600 > >         |> List.toArray
00:00:18 verbose #601 > >         |> Array.rev
00:00:18 verbose #602 > >         |> String
00:00:18 verbose #603 > >
00:00:18 verbose #604 > >     "H",
00:00:18 verbose #605 > >     fun input ->
00:00:18 verbose #606 > >         input
00:00:18 verbose #607 > >         |> Seq.toList
00:00:18 verbose #608 > >         |> fun list ->
00:00:18 verbose #609 > >             let rec loop set = function
00:00:18 verbose #610 > >                 | head :: tail when Set.contains head set -> loop set tail
00:00:18 verbose #611 > >                 | head :: tail -> (loop (set.Add head) tail) @ [[ head ]]
00:00:18 verbose #612 > >                 | [[]] -> [[]]
00:00:18 verbose #613 > >             loop Set.empty list
00:00:18 verbose #614 > >             |> List.rev
00:00:18 verbose #615 > >         |> List.toArray
00:00:18 verbose #616 > >         |> String
00:00:18 verbose #617 > >
00:00:18 verbose #618 > >     "I",
00:00:18 verbose #619 > >     fun input ->
00:00:18 verbose #620 > >         input
00:00:18 verbose #621 > >         |> Seq.toList
00:00:18 verbose #622 > >         |> fun list ->
00:00:18 verbose #623 > >             let rec loop set = function
00:00:18 verbose #624 > >                 | head :: tail when Set.contains head set -> loop set tail
00:00:18 verbose #625 > >                 | head :: tail -> loop (set.Add head) tail |> Array.append [[|
00:00:18 verbose #626 > > head |]]
00:00:18 verbose #627 > >                 | [[]] -> [[||]]
00:00:18 verbose #628 > >             loop Set.empty list
00:00:18 verbose #629 > >         |> String
00:00:18 verbose #630 > >
00:00:18 verbose #631 > >     "J",
00:00:18 verbose #632 > >     fun input ->
00:00:18 verbose #633 > >         input
00:00:18 verbose #634 > >         |> Seq.toList
00:00:18 verbose #635 > >         |> fun list ->
00:00:18 verbose #636 > >             let rec loop set = function
00:00:18 verbose #637 > >                 | head :: tail when Set.contains head set -> loop set tail
00:00:18 verbose #638 > >                 | head :: tail -> head :: loop (set.Add head) tail
00:00:18 verbose #639 > >                 | [[]] -> [[]]
00:00:18 verbose #640 > >             loop Set.empty list
00:00:18 verbose #641 > >         |> List.toArray
00:00:18 verbose #642 > >         |> String
00:00:18 verbose #643 > >
00:00:18 verbose #644 > >     "K",
00:00:18 verbose #645 > >     fun input ->
00:00:18 verbose #646 > >         input
00:00:18 verbose #647 > >         |> Seq.distinct
00:00:18 verbose #648 > >         |> Seq.toArray
00:00:18 verbose #649 > >         |> String
00:00:18 verbose #650 > > ]]
00:00:18 verbose #651 > > let testCases = seq {
00:00:18 verbose #652 > >     "abc", "abc"
00:00:18 verbose #653 > >     "accabb", "acb"
00:00:18 verbose #654 > >     "pprrqqpp", "prq"
00:00:18 verbose #655 > >
00:00:18 verbose #656 > > "aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb
00:00:18 verbose #657 > > ", "acb"
00:00:18 verbose #658 > > }
00:00:18 verbose #659 > > let rec uniqueLettersTests = runAll (nameof uniqueLettersTests) _count solutions
00:00:18 verbose #660 > > testCases
00:00:18 verbose #661 > > uniqueLettersTests
00:00:18 verbose #662 > > |> sortResultList
00:01:35 verbose #663 > >
00:01:35 verbose #664 > > ╭─[ 1.28m - stdout ]───────────────────────────────────────────────────────────╮
00:01:35 verbose #665 > > │                                                                              │
00:01:35 verbose #666 > > │                                                                              │
00:01:35 verbose #667 > > │ Test: uniqueLettersTests                                                     │
00:01:35 verbose #668 > > │                                                                              │
00:01:35 verbose #669 > > │ Solution: abc                                                                │
00:01:35 verbose #670 > > │ Test case 1. A. Time: 1118L                                                  │
00:01:35 verbose #671 > > │ Test case 2. B. Time: 1711L                                                  │
00:01:35 verbose #672 > > │ Test case 3. C. Time: 1975L                                                  │
00:01:35 verbose #673 > > │ Test case 4. D. Time: 1236L                                                  │
00:01:35 verbose #674 > > │ Test case 5. E. Time: 1329L                                                  │
00:01:35 verbose #675 > > │ Test case 6. F. Time: 1285L                                                  │
00:01:35 verbose #676 > > │ Test case 7. G. Time: 1271L                                                  │
00:01:35 verbose #677 > > │ Test case 8. H. Time: 1398L                                                  │
00:01:35 verbose #678 > > │ Test case 9. I. Time: 1120L                                                  │
00:01:35 verbose #679 > > │ Test case 10. J. Time: 1189L                                                 │
00:01:35 verbose #680 > > │ Test case 11. K. Time: 1138L                                                 │
00:01:35 verbose #681 > > │                                                                              │
00:01:35 verbose #682 > > │ Solution: accabb                                                             │
00:01:35 verbose #683 > > │ Test case 1. A. Time: 1398L                                                  │
00:01:35 verbose #684 > > │ Test case 2. B. Time: 2029L                                                  │
00:01:35 verbose #685 > > │ Test case 3. C. Time: 2585L                                                  │
00:01:35 verbose #686 > > │ Test case 4. D. Time: 1269L                                                  │
00:01:35 verbose #687 > > │ Test case 5. E. Time: 906L                                                   │
00:01:35 verbose #688 > > │ Test case 6. F. Time: 921L                                                   │
00:01:35 verbose #689 > > │ Test case 7. G. Time: 999L                                                   │
00:01:35 verbose #690 > > │ Test case 8. H. Time: 1017L                                                  │
00:01:35 verbose #691 > > │ Test case 9. I. Time: 941L                                                   │
00:01:35 verbose #692 > > │ Test case 10. J. Time: 877L                                                  │
00:01:35 verbose #693 > > │ Test case 11. K. Time: 829L                                                  │
00:01:35 verbose #694 > > │                                                                              │
00:01:35 verbose #695 > > │ Solution: pprrqqpp                                                           │
00:01:35 verbose #696 > > │ Test case 1. A. Time: 917L                                                   │
00:01:35 verbose #697 > > │ Test case 2. B. Time: 1061L                                                  │
00:01:35 verbose #698 > > │ Test case 3. C. Time: 1426L                                                  │
00:01:35 verbose #699 > > │ Test case 4. D. Time: 992L                                                   │
00:01:35 verbose #700 > > │ Test case 5. E. Time: 1020L                                                  │
00:01:35 verbose #701 > > │ Test case 6. F. Time: 1021L                                                  │
00:01:35 verbose #702 > > │ Test case 7. G. Time: 958L                                                   │
00:01:35 verbose #703 > > │ Test case 8. H. Time: 1110L                                                  │
00:01:35 verbose #704 > > │ Test case 9. I. Time: 1029L                                                  │
00:01:35 verbose #705 > > │ Test case 10. J. Time: 966L                                                  │
00:01:35 verbose #706 > > │ Test case 11. K. Time: 777L                                                  │
00:01:35 verbose #707 > > │                                                                              │
00:01:35 verbose #708 > > │ Solution:                                                                    │
00:01:35 verbose #709 > > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │
00:01:35 verbose #710 > > │ bbb                                                                          │
00:01:35 verbose #711 > > │ Test case 1. A. Time: 2371L                                                  │
00:01:35 verbose #712 > > │ Test case 2. B. Time: 2544L                                                  │
00:01:35 verbose #713 > > │ Test case 3. C. Time: 4107L                                                  │
00:01:35 verbose #714 > > │ Test case 4. D. Time: 2519L                                                  │
00:01:35 verbose #715 > > │ Test case 5. E. Time: 2561L                                                  │
00:01:35 verbose #716 > > │ Test case 6. F. Time: 2587L                                                  │
00:01:35 verbose #717 > > │ Test case 7. G. Time: 2529L                                                  │
00:01:35 verbose #718 > > │ Test case 8. H. Time: 2616L                                                  │
00:01:35 verbose #719 > > │ Test case 9. I. Time: 2533L                                                  │
00:01:35 verbose #720 > > │ Test case 10. J. Time: 2407L                                                 │
00:01:35 verbose #721 > > │ Test case 11. K. Time: 1282L                                                 │
00:01:35 verbose #722 > > │                                                                              │
00:01:35 verbose #723 > > │ Input                                                                        │
00:01:35 verbose #724 > > │ | Expected	| Result	| Best                                                       │
00:01:35 verbose #725 > > │ ---                                                                          │
00:01:35 verbose #726 > > │ | ---     	| ---   	| ---                                                        │
00:01:35 verbose #727 > > │ abc                                                                          │
00:01:35 verbose #728 > > │ | abc     	| abc   	| (1, 1118)                                                  │
00:01:35 verbose #729 > > │ accabb                                                                       │
00:01:35 verbose #730 > > │ | acb     	| acb   	| (11, 829)                                                  │
00:01:35 verbose #731 > > │ pprrqqpp                                                                     │
00:01:35 verbose #732 > > │ | prq     	| prq   	| (11, 777)                                                  │
00:01:35 verbose #733 > > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │
00:01:35 verbose #734 > > │ bbb	| acb     	| acb   	| (11, 1282)                                               │
00:01:35 verbose #735 > > │                                                                              │
00:01:35 verbose #736 > > │ Average Ranking                                                              │
00:01:35 verbose #737 > > │ Test case 11. Average Time: 1006L                                            │
00:01:35 verbose #738 > > │ Test case 10. Average Time: 1359L                                            │
00:01:35 verbose #739 > > │ Test case 9. Average Time: 1405L                                             │
00:01:35 verbose #740 > > │ Test case 7. Average Time: 1439L                                             │
00:01:35 verbose #741 > > │ Test case 1. Average Time: 1451L                                             │
00:01:35 verbose #742 > > │ Test case 6. Average Time: 1453L                                             │
00:01:35 verbose #743 > > │ Test case 5. Average Time: 1454L                                             │
00:01:35 verbose #744 > > │ Test case 4. Average Time: 1504L                                             │
00:01:35 verbose #745 > > │ Test case 8. Average Time: 1535L                                             │
00:01:35 verbose #746 > > │ Test case 2. Average Time: 1836L                                             │
00:01:35 verbose #747 > > │ Test case 3. Average Time: 2523L                                             │
00:01:35 verbose #748 > > │                                                                              │
00:01:35 verbose #749 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:35 verbose #750 > >
00:01:35 verbose #751 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:35 verbose #752 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:35 verbose #753 > > │ ## rotateStringsTests                                                        │
00:01:35 verbose #754 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:35 verbose #755 > >
00:01:35 verbose #756 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:35 verbose #757 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:35 verbose #758 > > │ https://www.hackerrank.com/challenges/rotate-string/forum                    │
00:01:35 verbose #759 > > │                                                                              │
00:01:35 verbose #760 > > │ Test: RotateStrings                                                          │
00:01:35 verbose #761 > > │                                                                              │
00:01:35 verbose #762 > > │ Solution: abc                                                                │
00:01:35 verbose #763 > > │ Test case 1. A. Time: 1842L                                                  │
00:01:35 verbose #764 > > │ Test case 2. B. Time: 1846L                                                  │
00:01:35 verbose #765 > > │ Test case 3. C. Time: 1936L                                                  │
00:01:35 verbose #766 > > │ Test case 4. CA. Time: 2224L                                                 │
00:01:35 verbose #767 > > │ Test case 5. CB. Time: 2329L                                                 │
00:01:35 verbose #768 > > │ Test case 6. D. Time: 2474L                                                  │
00:01:35 verbose #769 > > │ Test case 7. E. Time: 1664L                                                  │
00:01:35 verbose #770 > > │ Test case 8. F. Time: 1517L                                                  │
00:01:35 verbose #771 > > │ Test case 9. FA. Time: 1651L                                                 │
00:01:35 verbose #772 > > │ Test case 10. FB. Time: 3764L                                                │
00:01:35 verbose #773 > > │ Test case 11. FC. Time: 5415L                                                │
00:01:35 verbose #774 > > │                                                                              │
00:01:35 verbose #775 > > │ Solution: abcde                                                              │
00:01:35 verbose #776 > > │ Test case 1. A. Time: 3356L                                                  │
00:01:35 verbose #777 > > │ Test case 2. B. Time: 2592L                                                  │
00:01:35 verbose #778 > > │ Test case 3. C. Time: 2346L                                                  │
00:01:35 verbose #779 > > │ Test case 4. CA. Time: 2997L                                                 │
00:01:35 verbose #780 > > │ Test case 5. CB. Time: 3061L                                                 │
00:01:35 verbose #781 > > │ Test case 6. D. Time: 4051L                                                  │
00:01:35 verbose #782 > > │ Test case 7. E. Time: 1905L                                                  │
00:01:35 verbose #783 > > │ Test case 8. F. Time: 1771L                                                  │
00:01:35 verbose #784 > > │ Test case 9. FA. Time: 2175L                                                 │
00:01:35 verbose #785 > > │ Test case 10. FB. Time: 3275L                                                │
00:01:35 verbose #786 > > │ Test case 11. FC. Time: 5266L                                                │
00:01:35 verbose #787 > > │                                                                              │
00:01:35 verbose #788 > > │ Solution: abcdefghi                                                          │
00:01:35 verbose #789 > > │ Test case 1. A. Time: 4492L                                                  │
00:01:35 verbose #790 > > │ Test case 2. B. Time: 3526L                                                  │
00:01:35 verbose #791 > > │ Test case 3. C. Time: 3583L                                                  │
00:01:35 verbose #792 > > │ Test case 4. CA. Time: 3711L                                                 │
00:01:35 verbose #793 > > │ Test case 5. CB. Time: 4783L                                                 │
00:01:35 verbose #794 > > │ Test case 6. D. Time: 7557L                                                  │
00:01:35 verbose #795 > > │ Test case 7. E. Time: 3452L                                                  │
00:01:35 verbose #796 > > │ Test case 8. F. Time: 3050L                                                  │
00:01:35 verbose #797 > > │ Test case 9. FA. Time: 3275L                                                 │
00:01:35 verbose #798 > > │ Test case 10. FB. Time: 4635L                                                │
00:01:35 verbose #799 > > │ Test case 11. FC. Time: 5616L                                                │
00:01:35 verbose #800 > > │                                                                              │
00:01:35 verbose #801 > > │ Solution: abab                                                               │
00:01:35 verbose #802 > > │ Test case 1. A. Time: 2093L                                                  │
00:01:35 verbose #803 > > │ Test case 2. B. Time: 1843L                                                  │
00:01:35 verbose #804 > > │ Test case 3. C. Time: 1746L                                                  │
00:01:35 verbose #805 > > │ Test case 4. CA. Time: 2085L                                                 │
00:01:35 verbose #806 > > │ Test case 5. CB. Time: 2139L                                                 │
00:01:35 verbose #807 > > │ Test case 6. D. Time: 2095L                                                  │
00:01:35 verbose #808 > > │ Test case 7. E. Time: 1723L                                                  │
00:01:35 verbose #809 > > │ Test case 8. F. Time: 1558L                                                  │
00:01:35 verbose #810 > > │ Test case 9. FA. Time: 1620L                                                 │
00:01:35 verbose #811 > > │ Test case 10. FB. Time: 2319L                                                │
00:01:35 verbose #812 > > │ Test case 11. FC. Time: 3918L                                                │
00:01:35 verbose #813 > > │                                                                              │
00:01:35 verbose #814 > > │ Solution: aa                                                                 │
00:01:35 verbose #815 > > │ Test case 1. A. Time: 1107L                                                  │
00:01:35 verbose #816 > > │ Test case 2. B. Time: 1241L                                                  │
00:01:35 verbose #817 > > │ Test case 3. C. Time: 1183L                                                  │
00:01:35 verbose #818 > > │ Test case 4. CA. Time: 1563L                                                 │
00:01:35 verbose #819 > > │ Test case 5. CB. Time: 1525L                                                 │
00:01:35 verbose #820 > > │ Test case 6. D. Time: 1591L                                                  │
00:01:35 verbose #821 > > │ Test case 7. E. Time: 1327L                                                  │
00:01:35 verbose #822 > > │ Test case 8. F. Time: 1151L                                                  │
00:01:35 verbose #823 > > │ Test case 9. FA. Time: 1180L                                                 │
00:01:35 verbose #824 > > │ Test case 10. FB. Time: 1733L                                                │
00:01:35 verbose #825 > > │ Test case 11. FC. Time: 2817L                                                │
00:01:35 verbose #826 > > │                                                                              │
00:01:35 verbose #827 > > │ Solution: z                                                                  │
00:01:35 verbose #828 > > │ Test case 1. A. Time: 816L                                                   │
00:01:35 verbose #829 > > │ Test case 2. B. Time: 745L                                                   │
00:01:35 verbose #830 > > │ Test case 3. C. Time: 928L                                                   │
00:01:35 verbose #831 > > │ Test case 4. CA. Time: 1375L                                                 │
00:01:35 verbose #832 > > │ Test case 5. CB. Time: 1029L                                                 │
00:01:35 verbose #833 > > │ Test case 6. D. Time: 852L                                                   │
00:01:35 verbose #834 > > │ Test case 7. E. Time: 712L                                                   │
00:01:35 verbose #835 > > │ Test case 8. F. Time: 263L                                                   │
00:01:35 verbose #836 > > │ Test case 9. FA. Time: 232L                                                  │
00:01:35 verbose #837 > > │ Test case 10. FB. Time: 773L                                                 │
00:01:35 verbose #838 > > │ Test case 11. FC. Time: 1789L                                                │
00:01:35 verbose #839 > > │                                                                              │
00:01:35 verbose #840 > > │ Input           | Expected                                                   │
00:01:35 verbose #841 > > │                                                                              │
00:01:35 verbose #842 > > │ | Result                                                                     │
00:01:35 verbose #843 > > │                                                                              │
00:01:35 verbose #844 > > │ | Best                                                                       │
00:01:35 verbose #845 > > │ ---             | ---                                                        │
00:01:35 verbose #846 > > │                                                                              │
00:01:35 verbose #847 > > │ | ---                                                                        │
00:01:35 verbose #848 > > │                                                                              │
00:01:35 verbose #849 > > │ | ---                                                                        │
00:01:35 verbose #850 > > │ abc             | bca cab abc                                                │
00:01:35 verbose #851 > > │                                                                              │
00:01:35 verbose #852 > > │ | bca cab abc                                                                │
00:01:35 verbose #853 > > │                                                                              │
00:01:35 verbose #854 > > │ | (8, 1517)                                                                  │
00:01:35 verbose #855 > > │ abcde           | bcdea cdeab deabc eabcd abcde                              │
00:01:35 verbose #856 > > │ | bcdea cdeab deabc eabcd abcde                                              │
00:01:35 verbose #857 > > │ | (8, 1771)                                                                  │
00:01:35 verbose #858 > > │ abcdefghi       | bcdefghia cdefghiab defghiabc efghiabcd fghiabcde          │
00:01:35 verbose #859 > > │ ghiabcdef hiabcdefg iabcdefgh abcdefghi       | bcdefghia cdefghiab          │
00:01:35 verbose #860 > > │ defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi        │
00:01:35 verbose #861 > > │ | (8, 3050)                                                                  │
00:01:35 verbose #862 > > │ abab            | baba abab baba abab                                        │
00:01:35 verbose #863 > > │                                                                              │
00:01:35 verbose #864 > > │ | baba abab baba abab                                                        │
00:01:35 verbose #865 > > │                                                                              │
00:01:35 verbose #866 > > │ | (8, 1558)                                                                  │
00:01:35 verbose #867 > > │ aa              | aa aa                                                      │
00:01:35 verbose #868 > > │                                                                              │
00:01:35 verbose #869 > > │ | aa aa                                                                      │
00:01:35 verbose #870 > > │                                                                              │
00:01:35 verbose #871 > > │ | (1, 1107)                                                                  │
00:01:35 verbose #872 > > │ z               | z                                                          │
00:01:35 verbose #873 > > │                                                                              │
00:01:35 verbose #874 > > │ | z                                                                          │
00:01:35 verbose #875 > > │                                                                              │
00:01:35 verbose #876 > > │ | (9, 232)                                                                   │
00:01:35 verbose #877 > > │                                                                              │
00:01:35 verbose #878 > > │ Averages                                                                     │
00:01:35 verbose #879 > > │ Test case 1. Average Time: 2284L                                             │
00:01:35 verbose #880 > > │ Test case 2. Average Time: 1965L                                             │
00:01:35 verbose #881 > > │ Test case 3. Average Time: 1953L                                             │
00:01:35 verbose #882 > > │ Test case 4. Average Time: 2325L                                             │
00:01:35 verbose #883 > > │ Test case 5. Average Time: 2477L                                             │
00:01:35 verbose #884 > > │ Test case 6. Average Time: 3103L                                             │
00:01:35 verbose #885 > > │ Test case 7. Average Time: 1797L                                             │
00:01:35 verbose #886 > > │ Test case 8. Average Time: 1551L                                             │
00:01:35 verbose #887 > > │ Test case 9. Average Time: 1688L                                             │
00:01:35 verbose #888 > > │ Test case 10. Average Time: 2749L                                            │
00:01:35 verbose #889 > > │ Test case 11. Average Time: 4136L                                            │
00:01:35 verbose #890 > > │                                                                              │
00:01:35 verbose #891 > > │ Ranking                                                                      │
00:01:35 verbose #892 > > │ Test case 11. Average Time: 4136L                                            │
00:01:35 verbose #893 > > │ Test case 6. Average Time: 3103L                                             │
00:01:35 verbose #894 > > │ Test case 10. Average Time: 2749L                                            │
00:01:35 verbose #895 > > │ Test case 5. Average Time: 2477L                                             │
00:01:35 verbose #896 > > │ Test case 4. Average Time: 2325L                                             │
00:01:35 verbose #897 > > │ Test case 1. Average Time: 2284L                                             │
00:01:35 verbose #898 > > │ Test case 2. Average Time: 1965L                                             │
00:01:35 verbose #899 > > │ Test case 3. Average Time: 1953L                                             │
00:01:35 verbose #900 > > │ Test case 7. Average Time: 1797L                                             │
00:01:35 verbose #901 > > │ Test case 9. Average Time: 1688L                                             │
00:01:35 verbose #902 > > │ Test case 8. Average Time: 1551L                                             │
00:01:35 verbose #903 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:35 verbose #904 > >
00:01:35 verbose #905 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:01:35 verbose #906 > > //// test
00:01:35 verbose #907 > >
00:01:35 verbose #908 > > let solutions = [[
00:01:35 verbose #909 > >     "A",
00:01:35 verbose #910 > >     fun (input: string) ->
00:01:35 verbose #911 > >         let resultList =
00:01:35 verbose #912 > >             List.fold (fun acc x ->
00:01:35 verbose #913 > >                 let rotate (text: string) (letter: string) = (text |>
00:01:35 verbose #914 > > SpiralSm.slice 1 (input.Length - 1)) + letter
00:01:35 verbose #915 > >                 [[ rotate (if acc.IsEmpty then input else acc.Head) (string x)
00:01:35 verbose #916 > > ]] @ acc
00:01:35 verbose #917 > >             ) [[]] (Seq.toList input)
00:01:35 verbose #918 > >
00:01:35 verbose #919 > >         (resultList, "")
00:01:35 verbose #920 > >         ||> List.foldBack (fun acc x -> x + acc + " ")
00:01:35 verbose #921 > >         |> _.TrimEnd()
00:01:35 verbose #922 > >
00:01:35 verbose #923 > >     "B",
00:01:35 verbose #924 > >     fun input ->
00:01:35 verbose #925 > >         input
00:01:35 verbose #926 > >         |> Seq.toList
00:01:35 verbose #927 > >         |> List.fold (fun (acc: string list) letter ->
00:01:35 verbose #928 > >             let last =
00:01:35 verbose #929 > >                 if acc.IsEmpty
00:01:35 verbose #930 > >                 then input
00:01:35 verbose #931 > >                 else acc.Head
00:01:35 verbose #932 > >
00:01:35 verbose #933 > >             let item = last.[[1 .. input.Length - 1]] + string letter
00:01:35 verbose #934 > >
00:01:35 verbose #935 > >             item :: acc
00:01:35 verbose #936 > >         ) [[]]
00:01:35 verbose #937 > >         |> List.rev
00:01:35 verbose #938 > >         |> SpiralSm.concat " "
00:01:35 verbose #939 > >
00:01:35 verbose #940 > >     "C",
00:01:35 verbose #941 > >     fun input ->
00:01:35 verbose #942 > >         input
00:01:35 verbose #943 > >         |> Seq.toList
00:01:35 verbose #944 > >         |> List.fold (fun (acc: string list) letter -> acc.Head.[[ 1 ..
00:01:35 verbose #945 > > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:01:35 verbose #946 > >         |> List.rev
00:01:35 verbose #947 > >         |> List.skip 1
00:01:35 verbose #948 > >         |> SpiralSm.concat " "
00:01:35 verbose #949 > >
00:01:35 verbose #950 > >     "CA",
00:01:35 verbose #951 > >     fun input ->
00:01:35 verbose #952 > >         input
00:01:35 verbose #953 > >         |> Seq.fold (fun (acc: string list) letter -> acc.Head.[[ 1 ..
00:01:35 verbose #954 > > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:01:35 verbose #955 > >         |> Seq.rev
00:01:35 verbose #956 > >         |> Seq.skip 1
00:01:35 verbose #957 > >         |> SpiralSm.concat " "
00:01:35 verbose #958 > >
00:01:35 verbose #959 > >     "CB",
00:01:35 verbose #960 > >     fun input ->
00:01:35 verbose #961 > >         input
00:01:35 verbose #962 > >         |> Seq.toArray
00:01:35 verbose #963 > >         |> Array.fold (fun (acc: string[[]]) letter -> acc |> Array.append [[|
00:01:35 verbose #964 > > acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter |]]) [[| input |]]
00:01:35 verbose #965 > >         |> Array.rev
00:01:35 verbose #966 > >         |> Array.skip 1
00:01:35 verbose #967 > >         |> SpiralSm.concat " "
00:01:35 verbose #968 > >
00:01:35 verbose #969 > >     "D",
00:01:35 verbose #970 > >     fun input ->
00:01:35 verbose #971 > >         input
00:01:35 verbose #972 > >         |> Seq.toList
00:01:35 verbose #973 > >         |> fun list ->
00:01:35 verbose #974 > >             let rec loop (acc: char list list) = function
00:01:35 verbose #975 > >                 | _ when acc.Length = list.Length -> acc
00:01:35 verbose #976 > >                 | head :: tail ->
00:01:35 verbose #977 > >                     let item = tail @ [[ head ]]
00:01:35 verbose #978 > >                     loop (item :: acc) item
00:01:35 verbose #979 > >                 | [[]] -> [[]]
00:01:35 verbose #980 > >             loop [[]] list
00:01:35 verbose #981 > >         |> List.rev
00:01:35 verbose #982 > >         |> List.map (List.toArray >> String)
00:01:35 verbose #983 > >         |> SpiralSm.concat " "
00:01:35 verbose #984 > >
00:01:35 verbose #985 > >     "E",
00:01:35 verbose #986 > >     fun input ->
00:01:35 verbose #987 > >         input
00:01:35 verbose #988 > >         |> Seq.toList
00:01:35 verbose #989 > >         |> fun list ->
00:01:35 verbose #990 > >             let rec loop (last: string) = function
00:01:35 verbose #991 > >                 | head :: tail ->
00:01:35 verbose #992 > >                     let item = last.[[1 .. input.Length - 1]] + string head
00:01:35 verbose #993 > >                     item :: loop item tail
00:01:35 verbose #994 > >                 | [[]] -> [[]]
00:01:35 verbose #995 > >             loop input list
00:01:35 verbose #996 > >         |> SpiralSm.concat " "
00:01:35 verbose #997 > >
00:01:35 verbose #998 > >     "F",
00:01:35 verbose #999 > >     fun input ->
00:01:35 verbose #1000 > >         Array.singleton 0
00:01:35 verbose #1001 > >         |> Array.append [[| 1 .. input.Length - 1 |]]
00:01:35 verbose #1002 > >         |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:01:35 verbose #1003 > >         |> SpiralSm.concat " "
00:01:35 verbose #1004 > >
00:01:35 verbose #1005 > >     "FA",
00:01:35 verbose #1006 > >     fun input ->
00:01:35 verbose #1007 > >         List.singleton 0
00:01:35 verbose #1008 > >         |> List.append [[ 1 .. input.Length - 1 ]]
00:01:35 verbose #1009 > >         |> List.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:01:35 verbose #1010 > >         |> SpiralSm.concat " "
00:01:35 verbose #1011 > >
00:01:35 verbose #1012 > >     "FB",
00:01:35 verbose #1013 > >     fun input ->
00:01:35 verbose #1014 > >         Seq.singleton 0
00:01:35 verbose #1015 > >         |> Seq.append (seq { 1 .. input.Length - 1 })
00:01:35 verbose #1016 > >         |> Seq.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:01:35 verbose #1017 > >         |> SpiralSm.concat " "
00:01:35 verbose #1018 > >
00:01:35 verbose #1019 > >     "FC",
00:01:35 verbose #1020 > >     fun input ->
00:01:35 verbose #1021 > >         Array.singleton 0
00:01:35 verbose #1022 > >         |> Array.append [[| 1 .. input.Length - 1 |]]
00:01:35 verbose #1023 > >         |> Array.Parallel.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:01:35 verbose #1024 > >         |> SpiralSm.concat " "
00:01:35 verbose #1025 > > ]]
00:01:35 verbose #1026 > > let testCases = seq {
00:01:35 verbose #1027 > >     "abc", "bca cab abc"
00:01:35 verbose #1028 > >     "abcde", "bcdea cdeab deabc eabcd abcde"
00:01:35 verbose #1029 > >     "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef
00:01:35 verbose #1030 > > hiabcdefg iabcdefgh abcdefghi"
00:01:35 verbose #1031 > >     "abab", "baba abab baba abab"
00:01:35 verbose #1032 > >     "aa", "aa aa"
00:01:35 verbose #1033 > >     "z", "z"
00:01:35 verbose #1034 > > }
00:01:35 verbose #1035 > > let rec rotateStringsTests = runAll (nameof rotateStringsTests) _count solutions
00:01:35 verbose #1036 > > testCases
00:01:35 verbose #1037 > > rotateStringsTests
00:01:35 verbose #1038 > > |> sortResultList
00:03:24 verbose #1039 > >
00:03:24 verbose #1040 > > ╭─[ 1.81m - stdout ]───────────────────────────────────────────────────────────╮
00:03:24 verbose #1041 > > │                                                                              │
00:03:24 verbose #1042 > > │                                                                              │
00:03:24 verbose #1043 > > │ Test: rotateStringsTests                                                     │
00:03:24 verbose #1044 > > │                                                                              │
00:03:24 verbose #1045 > > │ Solution: abc                                                                │
00:03:24 verbose #1046 > > │ Test case 1. A. Time: 1274L                                                  │
00:03:24 verbose #1047 > > │ Test case 2. B. Time: 1130L                                                  │
00:03:24 verbose #1048 > > │ Test case 3. C. Time: 1141L                                                  │
00:03:24 verbose #1049 > > │ Test case 4. CA. Time: 1220L                                                 │
00:03:24 verbose #1050 > > │ Test case 5. CB. Time: 1242L                                                 │
00:03:24 verbose #1051 > > │ Test case 6. D. Time: 1322L                                                  │
00:03:24 verbose #1052 > > │ Test case 7. E. Time: 979L                                                   │
00:03:24 verbose #1053 > > │ Test case 8. F. Time: 919L                                                   │
00:03:24 verbose #1054 > > │ Test case 9. FA. Time: 1049L                                                 │
00:03:24 verbose #1055 > > │ Test case 10. FB. Time: 1658L                                                │
00:03:24 verbose #1056 > > │ Test case 11. FC. Time: 2330L                                                │
00:03:24 verbose #1057 > > │                                                                              │
00:03:24 verbose #1058 > > │ Solution: abcde                                                              │
00:03:24 verbose #1059 > > │ Test case 1. A. Time: 1671L                                                  │
00:03:24 verbose #1060 > > │ Test case 2. B. Time: 1460L                                                  │
00:03:24 verbose #1061 > > │ Test case 3. C. Time: 1441L                                                  │
00:03:24 verbose #1062 > > │ Test case 4. CA. Time: 1483L                                                 │
00:03:24 verbose #1063 > > │ Test case 5. CB. Time: 1567L                                                 │
00:03:24 verbose #1064 > > │ Test case 6. D. Time: 1847L                                                  │
00:03:24 verbose #1065 > > │ Test case 7. E. Time: 1311L                                                  │
00:03:24 verbose #1066 > > │ Test case 8. F. Time: 1095L                                                  │
00:03:24 verbose #1067 > > │ Test case 9. FA. Time: 1359L                                                 │
00:03:24 verbose #1068 > > │ Test case 10. FB. Time: 2046L                                                │
00:03:24 verbose #1069 > > │ Test case 11. FC. Time: 2643L                                                │
00:03:24 verbose #1070 > > │                                                                              │
00:03:24 verbose #1071 > > │ Solution: abcdefghi                                                          │
00:03:24 verbose #1072 > > │ Test case 1. A. Time: 2855L                                                  │
00:03:24 verbose #1073 > > │ Test case 2. B. Time: 2186L                                                  │
00:03:24 verbose #1074 > > │ Test case 3. C. Time: 2232L                                                  │
00:03:24 verbose #1075 > > │ Test case 4. CA. Time: 2318L                                                 │
00:03:24 verbose #1076 > > │ Test case 5. CB. Time: 2561L                                                 │
00:03:24 verbose #1077 > > │ Test case 6. D. Time: 3853L                                                  │
00:03:24 verbose #1078 > > │ Test case 7. E. Time: 2077L                                                  │
00:03:24 verbose #1079 > > │ Test case 8. F. Time: 1786L                                                  │
00:03:24 verbose #1080 > > │ Test case 9. FA. Time: 1990L                                                 │
00:03:24 verbose #1081 > > │ Test case 10. FB. Time: 2900L                                                │
00:03:24 verbose #1082 > > │ Test case 11. FC. Time: 3177L                                                │
00:03:24 verbose #1083 > > │                                                                              │
00:03:24 verbose #1084 > > │ Solution: abab                                                               │
00:03:24 verbose #1085 > > │ Test case 1. A. Time: 1447L                                                  │
00:03:24 verbose #1086 > > │ Test case 2. B. Time: 1206L                                                  │
00:03:24 verbose #1087 > > │ Test case 3. C. Time: 1292L                                                  │
00:03:24 verbose #1088 > > │ Test case 4. CA. Time: 1402L                                                 │
00:03:24 verbose #1089 > > │ Test case 5. CB. Time: 1349L                                                 │
00:03:24 verbose #1090 > > │ Test case 6. D. Time: 1518L                                                  │
00:03:24 verbose #1091 > > │ Test case 7. E. Time: 1131L                                                  │
00:03:24 verbose #1092 > > │ Test case 8. F. Time: 958L                                                   │
00:03:24 verbose #1093 > > │ Test case 9. FA. Time: 1092L                                                 │
00:03:24 verbose #1094 > > │ Test case 10. FB. Time: 1748L                                                │
00:03:24 verbose #1095 > > │ Test case 11. FC. Time: 2420L                                                │
00:03:24 verbose #1096 > > │                                                                              │
00:03:24 verbose #1097 > > │ Solution: aa                                                                 │
00:03:24 verbose #1098 > > │ Test case 1. A. Time: 968L                                                   │
00:03:24 verbose #1099 > > │ Test case 2. B. Time: 844L                                                   │
00:03:24 verbose #1100 > > │ Test case 3. C. Time: 931L                                                   │
00:03:24 verbose #1101 > > │ Test case 4. CA. Time: 1091L                                                 │
00:03:24 verbose #1102 > > │ Test case 5. CB. Time: 1037L                                                 │
00:03:24 verbose #1103 > > │ Test case 6. D. Time: 981L                                                   │
00:03:24 verbose #1104 > > │ Test case 7. E. Time: 844L                                                   │
00:03:24 verbose #1105 > > │ Test case 8. F. Time: 722L                                                   │
00:03:24 verbose #1106 > > │ Test case 9. FA. Time: 843L                                                  │
00:03:24 verbose #1107 > > │ Test case 10. FB. Time: 1487L                                                │
00:03:24 verbose #1108 > > │ Test case 11. FC. Time: 2051L                                                │
00:03:24 verbose #1109 > > │                                                                              │
00:03:24 verbose #1110 > > │ Solution: z                                                                  │
00:03:24 verbose #1111 > > │ Test case 1. A. Time: 541L                                                   │
00:03:24 verbose #1112 > > │ Test case 2. B. Time: 524L                                                   │
00:03:24 verbose #1113 > > │ Test case 3. C. Time: 597L                                                   │
00:03:24 verbose #1114 > > │ Test case 4. CA. Time: 878L                                                  │
00:03:24 verbose #1115 > > │ Test case 5. CB. Time: 723L                                                  │
00:03:24 verbose #1116 > > │ Test case 6. D. Time: 621L                                                   │
00:03:24 verbose #1117 > > │ Test case 7. E. Time: 523L                                                   │
00:03:24 verbose #1118 > > │ Test case 8. F. Time: 127L                                                   │
00:03:24 verbose #1119 > > │ Test case 9. FA. Time: 132L                                                  │
00:03:24 verbose #1120 > > │ Test case 10. FB. Time: 413L                                                 │
00:03:24 verbose #1121 > > │ Test case 11. FC. Time: 787L                                                 │
00:03:24 verbose #1122 > > │                                                                              │
00:03:24 verbose #1123 > > │ Input    	| Expected                                                           │
00:03:24 verbose #1124 > > │                                                                              │
00:03:24 verbose #1125 > > │ | Result                                                                     │
00:03:24 verbose #1126 > > │                                                                              │
00:03:24 verbose #1127 > > │ | Best                                                                       │
00:03:24 verbose #1128 > > │ ---      	| ---                                                                │
00:03:24 verbose #1129 > > │                                                                              │
00:03:24 verbose #1130 > > │ | ---                                                                        │
00:03:24 verbose #1131 > > │                                                                              │
00:03:24 verbose #1132 > > │ | ---                                                                        │
00:03:24 verbose #1133 > > │ abc      	| bca cab abc                                                        │
00:03:24 verbose #1134 > > │                                                                              │
00:03:24 verbose #1135 > > │ | bca cab abc                                                                │
00:03:24 verbose #1136 > > │                                                                              │
00:03:24 verbose #1137 > > │ | (8, 919)                                                                   │
00:03:24 verbose #1138 > > │ abcde    	| bcdea cdeab deabc eabcd abcde                                      │
00:03:24 verbose #1139 > > │ | bcdea cdeab deabc eabcd abcde                                              │
00:03:24 verbose #1140 > > │ | (8, 1095)                                                                  │
00:03:24 verbose #1141 > > │ abcdefghi	| bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef        │
00:03:24 verbose #1142 > > │ hiabcdefg iabcdefgh abcdefghi	| bcdefghia cdefghiab defghiabc efghiabcd        │
00:03:24 verbose #1143 > > │ fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi	| (8, 1786)                  │
00:03:24 verbose #1144 > > │ abab     	| baba abab baba abab                                                │
00:03:24 verbose #1145 > > │ | baba abab baba abab                                                        │
00:03:24 verbose #1146 > > │ | (8, 958)                                                                   │
00:03:24 verbose #1147 > > │ aa       	| aa aa                                                              │
00:03:24 verbose #1148 > > │                                                                              │
00:03:24 verbose #1149 > > │ | aa aa                                                                      │
00:03:24 verbose #1150 > > │                                                                              │
00:03:24 verbose #1151 > > │ | (8, 722)                                                                   │
00:03:24 verbose #1152 > > │ z        	| z                                                                  │
00:03:24 verbose #1153 > > │                                                                              │
00:03:24 verbose #1154 > > │ | z                                                                          │
00:03:24 verbose #1155 > > │                                                                              │
00:03:24 verbose #1156 > > │ | (8, 127)                                                                   │
00:03:24 verbose #1157 > > │                                                                              │
00:03:24 verbose #1158 > > │ Average Ranking                                                              │
00:03:24 verbose #1159 > > │ Test case 8. Average Time: 934L                                              │
00:03:24 verbose #1160 > > │ Test case 9. Average Time: 1077L                                             │
00:03:24 verbose #1161 > > │ Test case 7. Average Time: 1144L                                             │
00:03:24 verbose #1162 > > │ Test case 2. Average Time: 1225L                                             │
00:03:24 verbose #1163 > > │ Test case 3. Average Time: 1272L                                             │
00:03:24 verbose #1164 > > │ Test case 4. Average Time: 1398L                                             │
00:03:24 verbose #1165 > > │ Test case 5. Average Time: 1413L                                             │
00:03:24 verbose #1166 > > │ Test case 1. Average Time: 1459L                                             │
00:03:24 verbose #1167 > > │ Test case 6. Average Time: 1690L                                             │
00:03:24 verbose #1168 > > │ Test case 10. Average Time: 1708L                                            │
00:03:24 verbose #1169 > > │ Test case 11. Average Time: 2234L                                            │
00:03:24 verbose #1170 > > │                                                                              │
00:03:24 verbose #1171 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:24 verbose #1172 > >
00:03:24 verbose #1173 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:24 verbose #1174 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:24 verbose #1175 > > │ ## rotate_strings_tests                                                      │
00:03:24 verbose #1176 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:24 verbose #1177 > >
00:03:24 verbose #1178 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:24 verbose #1179 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:24 verbose #1180 > > │ ```                                                                          │
00:03:24 verbose #1181 > > │ 02:21:12 verbose #1 benchmark.run_all / {count = 2000000; test_name =   │
00:03:24 verbose #1182 > > │ rotate_strings_tests}                                                        │
00:03:24 verbose #1183 > > │                                                                              │
00:03:24 verbose #1184 > > │ 02:21:12 verbose #2 benchmark.run / {input_str = "abc"}                 │
00:03:24 verbose #1185 > > │ 02:21:13 verbose #3 benchmark.run / solutions.map / {i = 1; test_name = │
00:03:24 verbose #1186 > > │ F; time = 638}                                                               │
00:03:24 verbose #1187 > > │ 02:21:14 verbose #4 benchmark.run / solutions.map / {i = 2; test_name = │
00:03:24 verbose #1188 > > │ FA; time = 779}                                                              │
00:03:24 verbose #1189 > > │                                                                              │
00:03:24 verbose #1190 > > │ 02:21:14 verbose #5 benchmark.run / {input_str = "abcde"}               │
00:03:24 verbose #1191 > > │ 02:21:15 verbose #6 benchmark.run / solutions.map / {i = 1; test_name = │
00:03:24 verbose #1192 > > │ F; time = 745}                                                               │
00:03:24 verbose #1193 > > │ 02:21:16 verbose #7 benchmark.run / solutions.map / {i = 2; test_name = │
00:03:24 verbose #1194 > > │ FA; time = 809}                                                              │
00:03:24 verbose #1195 > > │                                                                              │
00:03:24 verbose #1196 > > │ 02:21:16 verbose #8 benchmark.run / {input_str = "abcdefghi"}           │
00:03:24 verbose #1197 > > │ 02:21:17 verbose #9 benchmark.run / solutions.map / {i = 1; test_name = │
00:03:24 verbose #1198 > > │ F; time = 1092}                                                              │
00:03:24 verbose #1199 > > │ 02:21:18 verbose #10 benchmark.run / solutions.map / {i = 2; test_name  │
00:03:24 verbose #1200 > > │ = FA; time = 1304}                                                           │
00:03:24 verbose #1201 > > │                                                                              │
00:03:24 verbose #1202 > > │ 02:21:18 verbose #11 benchmark.run / {input_str = "abab"}               │
00:03:24 verbose #1203 > > │ 02:21:19 verbose #12 benchmark.run / solutions.map / {i = 1; test_name  │
00:03:24 verbose #1204 > > │ = F; time = 536}                                                             │
00:03:24 verbose #1205 > > │ 02:21:20 verbose #13 benchmark.run / solutions.map / {i = 2; test_name  │
00:03:24 verbose #1206 > > │ = FA; time = 620}                                                            │
00:03:24 verbose #1207 > > │                                                                              │
00:03:24 verbose #1208 > > │ 02:21:20 verbose #14 benchmark.run / {input_str = "aa"}                 │
00:03:24 verbose #1209 > > │ 02:21:21 verbose #15 benchmark.run / solutions.map / {i = 1; test_name  │
00:03:24 verbose #1210 > > │ = F; time = 365}                                                             │
00:03:24 verbose #1211 > > │ 02:21:21 verbose #16 benchmark.run / solutions.map / {i = 2; test_name  │
00:03:24 verbose #1212 > > │ = FA; time = 396}                                                            │
00:03:24 verbose #1213 > > │                                                                              │
00:03:24 verbose #1214 > > │ 02:21:21 verbose #17 benchmark.run / {input_str = "z"}                  │
00:03:24 verbose #1215 > > │ 02:21:22 verbose #18 benchmark.run / solutions.map / {i = 1; test_name  │
00:03:24 verbose #1216 > > │ = F; time = 158}                                                             │
00:03:24 verbose #1217 > > │ 02:21:22 verbose #19 benchmark.run / solutions.map / {i = 2; test_name  │
00:03:24 verbose #1218 > > │ = FA; time = 143}                                                            │
00:03:24 verbose #1219 > > │ ```                                                                          │
00:03:24 verbose #1220 > > │ input      	| expected                                                         │
00:03:24 verbose #1221 > > │                                                                              │
00:03:24 verbose #1222 > > │ | result                                                                     │
00:03:24 verbose #1223 > > │                                                                              │
00:03:24 verbose #1224 > > │ | best                                                                       │
00:03:24 verbose #1225 > > │ ---        	| ---                                                              │
00:03:24 verbose #1226 > > │                                                                              │
00:03:24 verbose #1227 > > │ | ---                                                                        │
00:03:24 verbose #1228 > > │                                                                              │
00:03:24 verbose #1229 > > │ | ---                                                                        │
00:03:24 verbose #1230 > > │ "abc"      	| "bca cab abc"                                                    │
00:03:24 verbose #1231 > > │                                                                              │
00:03:24 verbose #1232 > > │ | "bca cab abc"                                                              │
00:03:24 verbose #1233 > > │                                                                              │
00:03:24 verbose #1234 > > │ | 1, 638                                                                     │
00:03:24 verbose #1235 > > │ "abcde"    	| "bcdea cdeab deabc eabcd abcde"                                  │
00:03:24 verbose #1236 > > │ | "bcdea cdeab deabc eabcd abcde"                                            │
00:03:24 verbose #1237 > > │ | 1, 745                                                                     │
00:03:24 verbose #1238 > > │ "abcdefghi"	| "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef     │
00:03:24 verbose #1239 > > │ hiabcdefg iabcdefgh abcdefghi"	| "bcdefghia cdefghiab defghiabc efghiabcd      │
00:03:24 verbose #1240 > > │ fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi"	| 1, 1092                   │
00:03:24 verbose #1241 > > │ "abab"     	| "baba abab baba abab"                                            │
00:03:24 verbose #1242 > > │ | "baba abab baba abab"                                                      │
00:03:24 verbose #1243 > > │ | 1, 536                                                                     │
00:03:24 verbose #1244 > > │ "aa"       	| "aa aa"                                                          │
00:03:24 verbose #1245 > > │                                                                              │
00:03:24 verbose #1246 > > │ | "aa aa"                                                                    │
00:03:24 verbose #1247 > > │                                                                              │
00:03:24 verbose #1248 > > │ | 1, 365                                                                     │
00:03:24 verbose #1249 > > │ "z"        	| "z"                                                              │
00:03:24 verbose #1250 > > │                                                                              │
00:03:24 verbose #1251 > > │ | "z"                                                                        │
00:03:24 verbose #1252 > > │                                                                              │
00:03:24 verbose #1253 > > │ | 2, 143                                                                     │
00:03:24 verbose #1254 > > │ ```                                                                          │
00:03:24 verbose #1255 > > │ 02:21:22 verbose #20 benchmark.sort_result_list / averages.iter / {avg  │
00:03:24 verbose #1256 > > │ = 589; i = 1}                                                                │
00:03:24 verbose #1257 > > │ 02:21:22 verbose #21 benchmark.sort_result_list / averages.iter / {avg  │
00:03:24 verbose #1258 > > │ = 675; i = 2}                                                                │
00:03:24 verbose #1259 > > │ ```                                                                          │
00:03:24 verbose #1260 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:24 verbose #1261 > >
00:03:24 verbose #1262 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:24 verbose #1263 > > //// test
00:03:24 verbose #1264 > > //// timeout=60000
00:03:24 verbose #1265 > >
00:03:24 verbose #1266 > > inl get_solutions () =
00:03:24 verbose #1267 > >     [[
00:03:24 verbose #1268 > >         // "A",
00:03:24 verbose #1269 > >         // fun (input : string) =>
00:03:24 verbose #1270 > >         //     let resultList =
00:03:24 verbose #1271 > >         //         List.fold (fun acc x =>
00:03:24 verbose #1272 > >         //             let rotate (text : string) (letter : string) =
00:03:24 verbose #1273 > > text.Substring (1, input.Length - 1) + letter
00:03:24 verbose #1274 > >         //             [[ rotate (if acc.IsEmpty then input else acc.Head)
00:03:24 verbose #1275 > > (string x) ]] ++ acc
00:03:24 verbose #1276 > >         //         ) [[]] (Seq.toList input)
00:03:24 verbose #1277 > >
00:03:24 verbose #1278 > >         //     List.foldBack (fun acc x => x + acc + " ") resultList ""
00:03:24 verbose #1279 > >         //     |> fun x => x.TrimEnd ()
00:03:24 verbose #1280 > >
00:03:24 verbose #1281 > >         // "B",
00:03:24 verbose #1282 > >         // fun input =>
00:03:24 verbose #1283 > >         //     input
00:03:24 verbose #1284 > >         //     |> Seq.toList
00:03:24 verbose #1285 > >         //     |> List.fold (fun (acc : string list) letter =>
00:03:24 verbose #1286 > >         //         let last =
00:03:24 verbose #1287 > >         //             if acc.IsEmpty
00:03:24 verbose #1288 > >         //             then input
00:03:24 verbose #1289 > >         //             else acc.Head
00:03:24 verbose #1290 > >
00:03:24 verbose #1291 > >         //         let item = last.[[1 .. input.Length - 1]] + string letter
00:03:24 verbose #1292 > >
00:03:24 verbose #1293 > >         //         item :: acc
00:03:24 verbose #1294 > >         //     ) [[]]
00:03:24 verbose #1295 > >         //     |> List.rev
00:03:24 verbose #1296 > >         //     |> SpiralSm.concat " "
00:03:24 verbose #1297 > >
00:03:24 verbose #1298 > >         // "C",
00:03:24 verbose #1299 > >         // fun input =>
00:03:24 verbose #1300 > >         //     input
00:03:24 verbose #1301 > >         //     |> Seq.toList
00:03:24 verbose #1302 > >         //     |> List.fold (fun (acc : list string) letter => acc.Head.[[ 1 ..
00:03:24 verbose #1303 > > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:03:24 verbose #1304 > >         //     |> List.rev
00:03:24 verbose #1305 > >         //     |> List.skip 1
00:03:24 verbose #1306 > >         //     |> SpiralSm.concat " "
00:03:24 verbose #1307 > >
00:03:24 verbose #1308 > >         // "CA",
00:03:24 verbose #1309 > >         // fun input =>
00:03:24 verbose #1310 > >         //     input
00:03:24 verbose #1311 > >         //     |> Seq.fold (fun (acc : list string) letter => acc.Head.[[ 1 ..
00:03:24 verbose #1312 > > input.Length - 1 ]] + string letter :: acc) [[ input ]]
00:03:24 verbose #1313 > >         //     |> Seq.rev
00:03:24 verbose #1314 > >         //     |> Seq.skip 1
00:03:24 verbose #1315 > >         //     |> SpiralSm.concat " "
00:03:24 verbose #1316 > >
00:03:24 verbose #1317 > >         // "CB",
00:03:24 verbose #1318 > >         // fun input =>
00:03:24 verbose #1319 > >         //     input
00:03:24 verbose #1320 > >         //     |> Seq.toArray
00:03:24 verbose #1321 > >         //     |> Array.fold (fun (acc : a _ string) letter => acc |>
00:03:24 verbose #1322 > > Array.append (a ;[[ acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter ]]))
00:03:24 verbose #1323 > > (a ;[[ input ]])
00:03:24 verbose #1324 > >         //     |> Array.rev
00:03:24 verbose #1325 > >         //     |> Array.skip 1
00:03:24 verbose #1326 > >         //     |> SpiralSm.concat " "
00:03:24 verbose #1327 > >
00:03:24 verbose #1328 > >         // "D",
00:03:24 verbose #1329 > >         // fun input =>
00:03:24 verbose #1330 > >         //     input
00:03:24 verbose #1331 > >         //     |> Seq.toList
00:03:24 verbose #1332 > >         //     |> fun list =>
00:03:24 verbose #1333 > >         //         let rec loop (acc : list (list char)) = function
00:03:24 verbose #1334 > >         //             | _ when acc.Length = list.Length => acc
00:03:24 verbose #1335 > >         //             | head :: tail =>
00:03:24 verbose #1336 > >         //                 let item = tail ++ [[ head ]]
00:03:24 verbose #1337 > >         //                 loop (item :: acc) item
00:03:24 verbose #1338 > >         //             | [[]] => [[]]
00:03:24 verbose #1339 > >         //         loop [[]] list
00:03:24 verbose #1340 > >         //     |> List.rev
00:03:24 verbose #1341 > >         //     |> List.map (List.toArray >> String)
00:03:24 verbose #1342 > >         //     |> SpiralSm.concat " "
00:03:24 verbose #1343 > >
00:03:24 verbose #1344 > >         // "E",
00:03:24 verbose #1345 > >         // fun input =>
00:03:24 verbose #1346 > >         //     input
00:03:24 verbose #1347 > >         //     |> Seq.toList
00:03:24 verbose #1348 > >         //     |> fun list =>
00:03:24 verbose #1349 > >         //         let rec loop (last : string) = function
00:03:24 verbose #1350 > >         //             | head :: tail =>
00:03:24 verbose #1351 > >         //                 let item = last.[[1 .. input.Length - 1]] + string
00:03:24 verbose #1352 > > head
00:03:24 verbose #1353 > >         //                 item :: loop item tail
00:03:24 verbose #1354 > >         //             | [[]] => [[]]
00:03:24 verbose #1355 > >         //         loop input list
00:03:24 verbose #1356 > >         //     |> SpiralSm.concat " "
00:03:24 verbose #1357 > >
00:03:24 verbose #1358 > >         "F",
00:03:24 verbose #1359 > >         fun input =>
00:03:24 verbose #1360 > >         // Array.singleton 0
00:03:24 verbose #1361 > >         // |> Array.append [[| 1 .. input.Length - 1 |]]
00:03:24 verbose #1362 > >         // |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:03:24 verbose #1363 > >         // |> SpiralSm.concat " "
00:03:24 verbose #1364 > >             inl input_length = input |> sm.length
00:03:24 verbose #1365 > >             am.singleton 0i32
00:03:24 verbose #1366 > >             |> am.append (am'.init_series 1 (input_length - 1) 1 |> fun x => a x
00:03:24 verbose #1367 > > : _ int _)
00:03:24 verbose #1368 > >             |> fun (a x) => x
00:03:24 verbose #1369 > >             |> am'.map_base fun i =>
00:03:24 verbose #1370 > >                 inl a = input |> sm'.slice i (input_length - 1)
00:03:24 verbose #1371 > >                 inl b = input |> sm'.slice 0 (i - 1)
00:03:24 verbose #1372 > >                 a +. b
00:03:24 verbose #1373 > >             |> fun x => a x : _ int _
00:03:24 verbose #1374 > >             |> seq.of_array
00:03:24 verbose #1375 > >             |> sm'.concat " "
00:03:24 verbose #1376 > >
00:03:24 verbose #1377 > >         "FA",
00:03:24 verbose #1378 > >         fun input =>
00:03:24 verbose #1379 > >         //     List.singleton 0
00:03:24 verbose #1380 > >         //     |> List.append [[ 1 .. input.Length - 1 ]]
00:03:24 verbose #1381 > >         //   //  |> List.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:03:24 verbose #1382 > >         //     |> SpiralSm.concat " "
00:03:24 verbose #1383 > >             inl input_length = input |> sm.length
00:03:24 verbose #1384 > >             listm.singleton 0i32
00:03:24 verbose #1385 > >             |> listm.append (listm'.init_series 1 (input_length - 1) 1)
00:03:24 verbose #1386 > >             |> listm.map (fun i =>
00:03:24 verbose #1387 > >                 inl a = input |> sm'.slice i (input_length - 1)
00:03:24 verbose #1388 > >                 inl b = if i = 0 then "" else input |> sm'.slice 0 (i - 1)
00:03:24 verbose #1389 > >                 a +. b
00:03:24 verbose #1390 > >             )
00:03:24 verbose #1391 > >             |> listm'.box
00:03:24 verbose #1392 > >             |> listm'.to_array'
00:03:24 verbose #1393 > >             |> fun x => a x : _ int _
00:03:24 verbose #1394 > >             |> seq.of_array
00:03:24 verbose #1395 > >             |> sm'.concat " "
00:03:24 verbose #1396 > >
00:03:24 verbose #1397 > >         // "FB",
00:03:24 verbose #1398 > >         // fun input =>
00:03:24 verbose #1399 > >         //     Seq.singleton 0
00:03:24 verbose #1400 > >         //   //  |> Seq.append (seq { 1 .. input.Length - 1 })
00:03:24 verbose #1401 > >         //   //  |> Seq.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]])
00:03:24 verbose #1402 > >         //     |> SpiralSm.concat " "
00:03:24 verbose #1403 > >
00:03:24 verbose #1404 > >         // "FC",
00:03:24 verbose #1405 > >         // fun input =>
00:03:24 verbose #1406 > >         //     Array.singleton 0
00:03:24 verbose #1407 > >         //     |> Array.append (a ;[[ 1 .. input.Length - 1 ]])
00:03:24 verbose #1408 > >         ////    |> Array.Parallel.map (fun i => input.[[ i .. ]] + input.[[ .. i
00:03:24 verbose #1409 > > - 1 ]])
00:03:24 verbose #1410 > >         //     |> SpiralSm.concat " "
00:03:24 verbose #1411 > >     ]]
00:03:24 verbose #1412 > >
00:03:24 verbose #1413 > > inl rec rotate_strings_tests () =
00:03:24 verbose #1414 > >     inl test_cases = [[
00:03:24 verbose #1415 > >         "abc", "bca cab abc"
00:03:24 verbose #1416 > >         "abcde", "bcdea cdeab deabc eabcd abcde"
00:03:24 verbose #1417 > >         "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde
00:03:24 verbose #1418 > > ghiabcdef hiabcdefg iabcdefgh abcdefghi"
00:03:24 verbose #1419 > >         "abab", "baba abab baba abab"
00:03:24 verbose #1420 > >         "aa", "aa aa"
00:03:24 verbose #1421 > >         "z", "z"
00:03:24 verbose #1422 > >     ]]
00:03:24 verbose #1423 > >
00:03:24 verbose #1424 > >     inl solutions = get_solutions ()
00:03:24 verbose #1425 > >
00:03:24 verbose #1426 > >     // inl is_fast () = true
00:03:24 verbose #1427 > >
00:03:24 verbose #1428 > >     inl count =
00:03:24 verbose #1429 > >         if is_fast ()
00:03:24 verbose #1430 > >         then 1000i32
00:03:24 verbose #1431 > >         else 2000000i32
00:03:24 verbose #1432 > >
00:03:24 verbose #1433 > >     run_all (reflection.nameof { rotate_strings_tests }) count solutions
00:03:24 verbose #1434 > > test_cases
00:03:24 verbose #1435 > >     |> sort_result_list
00:03:24 verbose #1436 > >
00:03:24 verbose #1437 > > rotate_strings_tests ()
00:03:40 verbose #1438 > >
00:03:40 verbose #1439 > > ╭─[ 16.26s - stdout ]──────────────────────────────────────────────────────────╮
00:03:40 verbose #1440 > > │                                                                              │
00:03:40 verbose #1441 > > │ ```                                                                          │
00:03:40 verbose #1442 > > │ 00:00:00 verbose #1 benchmark.run_all / { test_name =                   │
00:03:40 verbose #1443 > > │ rotate_strings_tests; count = 2000000 }                                      │
00:03:40 verbose #1444 > > │                                                                              │
00:03:40 verbose #1445 > > │ 00:00:00 verbose #2 benchmark.run / { input_str = "abc" }               │
00:03:40 verbose #1446 > > │ 00:00:01 verbose #3 benchmark.run / solutions.map / { i = 1; test_name  │
00:03:40 verbose #1447 > > │ = F; time = 1015 }                                                           │
00:03:40 verbose #1448 > > │ 00:00:02 verbose #4 benchmark.run / solutions.map / { i = 2; test_name  │
00:03:40 verbose #1449 > > │ = FA; time = 1245 }                                                          │
00:03:40 verbose #1450 > > │                                                                              │
00:03:40 verbose #1451 > > │ 00:00:02 verbose #5 benchmark.run / { input_str = "abcde" }             │
00:03:40 verbose #1452 > > │ 00:00:03 verbose #6 benchmark.run / solutions.map / { i = 1; test_name  │
00:03:40 verbose #1453 > > │ = F; time = 1108 }                                                           │
00:03:40 verbose #1454 > > │ 00:00:05 verbose #7 benchmark.run / solutions.map / { i = 2; test_name  │
00:03:40 verbose #1455 > > │ = FA; time = 1322 }                                                          │
00:03:40 verbose #1456 > > │                                                                              │
00:03:40 verbose #1457 > > │ 00:00:05 verbose #8 benchmark.run / { input_str = "abcdefghi" }         │
00:03:40 verbose #1458 > > │ 00:00:07 verbose #9 benchmark.run / solutions.map / { i = 1; test_name  │
00:03:40 verbose #1459 > > │ = F; time = 1809 }                                                           │
00:03:40 verbose #1460 > > │ 00:00:10 verbose #10 benchmark.run / solutions.map / { i = 2; test_name │
00:03:40 verbose #1461 > > │ = FA; time = 2341 }                                                          │
00:03:40 verbose #1462 > > │                                                                              │
00:03:40 verbose #1463 > > │ 00:00:10 verbose #11 benchmark.run / { input_str = "abab" }             │
00:03:40 verbose #1464 > > │ 00:00:11 verbose #12 benchmark.run / solutions.map / { i = 1; test_name │
00:03:40 verbose #1465 > > │ = F; time = 939 }                                                            │
00:03:40 verbose #1466 > > │ 00:00:12 verbose #13 benchmark.run / solutions.map / { i = 2; test_name │
00:03:40 verbose #1467 > > │ = FA; time = 1205 }                                                          │
00:03:40 verbose #1468 > > │                                                                              │
00:03:40 verbose #1469 > > │ 00:00:12 verbose #14 benchmark.run / { input_str = "aa" }               │
00:03:40 verbose #1470 > > │ 00:00:13 verbose #15 benchmark.run / solutions.map / { i = 1; test_name │
00:03:40 verbose #1471 > > │ = F; time = 687 }                                                            │
00:03:40 verbose #1472 > > │ 00:00:14 verbose #16 benchmark.run / solutions.map / { i = 2; test_name │
00:03:40 verbose #1473 > > │ = FA; time = 780 }                                                           │
00:03:40 verbose #1474 > > │                                                                              │
00:03:40 verbose #1475 > > │ 00:00:14 verbose #17 benchmark.run / { input_str = "z" }                │
00:03:40 verbose #1476 > > │ 00:00:15 verbose #18 benchmark.run / solutions.map / { i = 1; test_name │
00:03:40 verbose #1477 > > │ = F; time = 130 }                                                            │
00:03:40 verbose #1478 > > │ 00:00:15 verbose #19 benchmark.run / solutions.map / { i = 2; test_name │
00:03:40 verbose #1479 > > │ = FA; time = 123 }                                                           │
00:03:40 verbose #1480 > > │ ```                                                                          │
00:03:40 verbose #1481 > > │ input      	| expected                                                         │
00:03:40 verbose #1482 > > │                                                                              │
00:03:40 verbose #1483 > > │ | result                                                                     │
00:03:40 verbose #1484 > > │                                                                              │
00:03:40 verbose #1485 > > │ | best                                                                       │
00:03:40 verbose #1486 > > │ ---        	| ---                                                              │
00:03:40 verbose #1487 > > │                                                                              │
00:03:40 verbose #1488 > > │ | ---                                                                        │
00:03:40 verbose #1489 > > │                                                                              │
00:03:40 verbose #1490 > > │ | ---                                                                        │
00:03:40 verbose #1491 > > │ "abc"      	| "bca cab abc"                                                    │
00:03:40 verbose #1492 > > │                                                                              │
00:03:40 verbose #1493 > > │ | "bca cab abc"                                                              │
00:03:40 verbose #1494 > > │                                                                              │
00:03:40 verbose #1495 > > │ | 1, 1015                                                                    │
00:03:40 verbose #1496 > > │ "abcde"    	| "bcdea cdeab deabc eabcd abcde"                                  │
00:03:40 verbose #1497 > > │ | "bcdea cdeab deabc eabcd abcde"                                            │
00:03:40 verbose #1498 > > │ | 1, 1108                                                                    │
00:03:40 verbose #1499 > > │ "abcdefghi"	| "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef     │
00:03:40 verbose #1500 > > │ hiabcdefg iabcdefgh abcdefghi"	| "bcdefghia cdefghiab defghiabc efghiabcd      │
00:03:40 verbose #1501 > > │ fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi"	| 1, 1809                   │
00:03:40 verbose #1502 > > │ "abab"     	| "baba abab baba abab"                                            │
00:03:40 verbose #1503 > > │ | "baba abab baba abab"                                                      │
00:03:40 verbose #1504 > > │ | 1, 939                                                                     │
00:03:40 verbose #1505 > > │ "aa"       	| "aa aa"                                                          │
00:03:40 verbose #1506 > > │                                                                              │
00:03:40 verbose #1507 > > │ | "aa aa"                                                                    │
00:03:40 verbose #1508 > > │                                                                              │
00:03:40 verbose #1509 > > │ | 1, 687                                                                     │
00:03:40 verbose #1510 > > │ "z"        	| "z"                                                              │
00:03:40 verbose #1511 > > │                                                                              │
00:03:40 verbose #1512 > > │ | "z"                                                                        │
00:03:40 verbose #1513 > > │                                                                              │
00:03:40 verbose #1514 > > │ | 2, 123                                                                     │
00:03:40 verbose #1515 > > │ ```                                                                          │
00:03:40 verbose #1516 > > │ 00:00:15 verbose #20 benchmark.sort_result_list / averages.iter / { i = │
00:03:40 verbose #1517 > > │ 1; avg = 948 }                                                               │
00:03:40 verbose #1518 > > │ 00:00:15 verbose #21 benchmark.sort_result_list / averages.iter / { i = │
00:03:40 verbose #1519 > > │ 2; avg = 1169 }                                                              │
00:03:40 verbose #1520 > > │ ```                                                                          │
00:03:40 verbose #1521 > > │                                                                              │
00:03:40 verbose #1522 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:40 verbose #1523 > >
00:03:40 verbose #1524 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:40 verbose #1525 > > //// test
00:03:40 verbose #1526 > >
00:03:40 verbose #1527 > > // rotate_strings_tests ()
00:03:40 verbose #1528 > > ()
00:03:40 verbose #1529 > >
00:03:40 verbose #1530 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:40 verbose #1531 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:40 verbose #1532 > > │ ## binary_search_tests                                                       │
00:03:40 verbose #1533 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:40 verbose #1534 > >
00:03:40 verbose #1535 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:40 verbose #1536 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:40 verbose #1537 > > │ ```                                                                          │
00:03:40 verbose #1538 > > │ 02:19:29 verbose #1 benchmark.run_all / {count = 10000000; test_name =  │
00:03:40 verbose #1539 > > │ binary_search_tests}                                                         │
00:03:40 verbose #1540 > > │                                                                              │
00:03:40 verbose #1541 > > │ 02:19:29 verbose #2 benchmark.run / {input_str = struct ([|1; 3; 4; 6;  │
00:03:40 verbose #1542 > > │ 8; 9; 11|], 6, 7)}                                                           │
00:03:40 verbose #1543 > > │ 02:19:30 verbose #3 benchmark.run / solutions.map / {i = 1; test_name = │
00:03:40 verbose #1544 > > │ semi_open_1; time = 662}                                                     │
00:03:40 verbose #1545 > > │ 02:19:30 verbose #4 benchmark.run / solutions.map / {i = 2; test_name = │
00:03:40 verbose #1546 > > │ closed_1; time = 619}                                                        │
00:03:40 verbose #1547 > > │ 02:19:31 verbose #5 benchmark.run / solutions.map / {i = 3; test_name = │
00:03:40 verbose #1548 > > │ semi_open_2; time = 644}                                                     │
00:03:40 verbose #1549 > > │ 02:19:32 verbose #6 benchmark.run / solutions.map / {i = 4; test_name = │
00:03:40 verbose #1550 > > │ closed_2; time = 610}                                                        │
00:03:40 verbose #1551 > > │                                                                              │
00:03:40 verbose #1552 > > │ 02:19:32 verbose #7 benchmark.run / {input_str = struct ([|1; 3; 4; 6;  │
00:03:40 verbose #1553 > > │ 8; 9; 11|], 1, 7)}                                                           │
00:03:40 verbose #1554 > > │ 02:19:33 verbose #8 benchmark.run / solutions.map / {i = 1; test_name = │
00:03:40 verbose #1555 > > │ semi_open_1; time = 607}                                                     │
00:03:40 verbose #1556 > > │ 02:19:33 verbose #9 benchmark.run / solutions.map / {i = 2; test_name = │
00:03:40 verbose #1557 > > │ closed_1; time = 559}                                                        │
00:03:40 verbose #1558 > > │ 02:19:34 verbose #10 benchmark.run / solutions.map / {i = 3; test_name  │
00:03:40 verbose #1559 > > │ = semi_open_2; time = 612}                                                   │
00:03:40 verbose #1560 > > │ 02:19:35 verbose #11 benchmark.run / solutions.map / {i = 4; test_name  │
00:03:40 verbose #1561 > > │ = closed_2; time = 577}                                                      │
00:03:40 verbose #1562 > > │                                                                              │
00:03:40 verbose #1563 > > │ 02:19:35 verbose #12 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │
00:03:40 verbose #1564 > > │ 8; 9; 11|], 11, 7)}                                                          │
00:03:40 verbose #1565 > > │ 02:19:35 verbose #13 benchmark.run / solutions.map / {i = 1; test_name  │
00:03:40 verbose #1566 > > │ = semi_open_1; time = 550}                                                   │
00:03:40 verbose #1567 > > │ 02:19:36 verbose #14 benchmark.run / solutions.map / {i = 2; test_name  │
00:03:40 verbose #1568 > > │ = closed_1; time = 580}                                                      │
00:03:40 verbose #1569 > > │ 02:19:37 verbose #15 benchmark.run / solutions.map / {i = 3; test_name  │
00:03:40 verbose #1570 > > │ = semi_open_2; time = 624}                                                   │
00:03:40 verbose #1571 > > │ 02:19:37 verbose #16 benchmark.run / solutions.map / {i = 4; test_name  │
00:03:40 verbose #1572 > > │ = closed_2; time = 590}                                                      │
00:03:40 verbose #1573 > > │                                                                              │
00:03:40 verbose #1574 > > │ 02:19:37 verbose #17 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │
00:03:40 verbose #1575 > > │ 8; 9; 11|], 12, 7)}                                                          │
00:03:40 verbose #1576 > > │ 02:19:38 verbose #18 benchmark.run / solutions.map / {i = 1; test_name  │
00:03:40 verbose #1577 > > │ = semi_open_1; time = 574}                                                   │
00:03:40 verbose #1578 > > │ 02:19:39 verbose #19 benchmark.run / solutions.map / {i = 2; test_name  │
00:03:40 verbose #1579 > > │ = closed_1; time = 577}                                                      │
00:03:40 verbose #1580 > > │ 02:19:39 verbose #20 benchmark.run / solutions.map / {i = 3; test_name  │
00:03:40 verbose #1581 > > │ = semi_open_2; time = 582}                                                   │
00:03:40 verbose #1582 > > │ 02:19:40 verbose #21 benchmark.run / solutions.map / {i = 4; test_name  │
00:03:40 verbose #1583 > > │ = closed_2; time = 585}                                                      │
00:03:40 verbose #1584 > > │                                                                              │
00:03:40 verbose #1585 > > │ 02:19:40 verbose #22 benchmark.run / {input_str = struct ([|1; 2; 3;    │
00:03:40 verbose #1586 > > │ 4...00; ...|], 60, 1000)}                                                    │
00:03:40 verbose #1587 > > │ 02:19:41 verbose #23 benchmark.run / solutions.map / {i = 1; test_name  │
00:03:40 verbose #1588 > > │ = semi_open_1; time = 610}                                                   │
00:03:40 verbose #1589 > > │ 02:19:42 verbose #24 benchmark.run / solutions.map / {i = 2; test_name  │
00:03:40 verbose #1590 > > │ = closed_1; time = 672}                                                      │
00:03:40 verbose #1591 > > │ 02:19:42 verbose #25 benchmark.run / solutions.map / {i = 3; test_name  │
00:03:40 verbose #1592 > > │ = semi_open_2; time = 636}                                                   │
00:03:40 verbose #1593 > > │ 02:19:43 verbose #26 benchmark.run / solutions.map / {i = 4; test_name  │
00:03:40 verbose #1594 > > │ = closed_2; time = 629}                                                      │
00:03:40 verbose #1595 > > │                                                                              │
00:03:40 verbose #1596 > > │ 02:19:43 verbose #27 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │
00:03:40 verbose #1597 > > │ 8; 9; 11|], 6, 7)}                                                           │
00:03:40 verbose #1598 > > │ 02:19:44 verbose #28 benchmark.run / solutions.map / {i = 1; test_name  │
00:03:40 verbose #1599 > > │ = semi_open_1; time = 599}                                                   │
00:03:40 verbose #1600 > > │ 02:19:44 verbose #29 benchmark.run / solutions.map / {i = 2; test_name  │
00:03:40 verbose #1601 > > │ = closed_1; time = 561}                                                      │
00:03:40 verbose #1602 > > │ 02:19:45 verbose #30 benchmark.run / solutions.map / {i = 3; test_name  │
00:03:40 verbose #1603 > > │ = semi_open_2; time = 604}                                                   │
00:03:40 verbose #1604 > > │ 02:19:46 verbose #31 benchmark.run / solutions.map / {i = 4; test_name  │
00:03:40 verbose #1605 > > │ = closed_2; time = 573}                                                      │
00:03:40 verbose #1606 > > │                                                                              │
00:03:40 verbose #1607 > > │ 02:19:46 verbose #32 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │
00:03:40 verbose #1608 > > │ 8; 9; 11|], 1, 7)}                                                           │
00:03:40 verbose #1609 > > │ 02:19:47 verbose #33 benchmark.run / solutions.map / {i = 1; test_name  │
00:03:40 verbose #1610 > > │ = semi_open_1; time = 635}                                                   │
00:03:40 verbose #1611 > > │ 02:19:47 verbose #34 benchmark.run / solutions.map / {i = 2; test_name  │
00:03:40 verbose #1612 > > │ = closed_1; time = 603}                                                      │
00:03:40 verbose #1613 > > │ 02:19:48 verbose #35 benchmark.run / solutions.map / {i = 3; test_name  │
00:03:40 verbose #1614 > > │ = semi_open_2; time = 644}                                                   │
00:03:40 verbose #1615 > > │ 02:19:49 verbose #36 benchmark.run / solutions.map / {i = 4; test_name  │
00:03:40 verbose #1616 > > │ = closed_2; time = 628}                                                      │
00:03:40 verbose #1617 > > │                                                                              │
00:03:40 verbose #1618 > > │ 02:19:49 verbose #37 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │
00:03:40 verbose #1619 > > │ 8; 9; 11|], 11, 7)}                                                          │
00:03:40 verbose #1620 > > │ 02:19:49 verbose #38 benchmark.run / solutions.map / {i = 1; test_name  │
00:03:40 verbose #1621 > > │ = semi_open_1; time = 643}                                                   │
00:03:40 verbose #1622 > > │ 02:19:50 verbose #39 benchmark.run / solutions.map / {i = 2; test_name  │
00:03:40 verbose #1623 > > │ = closed_1; time = 606}                                                      │
00:03:40 verbose #1624 > > │ 02:19:51 verbose #40 benchmark.run / solutions.map / {i = 3; test_name  │
00:03:40 verbose #1625 > > │ = semi_open_2; time = 636}                                                   │
00:03:40 verbose #1626 > > │ 02:19:52 verbose #41 benchmark.run / solutions.map / {i = 4; test_name  │
00:03:40 verbose #1627 > > │ = closed_2; time = 624}                                                      │
00:03:40 verbose #1628 > > │                                                                              │
00:03:40 verbose #1629 > > │ 02:19:52 verbose #42 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │
00:03:40 verbose #1630 > > │ 8; 9; 11|], 12, 7)}                                                          │
00:03:40 verbose #1631 > > │ 02:19:52 verbose #43 benchmark.run / solutions.map / {i = 1; test_name  │
00:03:40 verbose #1632 > > │ = semi_open_1; time = 689}                                                   │
00:03:40 verbose #1633 > > │ 02:19:53 verbose #44 benchmark.run / solutions.map / {i = 2; test_name  │
00:03:40 verbose #1634 > > │ = closed_1; time = 613}                                                      │
00:03:40 verbose #1635 > > │ 02:19:54 verbose #45 benchmark.run / solutions.map / {i = 3; test_name  │
00:03:40 verbose #1636 > > │ = semi_open_2; time = 623}                                                   │
00:03:40 verbose #1637 > > │ 02:19:55 verbose #46 benchmark.run / solutions.map / {i = 4; test_name  │
00:03:40 verbose #1638 > > │ = closed_2; time = 613}                                                      │
00:03:40 verbose #1639 > > │                                                                              │
00:03:40 verbose #1640 > > │ 02:19:55 verbose #47 benchmark.run / {input_str = struct ([|1; 2; 3;    │
00:03:40 verbose #1641 > > │ 4...100; ...|], 60, 100)}                                                    │
00:03:40 verbose #1642 > > │ 02:19:55 verbose #48 benchmark.run / solutions.map / {i = 1; test_name  │
00:03:40 verbose #1643 > > │ = semi_open_1; time = 630}                                                   │
00:03:40 verbose #1644 > > │ 02:19:56 verbose #49 benchmark.run / solutions.map / {i = 2; test_name  │
00:03:40 verbose #1645 > > │ = closed_1; time = 633}                                                      │
00:03:40 verbose #1646 > > │ 02:19:57 verbose #50 benchmark.run / solutions.map / {i = 3; test_name  │
00:03:40 verbose #1647 > > │ = semi_open_2; time = 653}                                                   │
00:03:40 verbose #1648 > > │ 02:19:58 verbose #51 benchmark.run / solutions.map / {i = 4; test_name  │
00:03:40 verbose #1649 > > │ = closed_2; time = 646}                                                      │
00:03:40 verbose #1650 > > │ ```                                                                          │
00:03:40 verbose #1651 > > │ input                                    	| expected	| result  	| best             │
00:03:40 verbose #1652 > > │ ---                                      	| ---     	| ---     	| ---              │
00:03:40 verbose #1653 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	| US4_0 3 	| US4_0 3 	| 4, 610           │
00:03:40 verbose #1654 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	| US4_0 0 	| US4_0 0 	| 2, 559           │
00:03:40 verbose #1655 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	| US4_0 6 	| US4_0 6 	| 1, 550           │
00:03:40 verbose #1656 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	| US4_1   	| US4_1   	| 1, 574           │
00:03:40 verbose #1657 > > │ struct ([1; 2; 3; 4...00; ...], 60, 1000)	| US4_0 59	| US4_0 59	| 1, 610           │
00:03:40 verbose #1658 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	| US4_0 3 	| US4_0 3 	| 2, 561           │
00:03:40 verbose #1659 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	| US4_0 0 	| US4_0 0 	| 2, 603           │
00:03:40 verbose #1660 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	| US4_0 6 	| US4_0 6 	| 2, 606           │
00:03:40 verbose #1661 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	| US4_1   	| US4_1   	| 2, 613           │
00:03:40 verbose #1662 > > │ struct ([1; 2; 3; 4...100; ...], 60, 100)	| US4_0 59	| US4_0 59	| 1, 630           │
00:03:40 verbose #1663 > > │ ```                                                                          │
00:03:40 verbose #1664 > > │ 02:19:58 verbose #52 benchmark.sort_result_list / averages.iter / {avg  │
00:03:40 verbose #1665 > > │ = 602; i = 2}                                                                │
00:03:40 verbose #1666 > > │ 02:19:58 verbose #53 benchmark.sort_result_list / averages.iter / {avg  │
00:03:40 verbose #1667 > > │ = 607; i = 4}                                                                │
00:03:40 verbose #1668 > > │ 02:19:58 verbose #54 benchmark.sort_result_list / averages.iter / {avg  │
00:03:40 verbose #1669 > > │ = 619; i = 1}                                                                │
00:03:40 verbose #1670 > > │ 02:19:58 verbose #55 benchmark.sort_result_list / averages.iter / {avg  │
00:03:40 verbose #1671 > > │ = 625; i = 3}                                                                │
00:03:40 verbose #1672 > > │ ```                                                                          │
00:03:40 verbose #1673 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:40 verbose #1674 > >
00:03:40 verbose #1675 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:40 verbose #1676 > > //// test
00:03:40 verbose #1677 > > //// timeout=90000
00:03:40 verbose #1678 > >
00:03:40 verbose #1679 > > inl binary_search_semi_open_1 arr target left right =
00:03:40 verbose #1680 > >     inl rec body left right =
00:03:40 verbose #1681 > >         if left >= right
00:03:40 verbose #1682 > >         then None
00:03:40 verbose #1683 > >         else
00:03:40 verbose #1684 > >             inl mid = (left + right) / 2
00:03:40 verbose #1685 > >             inl item = index arr mid
00:03:40 verbose #1686 > >             if item = target
00:03:40 verbose #1687 > >             then Some mid
00:03:40 verbose #1688 > >             elif item < target
00:03:40 verbose #1689 > >             then loop (mid + 1) right
00:03:40 verbose #1690 > >             else loop left mid
00:03:40 verbose #1691 > >     and inl loop left right =
00:03:40 verbose #1692 > >         if var_is right |> not
00:03:40 verbose #1693 > >         then body left right
00:03:40 verbose #1694 > >         else
00:03:40 verbose #1695 > >             inl left = dyn left
00:03:40 verbose #1696 > >             join body left right
00:03:40 verbose #1697 > >     loop left right
00:03:40 verbose #1698 > >
00:03:40 verbose #1699 > > inl binary_search_closed_1 arr target left right =
00:03:40 verbose #1700 > >     inl rec body left right =
00:03:40 verbose #1701 > >         if left > right
00:03:40 verbose #1702 > >         then None
00:03:40 verbose #1703 > >         else
00:03:40 verbose #1704 > >             inl mid = (left + right) / 2
00:03:40 verbose #1705 > >             inl item = index arr mid
00:03:40 verbose #1706 > >             if item = target
00:03:40 verbose #1707 > >             then Some mid
00:03:40 verbose #1708 > >             elif item < target
00:03:40 verbose #1709 > >             then loop (mid + 1) right
00:03:40 verbose #1710 > >             else loop left (mid - 1)
00:03:40 verbose #1711 > >     and inl loop left right =
00:03:40 verbose #1712 > >         if var_is right |> not
00:03:40 verbose #1713 > >         then body left right
00:03:40 verbose #1714 > >         else
00:03:40 verbose #1715 > >             inl left = dyn left
00:03:40 verbose #1716 > >             join body left right
00:03:40 verbose #1717 > >     loop left right
00:03:40 verbose #1718 > >
00:03:40 verbose #1719 > > inl binary_search_semi_open_2 arr target left right =
00:03:40 verbose #1720 > >     let rec body left right =
00:03:40 verbose #1721 > >         if left >= right
00:03:40 verbose #1722 > >         then None
00:03:40 verbose #1723 > >         else
00:03:40 verbose #1724 > >             inl mid = (left + right) / 2
00:03:40 verbose #1725 > >             inl item = index arr mid
00:03:40 verbose #1726 > >             if item = target
00:03:40 verbose #1727 > >             then Some mid
00:03:40 verbose #1728 > >             elif item < target
00:03:40 verbose #1729 > >             then loop (mid + 1) right
00:03:40 verbose #1730 > >             else loop left mid
00:03:40 verbose #1731 > >     and inl loop left right = body left right
00:03:40 verbose #1732 > >     loop left right
00:03:40 verbose #1733 > >
00:03:40 verbose #1734 > > inl binary_search_closed_2 arr target left right =
00:03:40 verbose #1735 > >     let rec body left right =
00:03:40 verbose #1736 > >         if left > right
00:03:40 verbose #1737 > >         then None
00:03:40 verbose #1738 > >         else
00:03:40 verbose #1739 > >             inl mid = (left + right) / 2
00:03:40 verbose #1740 > >             inl item = index arr mid
00:03:40 verbose #1741 > >             if item = target
00:03:40 verbose #1742 > >             then Some mid
00:03:40 verbose #1743 > >             elif item < target
00:03:40 verbose #1744 > >             then loop (mid + 1) right
00:03:40 verbose #1745 > >             else loop left (mid - 1)
00:03:40 verbose #1746 > >     and inl loop left right = body left right
00:03:40 verbose #1747 > >     loop left right
00:03:40 verbose #1748 > >
00:03:40 verbose #1749 > > inl get_solutions () =
00:03:40 verbose #1750 > >     [[
00:03:40 verbose #1751 > >         "semi_open_1",
00:03:40 verbose #1752 > >         fun (arr, (target, len)) =>
00:03:40 verbose #1753 > >             binary_search_semi_open_1 arr target 0 len
00:03:40 verbose #1754 > >
00:03:40 verbose #1755 > >         "closed_1",
00:03:40 verbose #1756 > >         fun (arr, (target, len)) =>
00:03:40 verbose #1757 > >             binary_search_closed_1 arr target 0 (len - 1)
00:03:40 verbose #1758 > >
00:03:40 verbose #1759 > >         "semi_open_2",
00:03:40 verbose #1760 > >         fun (arr, (target, len)) =>
00:03:40 verbose #1761 > >             binary_search_semi_open_2 arr target 0 len
00:03:40 verbose #1762 > >
00:03:40 verbose #1763 > >         "closed_2",
00:03:40 verbose #1764 > >         fun (arr, (target, len)) =>
00:03:40 verbose #1765 > >             binary_search_closed_2 arr target 0 (len - 1)
00:03:40 verbose #1766 > >     ]]
00:03:40 verbose #1767 > >
00:03:40 verbose #1768 > > inl rec binary_search_tests () =
00:03:40 verbose #1769 > >     inl arr_with_len target len arr =
00:03:40 verbose #1770 > >         arr, (target, (len |> optionm'.default_with fun () => length arr))
00:03:40 verbose #1771 > >
00:03:40 verbose #1772 > >     inl test_cases = [[
00:03:40 verbose #1773 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 None), (Some 3i32)
00:03:40 verbose #1774 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 None), (Some 0i32)
00:03:40 verbose #1775 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 None), (Some 6i32)
00:03:40 verbose #1776 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 None), None
00:03:40 verbose #1777 > >         ((am'.init_series 1i32 1000 1 |> fun x => a x : _ int _) |> arr_with_len
00:03:40 verbose #1778 > > 60 None), (Some 59)
00:03:40 verbose #1779 > >
00:03:40 verbose #1780 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 (Some 7)), (Some
00:03:40 verbose #1781 > > 3i32)
00:03:40 verbose #1782 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 (Some 7)), (Some
00:03:40 verbose #1783 > > 0i32)
00:03:40 verbose #1784 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 (Some 7)), (Some
00:03:40 verbose #1785 > > 6i32)
00:03:40 verbose #1786 > >         (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 (Some 7)), None
00:03:40 verbose #1787 > >         ((am'.init_series 1i32 1000 1 |> fun x => a x : _ int _) |> arr_with_len
00:03:40 verbose #1788 > > 60 (Some 100)), (Some 59)
00:03:40 verbose #1789 > >     ]]
00:03:40 verbose #1790 > >
00:03:40 verbose #1791 > >     inl solutions = get_solutions ()
00:03:40 verbose #1792 > >
00:03:40 verbose #1793 > >     // inl is_fast () = true
00:03:40 verbose #1794 > >
00:03:40 verbose #1795 > >     inl count =
00:03:40 verbose #1796 > >         if is_fast ()
00:03:40 verbose #1797 > >         then 1000i32
00:03:40 verbose #1798 > >         else 10000000i32
00:03:40 verbose #1799 > >
00:03:40 verbose #1800 > >     run_all (reflection.nameof { binary_search_tests }) count solutions
00:03:40 verbose #1801 > > test_cases
00:03:40 verbose #1802 > >     |> sort_result_list
00:03:40 verbose #1803 > >
00:03:40 verbose #1804 > >
00:03:40 verbose #1805 > > let main () =
00:03:40 verbose #1806 > >     binary_search_tests ()
00:03:51 verbose #1807 > >
00:03:51 verbose #1808 > > ╭─[ 11.47s - stdout ]──────────────────────────────────────────────────────────╮
00:03:51 verbose #1809 > > │                                                                              │
00:03:51 verbose #1810 > > │ ```                                                                          │
00:03:51 verbose #1811 > > │ 00:00:00 verbose #1 benchmark.run_all / { test_name =                   │
00:03:51 verbose #1812 > > │ binary_search_tests; count = 10000000 }                                      │
00:03:51 verbose #1813 > > │                                                                              │
00:03:51 verbose #1814 > > │ 00:00:00 verbose #2 benchmark.run / { input_str = struct ([|1; 3; 4; 6; │
00:03:51 verbose #1815 > > │ 8; 9; 11|], 6, 7) }                                                          │
00:03:51 verbose #1816 > > │ 00:00:00 verbose #3 benchmark.run / solutions.map / { i = 1; test_name  │
00:03:51 verbose #1817 > > │ = semi_open_1; time = 259 }                                                  │
00:03:51 verbose #1818 > > │ 00:00:00 verbose #4 benchmark.run / solutions.map / { i = 2; test_name  │
00:03:51 verbose #1819 > > │ = closed_1; time = 155 }                                                     │
00:03:51 verbose #1820 > > │ 00:00:01 verbose #5 benchmark.run / solutions.map / { i = 3; test_name  │
00:03:51 verbose #1821 > > │ = semi_open_2; time = 243 }                                                  │
00:03:51 verbose #1822 > > │ 00:00:01 verbose #6 benchmark.run / solutions.map / { i = 4; test_name  │
00:03:51 verbose #1823 > > │ = closed_2; time = 158 }                                                     │
00:03:51 verbose #1824 > > │                                                                              │
00:03:51 verbose #1825 > > │ 00:00:01 verbose #7 benchmark.run / { input_str = struct ([|1; 3; 4; 6; │
00:03:51 verbose #1826 > > │ 8; 9; 11|], 1, 7) }                                                          │
00:03:51 verbose #1827 > > │ 00:00:01 verbose #8 benchmark.run / solutions.map / { i = 1; test_name  │
00:03:51 verbose #1828 > > │ = semi_open_1; time = 184 }                                                  │
00:03:51 verbose #1829 > > │ 00:00:02 verbose #9 benchmark.run / solutions.map / { i = 2; test_name  │
00:03:51 verbose #1830 > > │ = closed_1; time = 83 }                                                      │
00:03:51 verbose #1831 > > │ 00:00:02 verbose #10 benchmark.run / solutions.map / { i = 3; test_name │
00:03:51 verbose #1832 > > │ = semi_open_2; time = 83 }                                                   │
00:03:51 verbose #1833 > > │ 00:00:02 verbose #11 benchmark.run / solutions.map / { i = 4; test_name │
00:03:51 verbose #1834 > > │ = closed_2; time = 86 }                                                      │
00:03:51 verbose #1835 > > │                                                                              │
00:03:51 verbose #1836 > > │ 00:00:02 verbose #12 benchmark.run / { input_str = struct ([|1; 3; 4;   │
00:03:51 verbose #1837 > > │ 6; 8; 9; 11|], 11, 7) }                                                      │
00:03:51 verbose #1838 > > │ 00:00:02 verbose #13 benchmark.run / solutions.map / { i = 1; test_name │
00:03:51 verbose #1839 > > │ = semi_open_1; time = 83 }                                                   │
00:03:51 verbose #1840 > > │ 00:00:02 verbose #14 benchmark.run / solutions.map / { i = 2; test_name │
00:03:51 verbose #1841 > > │ = closed_1; time = 85 }                                                      │
00:03:51 verbose #1842 > > │ 00:00:03 verbose #15 benchmark.run / solutions.map / { i = 3; test_name │
00:03:51 verbose #1843 > > │ = semi_open_2; time = 82 }                                                   │
00:03:51 verbose #1844 > > │ 00:00:03 verbose #16 benchmark.run / solutions.map / { i = 4; test_name │
00:03:51 verbose #1845 > > │ = closed_2; time = 89 }                                                      │
00:03:51 verbose #1846 > > │                                                                              │
00:03:51 verbose #1847 > > │ 00:00:03 verbose #17 benchmark.run / { input_str = struct ([|1; 3; 4;   │
00:03:51 verbose #1848 > > │ 6; 8; 9; 11|], 12, 7) }                                                      │
00:03:51 verbose #1849 > > │ 00:00:03 verbose #18 benchmark.run / solutions.map / { i = 1; test_name │
00:03:51 verbose #1850 > > │ = semi_open_1; time = 88 }                                                   │
00:03:51 verbose #1851 > > │ 00:00:03 verbose #19 benchmark.run / solutions.map / { i = 2; test_name │
00:03:51 verbose #1852 > > │ = closed_1; time = 88 }                                                      │
00:03:51 verbose #1853 > > │ 00:00:04 verbose #20 benchmark.run / solutions.map / { i = 3; test_name │
00:03:51 verbose #1854 > > │ = semi_open_2; time = 86 }                                                   │
00:03:51 verbose #1855 > > │ 00:00:04 verbose #21 benchmark.run / solutions.map / { i = 4; test_name │
00:03:51 verbose #1856 > > │ = closed_2; time = 86 }                                                      │
00:03:51 verbose #1857 > > │                                                                              │
00:03:51 verbose #1858 > > │ 00:00:04 verbose #22 benchmark.run / { input_str = struct ([|1; 2; 3;   │
00:03:51 verbose #1859 > > │ 4...00; ...|], 60, 1000) }                                                   │
00:03:51 verbose #1860 > > │ 00:00:04 verbose #23 benchmark.run / solutions.map / { i = 1; test_name │
00:03:51 verbose #1861 > > │ = semi_open_1; time = 106 }                                                  │
00:03:51 verbose #1862 > > │ 00:00:04 verbose #24 benchmark.run / solutions.map / { i = 2; test_name │
00:03:51 verbose #1863 > > │ = closed_1; time = 116 }                                                     │
00:03:51 verbose #1864 > > │ 00:00:05 verbose #25 benchmark.run / solutions.map / { i = 3; test_name │
00:03:51 verbose #1865 > > │ = semi_open_2; time = 107 }                                                  │
00:03:51 verbose #1866 > > │ 00:00:05 verbose #26 benchmark.run / solutions.map / { i = 4; test_name │
00:03:51 verbose #1867 > > │ = closed_2; time = 118 }                                                     │
00:03:51 verbose #1868 > > │                                                                              │
00:03:51 verbose #1869 > > │ 00:00:05 verbose #27 benchmark.run / { input_str = struct ([|1; 3; 4;   │
00:03:51 verbose #1870 > > │ 6; 8; 9; 11|], 6, 7) }                                                       │
00:03:51 verbose #1871 > > │ 00:00:05 verbose #28 benchmark.run / solutions.map / { i = 1; test_name │
00:03:51 verbose #1872 > > │ = semi_open_1; time = 76 }                                                   │
00:03:51 verbose #1873 > > │ 00:00:05 verbose #29 benchmark.run / solutions.map / { i = 2; test_name │
00:03:51 verbose #1874 > > │ = closed_1; time = 73 }                                                      │
00:03:51 verbose #1875 > > │ 00:00:06 verbose #30 benchmark.run / solutions.map / { i = 3; test_name │
00:03:51 verbose #1876 > > │ = semi_open_2; time = 77 }                                                   │
00:03:51 verbose #1877 > > │ 00:00:06 verbose #31 benchmark.run / solutions.map / { i = 4; test_name │
00:03:51 verbose #1878 > > │ = closed_2; time = 72 }                                                      │
00:03:51 verbose #1879 > > │                                                                              │
00:03:51 verbose #1880 > > │ 00:00:06 verbose #32 benchmark.run / { input_str = struct ([|1; 3; 4;   │
00:03:51 verbose #1881 > > │ 6; 8; 9; 11|], 1, 7) }                                                       │
00:03:51 verbose #1882 > > │ 00:00:06 verbose #33 benchmark.run / solutions.map / { i = 1; test_name │
00:03:51 verbose #1883 > > │ = semi_open_1; time = 80 }                                                   │
00:03:51 verbose #1884 > > │ 00:00:06 verbose #34 benchmark.run / solutions.map / { i = 2; test_name │
00:03:51 verbose #1885 > > │ = closed_1; time = 82 }                                                      │
00:03:51 verbose #1886 > > │ 00:00:07 verbose #35 benchmark.run / solutions.map / { i = 3; test_name │
00:03:51 verbose #1887 > > │ = semi_open_2; time = 79 }                                                   │
00:03:51 verbose #1888 > > │ 00:00:07 verbose #36 benchmark.run / solutions.map / { i = 4; test_name │
00:03:51 verbose #1889 > > │ = closed_2; time = 81 }                                                      │
00:03:51 verbose #1890 > > │                                                                              │
00:03:51 verbose #1891 > > │ 00:00:07 verbose #37 benchmark.run / { input_str = struct ([|1; 3; 4;   │
00:03:51 verbose #1892 > > │ 6; 8; 9; 11|], 11, 7) }                                                      │
00:03:51 verbose #1893 > > │ 00:00:07 verbose #38 benchmark.run / solutions.map / { i = 1; test_name │
00:03:51 verbose #1894 > > │ = semi_open_1; time = 86 }                                                   │
00:03:51 verbose #1895 > > │ 00:00:07 verbose #39 benchmark.run / solutions.map / { i = 2; test_name │
00:03:51 verbose #1896 > > │ = closed_1; time = 83 }                                                      │
00:03:51 verbose #1897 > > │ 00:00:07 verbose #40 benchmark.run / solutions.map / { i = 3; test_name │
00:03:51 verbose #1898 > > │ = semi_open_2; time = 83 }                                                   │
00:03:51 verbose #1899 > > │ 00:00:08 verbose #41 benchmark.run / solutions.map / { i = 4; test_name │
00:03:51 verbose #1900 > > │ = closed_2; time = 83 }                                                      │
00:03:51 verbose #1901 > > │                                                                              │
00:03:51 verbose #1902 > > │ 00:00:08 verbose #42 benchmark.run / { input_str = struct ([|1; 3; 4;   │
00:03:51 verbose #1903 > > │ 6; 8; 9; 11|], 12, 7) }                                                      │
00:03:51 verbose #1904 > > │ 00:00:08 verbose #43 benchmark.run / solutions.map / { i = 1; test_name │
00:03:51 verbose #1905 > > │ = semi_open_1; time = 85 }                                                   │
00:03:51 verbose #1906 > > │ 00:00:08 verbose #44 benchmark.run / solutions.map / { i = 2; test_name │
00:03:51 verbose #1907 > > │ = closed_1; time = 86 }                                                      │
00:03:51 verbose #1908 > > │ 00:00:08 verbose #45 benchmark.run / solutions.map / { i = 3; test_name │
00:03:51 verbose #1909 > > │ = semi_open_2; time = 85 }                                                   │
00:03:51 verbose #1910 > > │ 00:00:09 verbose #46 benchmark.run / solutions.map / { i = 4; test_name │
00:03:51 verbose #1911 > > │ = closed_2; time = 86 }                                                      │
00:03:51 verbose #1912 > > │                                                                              │
00:03:51 verbose #1913 > > │ 00:00:09 verbose #47 benchmark.run / { input_str = struct ([|1; 2; 3;   │
00:03:51 verbose #1914 > > │ 4...100; ...|], 60, 100) }                                                   │
00:03:51 verbose #1915 > > │ 00:00:09 verbose #48 benchmark.run / solutions.map / { i = 1; test_name │
00:03:51 verbose #1916 > > │ = semi_open_1; time = 98 }                                                   │
00:03:51 verbose #1917 > > │ 00:00:09 verbose #49 benchmark.run / solutions.map / { i = 2; test_name │
00:03:51 verbose #1918 > > │ = closed_1; time = 104 }                                                     │
00:03:51 verbose #1919 > > │ 00:00:09 verbose #50 benchmark.run / solutions.map / { i = 3; test_name │
00:03:51 verbose #1920 > > │ = semi_open_2; time = 99 }                                                   │
00:03:51 verbose #1921 > > │ 00:00:10 verbose #51 benchmark.run / solutions.map / { i = 4; test_name │
00:03:51 verbose #1922 > > │ = closed_2; time = 104 }                                                     │
00:03:51 verbose #1923 > > │ ```                                                                          │
00:03:51 verbose #1924 > > │ input                                    	| expected	| result  	| best             │
00:03:51 verbose #1925 > > │ ---                                      	| ---     	| ---     	| ---              │
00:03:51 verbose #1926 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	| US4_0 3 	| US4_0 3 	| 2, 155           │
00:03:51 verbose #1927 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	| US4_0 0 	| US4_0 0 	| 2, 83            │
00:03:51 verbose #1928 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	| US4_0 6 	| US4_0 6 	| 3, 82            │
00:03:51 verbose #1929 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	| US4_1   	| US4_1   	| 3, 86            │
00:03:51 verbose #1930 > > │ struct ([1; 2; 3; 4...00; ...], 60, 1000)	| US4_0 59	| US4_0 59	| 1, 106           │
00:03:51 verbose #1931 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7)    	| US4_0 3 	| US4_0 3 	| 4, 72            │
00:03:51 verbose #1932 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7)    	| US4_0 0 	| US4_0 0 	| 3, 79            │
00:03:51 verbose #1933 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7)   	| US4_0 6 	| US4_0 6 	| 2, 83            │
00:03:51 verbose #1934 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7)   	| US4_1   	| US4_1   	| 1, 85            │
00:03:51 verbose #1935 > > │ struct ([1; 2; 3; 4...100; ...], 60, 100)	| US4_0 59	| US4_0 59	| 1, 98            │
00:03:51 verbose #1936 > > │ ```                                                                          │
00:03:51 verbose #1937 > > │ 00:00:10 verbose #52 benchmark.sort_result_list / averages.iter / { i = │
00:03:51 verbose #1938 > > │ 2; avg = 95 }                                                                │
00:03:51 verbose #1939 > > │ 00:00:10 verbose #53 benchmark.sort_result_list / averages.iter / { i = │
00:03:51 verbose #1940 > > │ 4; avg = 96 }                                                                │
00:03:51 verbose #1941 > > │ 00:00:10 verbose #54 benchmark.sort_result_list / averages.iter / { i = │
00:03:51 verbose #1942 > > │ 3; avg = 102 }                                                               │
00:03:51 verbose #1943 > > │ 00:00:10 verbose #55 benchmark.sort_result_list / averages.iter / { i = │
00:03:51 verbose #1944 > > │ 1; avg = 114 }                                                               │
00:03:51 verbose #1945 > > │ ```                                                                          │
00:03:51 verbose #1946 > > │                                                                              │
00:03:51 verbose #1947 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:51 verbose #1948 > >
00:03:51 verbose #1949 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:51 verbose #1950 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:51 verbose #1951 > > │ ## returnLettersWithOddCountTests                                            │
00:03:51 verbose #1952 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:51 verbose #1953 > >
00:03:51 verbose #1954 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:51 verbose #1955 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:51 verbose #1956 > > │ Test: ReturnLettersWithOddCount                                              │
00:03:51 verbose #1957 > > │                                                                              │
00:03:51 verbose #1958 > > │ Solution: 1                                                                  │
00:03:51 verbose #1959 > > │ Test case 1. A. Time: 645L                                                   │
00:03:51 verbose #1960 > > │                                                                              │
00:03:51 verbose #1961 > > │ Solution: 2                                                                  │
00:03:51 verbose #1962 > > │ Test case 1. A. Time: 663L                                                   │
00:03:51 verbose #1963 > > │                                                                              │
00:03:51 verbose #1964 > > │ Solution: 3                                                                  │
00:03:51 verbose #1965 > > │ Test case 1. A. Time: 680L                                                   │
00:03:51 verbose #1966 > > │                                                                              │
00:03:51 verbose #1967 > > │ Solution: 9                                                                  │
00:03:51 verbose #1968 > > │ Test case 1. A. Time: 730L                                                   │
00:03:51 verbose #1969 > > │                                                                              │
00:03:51 verbose #1970 > > │ Solution: 10                                                                 │
00:03:51 verbose #1971 > > │ Test case 1. A. Time: 815L                                                   │
00:03:51 verbose #1972 > > │                                                                              │
00:03:51 verbose #1973 > > │ Input   | Expected        | Result          | Best                           │
00:03:51 verbose #1974 > > │ ---     | ---             | ---             | ---                            │
00:03:51 verbose #1975 > > │ 1       | a               | a               | (1, 645)                       │
00:03:51 verbose #1976 > > │ 2       | ba              | ba              | (1, 663)                       │
00:03:51 verbose #1977 > > │ 3       | aaa             | aaa             | (1, 680)                       │
00:03:51 verbose #1978 > > │ 9       | aaaaaaaaa       | aaaaaaaaa       | (1, 730)                       │
00:03:51 verbose #1979 > > │ 10      | baaaaaaaaa      | baaaaaaaaa      | (1, 815)                       │
00:03:51 verbose #1980 > > │                                                                              │
00:03:51 verbose #1981 > > │ Averages                                                                     │
00:03:51 verbose #1982 > > │ Test case 1. Average Time: 706L                                              │
00:03:51 verbose #1983 > > │                                                                              │
00:03:51 verbose #1984 > > │ Ranking                                                                      │
00:03:51 verbose #1985 > > │ Test case 1. Average Time: 706L                                              │
00:03:51 verbose #1986 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:51 verbose #1987 > >
00:03:51 verbose #1988 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:03:51 verbose #1989 > > //// test
00:03:51 verbose #1990 > >
00:03:51 verbose #1991 > > let solutions = [[
00:03:51 verbose #1992 > >     "A",
00:03:51 verbose #1993 > >     fun n ->
00:03:51 verbose #1994 > >         let mutable _builder = StringBuilder (new string('a', n))
00:03:51 verbose #1995 > >         if n % 2 = 0 then
00:03:51 verbose #1996 > >             _builder.[[0]] <- 'b'
00:03:51 verbose #1997 > >
00:03:51 verbose #1998 > >         _builder.ToString ()
00:03:51 verbose #1999 > > ]]
00:03:51 verbose #2000 > > let testCases = seq {
00:03:51 verbose #2001 > >     1, "a"
00:03:51 verbose #2002 > >     2, "ba"
00:03:51 verbose #2003 > >     3, "aaa"
00:03:51 verbose #2004 > >     9, "aaaaaaaaa"
00:03:51 verbose #2005 > >     10, "baaaaaaaaa"
00:03:51 verbose #2006 > > }
00:03:51 verbose #2007 > > let rec returnLettersWithOddCountTests =
00:03:51 verbose #2008 > >     runAll (nameof returnLettersWithOddCountTests) _count solutions testCases
00:03:51 verbose #2009 > > returnLettersWithOddCountTests
00:03:51 verbose #2010 > > |> sortResultList
00:03:54 verbose #2011 > >
00:03:54 verbose #2012 > > ╭─[ 2.81s - stdout ]───────────────────────────────────────────────────────────╮
00:03:54 verbose #2013 > > │                                                                              │
00:03:54 verbose #2014 > > │                                                                              │
00:03:54 verbose #2015 > > │ Test: returnLettersWithOddCountTests                                         │
00:03:54 verbose #2016 > > │                                                                              │
00:03:54 verbose #2017 > > │ Solution: 1                                                                  │
00:03:54 verbose #2018 > > │ Test case 1. A. Time: 340L                                                   │
00:03:54 verbose #2019 > > │                                                                              │
00:03:54 verbose #2020 > > │ Solution: 2                                                                  │
00:03:54 verbose #2021 > > │ Test case 1. A. Time: 390L                                                   │
00:03:54 verbose #2022 > > │                                                                              │
00:03:54 verbose #2023 > > │ Solution: 3                                                                  │
00:03:54 verbose #2024 > > │ Test case 1. A. Time: 403L                                                   │
00:03:54 verbose #2025 > > │                                                                              │
00:03:54 verbose #2026 > > │ Solution: 9                                                                  │
00:03:54 verbose #2027 > > │ Test case 1. A. Time: 375L                                                   │
00:03:54 verbose #2028 > > │                                                                              │
00:03:54 verbose #2029 > > │ Solution: 10                                                                 │
00:03:54 verbose #2030 > > │ Test case 1. A. Time: 373L                                                   │
00:03:54 verbose #2031 > > │                                                                              │
00:03:54 verbose #2032 > > │ Input	| Expected  	| Result    	| Best                                             │
00:03:54 verbose #2033 > > │ ---  	| ---       	| ---       	| ---                                              │
00:03:54 verbose #2034 > > │ 1    	| a         	| a         	| (1, 340)                                         │
00:03:54 verbose #2035 > > │ 2    	| ba        	| ba        	| (1, 390)                                         │
00:03:54 verbose #2036 > > │ 3    	| aaa       	| aaa       	| (1, 403)                                         │
00:03:54 verbose #2037 > > │ 9    	| aaaaaaaaa 	| aaaaaaaaa 	| (1, 375)                                         │
00:03:54 verbose #2038 > > │ 10   	| baaaaaaaaa	| baaaaaaaaa	| (1, 373)                                         │
00:03:54 verbose #2039 > > │                                                                              │
00:03:54 verbose #2040 > > │ Average Ranking                                                              │
00:03:54 verbose #2041 > > │ Test case 1. Average Time: 376L                                              │
00:03:54 verbose #2042 > > │                                                                              │
00:03:54 verbose #2043 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:54 verbose #2044 > >
00:03:54 verbose #2045 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:54 verbose #2046 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:54 verbose #2047 > > │ ## hasAnyPairCloseToEachotherTests                                           │
00:03:54 verbose #2048 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:54 verbose #2049 > >
00:03:54 verbose #2050 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:54 verbose #2051 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:54 verbose #2052 > > │ Test: HasAnyPairCloseToEachother                                             │
00:03:54 verbose #2053 > > │                                                                              │
00:03:54 verbose #2054 > > │ Solution: 0                                                                  │
00:03:54 verbose #2055 > > │ Test case 1. A. Time: 137L                                                   │
00:03:54 verbose #2056 > > │                                                                              │
00:03:54 verbose #2057 > > │ Solution: 1,2                                                                │
00:03:54 verbose #2058 > > │ Test case 1. A. Time: 186L                                                   │
00:03:54 verbose #2059 > > │                                                                              │
00:03:54 verbose #2060 > > │ Solution: 3,5                                                                │
00:03:54 verbose #2061 > > │ Test case 1. A. Time: 206L                                                   │
00:03:54 verbose #2062 > > │                                                                              │
00:03:54 verbose #2063 > > │ Solution: 3,4,6                                                              │
00:03:54 verbose #2064 > > │ Test case 1. A. Time: 149L                                                   │
00:03:54 verbose #2065 > > │                                                                              │
00:03:54 verbose #2066 > > │ Solution: 2,4,6                                                              │
00:03:54 verbose #2067 > > │ Test case 1. A. Time: 150L                                                   │
00:03:54 verbose #2068 > > │                                                                              │
00:03:54 verbose #2069 > > │ Input   | Expected        | Result  | Best                                   │
00:03:54 verbose #2070 > > │ ---     | ---             | ---     | ---                                    │
00:03:54 verbose #2071 > > │ 0       | False           | False   | (1, 137)                               │
00:03:54 verbose #2072 > > │ 1,2     | True            | True    | (1, 186)                               │
00:03:54 verbose #2073 > > │ 3,5     | False           | False   | (1, 206)                               │
00:03:54 verbose #2074 > > │ 3,4,6   | True            | True    | (1, 149)                               │
00:03:54 verbose #2075 > > │ 2,4,6   | False           | False   | (1, 150)                               │
00:03:54 verbose #2076 > > │                                                                              │
00:03:54 verbose #2077 > > │ Averages                                                                     │
00:03:54 verbose #2078 > > │ Test case 1. Average Time: 165L                                              │
00:03:54 verbose #2079 > > │                                                                              │
00:03:54 verbose #2080 > > │ Ranking                                                                      │
00:03:54 verbose #2081 > > │ Test case 1. Average Time: 165L                                              │
00:03:54 verbose #2082 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:54 verbose #2083 > >
00:03:54 verbose #2084 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:03:54 verbose #2085 > > //// test
00:03:54 verbose #2086 > >
00:03:54 verbose #2087 > > let solutions = [[
00:03:54 verbose #2088 > >     "A",
00:03:54 verbose #2089 > >     fun (a: int[[]]) ->
00:03:54 verbose #2090 > >         let indices = System.Linq.Enumerable.Range(0, a.Length) |>
00:03:54 verbose #2091 > > System.Linq.Enumerable.ToArray
00:03:54 verbose #2092 > >         System.Array.Sort (a, indices)
00:03:54 verbose #2093 > >
00:03:54 verbose #2094 > >         indices
00:03:54 verbose #2095 > >         |> Array.take (a.Length - 1)
00:03:54 verbose #2096 > >         |> Array.exists (fun i -> a.[[i + 1]] - a.[[i]] = 1)
00:03:54 verbose #2097 > > ]]
00:03:54 verbose #2098 > > let testCases = seq {
00:03:54 verbose #2099 > >     [[| 0 |]], false
00:03:54 verbose #2100 > >     [[| 1; 2 |]], true
00:03:54 verbose #2101 > >     [[| 3; 5 |]], false
00:03:54 verbose #2102 > >     [[| 3; 4; 6 |]], true
00:03:54 verbose #2103 > >     [[| 2; 4; 6 |]], false
00:03:54 verbose #2104 > > }
00:03:54 verbose #2105 > > let rec hasAnyPairCloseToEachotherTests =
00:03:54 verbose #2106 > >     runAll (nameof hasAnyPairCloseToEachotherTests) _count solutions testCases
00:03:54 verbose #2107 > > hasAnyPairCloseToEachotherTests
00:03:54 verbose #2108 > > |> sortResultList
00:03:56 verbose #2109 > >
00:03:56 verbose #2110 > > ╭─[ 1.39s - stdout ]───────────────────────────────────────────────────────────╮
00:03:56 verbose #2111 > > │                                                                              │
00:03:56 verbose #2112 > > │                                                                              │
00:03:56 verbose #2113 > > │ Test: hasAnyPairCloseToEachotherTests                                        │
00:03:56 verbose #2114 > > │                                                                              │
00:03:56 verbose #2115 > > │ Solution: 0                                                                  │
00:03:56 verbose #2116 > > │ Test case 1. A. Time: 152L                                                   │
00:03:56 verbose #2117 > > │                                                                              │
00:03:56 verbose #2118 > > │ Solution: 1,2                                                                │
00:03:56 verbose #2119 > > │ Test case 1. A. Time: 172L                                                   │
00:03:56 verbose #2120 > > │                                                                              │
00:03:56 verbose #2121 > > │ Solution: 3,5                                                                │
00:03:56 verbose #2122 > > │ Test case 1. A. Time: 78L                                                    │
00:03:56 verbose #2123 > > │                                                                              │
00:03:56 verbose #2124 > > │ Solution: 3,4,6                                                              │
00:03:56 verbose #2125 > > │ Test case 1. A. Time: 70L                                                    │
00:03:56 verbose #2126 > > │                                                                              │
00:03:56 verbose #2127 > > │ Solution: 2,4,6                                                              │
00:03:56 verbose #2128 > > │ Test case 1. A. Time: 70L                                                    │
00:03:56 verbose #2129 > > │                                                                              │
00:03:56 verbose #2130 > > │ Input	| Expected	| Result	| Best                                                   │
00:03:56 verbose #2131 > > │ ---  	| ---     	| ---   	| ---                                                    │
00:03:56 verbose #2132 > > │ 0    	| False   	| False 	| (1, 152)                                               │
00:03:56 verbose #2133 > > │ 1,2  	| True    	| True  	| (1, 172)                                               │
00:03:56 verbose #2134 > > │ 3,5  	| False   	| False 	| (1, 78)                                                │
00:03:56 verbose #2135 > > │ 3,4,6	| True    	| True  	| (1, 70)                                                │
00:03:56 verbose #2136 > > │ 2,4,6	| False   	| False 	| (1, 70)                                                │
00:03:56 verbose #2137 > > │                                                                              │
00:03:56 verbose #2138 > > │ Average Ranking                                                              │
00:03:56 verbose #2139 > > │ Test case 1. Average Time: 108L                                              │
00:03:56 verbose #2140 > > │                                                                              │
00:03:56 verbose #2141 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:56 verbose #2142 > 00:03:55 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 158708 }
00:03:56 verbose #2143 > 00:03:55   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:03:56 verbose #2144 >     "nbconvert",
00:03:56 verbose #2145 >     "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb",
00:03:56 verbose #2146 >     "--to",
00:03:56 verbose #2147 >     "html",
00:03:56 verbose #2148 >     "--HTMLExporter.theme=dark",
00:03:56 verbose #2149 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:03:56 verbose #2150 > 00:03:56 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb to html
00:03:56 verbose #2151 > 00:03:56 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:03:56 verbose #2152 > 00:03:56 verbose #7 !   validate(nb)
00:03:57 verbose #2153 > 00:03:56 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:03:57 verbose #2154 > 00:03:56 verbose #9 !   return _pygments_highlight(
00:03:57 verbose #2155 > 00:03:57 verbose #10 ! [NbConvertApp] Writing 458566 bytes to /home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html
00:03:57 verbose #2156 > 00:03:57 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 }
00:03:57 verbose #2157 > 00:03:57   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 }
00:03:57 verbose #2158 > 00:03:57   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:03:57 verbose #2159 >     "-c",
00:03:57 verbose #2160 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:03:57 verbose #2161 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:03:58 verbose #2162 > 00:03:57 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:03:58 verbose #2163 > 00:03:57   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:03:58 verbose #2164 > 00:03:57   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 159657 }
00:03:58   debug #2165 runtime.execute_with_options_async / { exit_code = 0; output_length = 166739 }
00:03:58   debug #1 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path Perf.dib --retries 3
00:00:00   debug #1 writeDibCode / output: Fs / path: Perf.dib
00:00:00   debug #2 parseDibCode / output: Fs / file: Perf.dib
In [ ]:
{ pwsh ../apps/dir-tree-html/build.ps1 } | Invoke-Block
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00   debug #1 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path DirTreeHtml.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:00 verbose #2 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "DirTreeHtml.dib"])) }
00:00:00 verbose #3 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:00:00 verbose #4 >     "repl",
00:00:00 verbose #5 >     "--exit-after-run",
00:00:00 verbose #6 >     "--run",
00:00:00 verbose #7 >     "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib",
00:00:00 verbose #8 >     "--output-path",
00:00:00 verbose #9 >     "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb",
00:00:00 verbose #10 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:01 verbose #11 > >
00:00:01 verbose #12 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:01 verbose #13 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:01 verbose #14 > > │ # DirTreeHtml (Polyglot)                                                     │
00:00:01 verbose #15 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:04 verbose #16 > >
00:00:04 verbose #17 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:04 verbose #18 > > #r
00:00:04 verbose #19 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan
00:00:04 verbose #20 > > dard2.1/FSharp.Control.AsyncSeq.dll"
00:00:04 verbose #21 > > #r
00:00:04 verbose #22 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6.
00:00:04 verbose #23 > > 0/System.Reactive.dll"
00:00:04 verbose #24 > > #r
00:00:04 verbose #25 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib
00:00:04 verbose #26 > > netstandard2.0/System.Reactive.Linq.dll"
00:00:04 verbose #27 > > #r
00:00:04 verbose #28 > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll"
00:00:04 verbose #29 > > #r
00:00:04 verbose #30 > > @"../../../../../../../.nuget/packages/falco.markup/1.1.1/lib/netstandard2.0/Fal
00:00:04 verbose #31 > > co.Markup.dll"
00:00:16 verbose #32 > >
00:00:16 verbose #33 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #34 > > #if !INTERACTIVE
00:00:16 verbose #35 > > open Lib
00:00:16 verbose #36 > > #endif
00:00:16 verbose #37 > >
00:00:16 verbose #38 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #39 > > open SpiralFileSystem.Operators
00:00:16 verbose #40 > > open Falco.Markup
00:00:16 verbose #41 > >
00:00:16 verbose #42 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #43 > > type FileSystemNode =
00:00:16 verbose #44 > >     | File of string * string * int64
00:00:16 verbose #45 > >     | Folder of string * string * FileSystemNode list
00:00:16 verbose #46 > >     | Root of FileSystemNode list
00:00:16 verbose #47 > >
00:00:16 verbose #48 > > let rec scanDirectory isRoot (basePath : string) (path : string) =
00:00:16 verbose #49 > >     let relativePath =
00:00:16 verbose #50 > >         path
00:00:16 verbose #51 > >         |> SpiralSm.replace basePath ""
00:00:16 verbose #52 > >         |> SpiralSm.replace "\\" "/"
00:00:16 verbose #53 > >         |> SpiralSm.replace "//" "/"
00:00:16 verbose #54 > >         |> SpiralSm.trim_start [[| '/' |]]
00:00:16 verbose #55 > >
00:00:16 verbose #56 > >     let directories =
00:00:16 verbose #57 > >         path
00:00:16 verbose #58 > >         |> System.IO.Directory.GetDirectories
00:00:16 verbose #59 > >         |> Array.toList
00:00:16 verbose #60 > >         |> List.sort
00:00:16 verbose #61 > >         |> List.map (scanDirectory false basePath)
00:00:16 verbose #62 > >     let files =
00:00:16 verbose #63 > >         path
00:00:16 verbose #64 > >         |> System.IO.Directory.GetFiles
00:00:16 verbose #65 > >         |> Array.toList
00:00:16 verbose #66 > >         |> List.sort
00:00:16 verbose #67 > >         |> List.map (fun f -> File (System.IO.Path.GetFileName f, relativePath,
00:00:16 verbose #68 > > System.IO.FileInfo(f).Length))
00:00:16 verbose #69 > >
00:00:16 verbose #70 > >     let children = directories @ files
00:00:16 verbose #71 > >     if isRoot
00:00:16 verbose #72 > >     then Root children
00:00:16 verbose #73 > >     else Folder (path |> System.IO.Path.GetFileName, relativePath, children)
00:00:16 verbose #74 > >
00:00:16 verbose #75 > > let rec generateHtml fsNode =
00:00:16 verbose #76 > >     let sizeLabel size =
00:00:16 verbose #77 > >         match float size with
00:00:16 verbose #78 > >         | size when size > 1024.0 * 1024.0 -> $"%.2f{size / 1024.0 / 1024.0} MB"
00:00:16 verbose #79 > >         | size when size > 1024.0 -> $"%.2f{size / 1024.0} KB"
00:00:16 verbose #80 > >         | size -> $"%.2f{size} B"
00:00:16 verbose #81 > >     match fsNode with
00:00:16 verbose #82 > >     | File (fileName, relativePath, size) ->
00:00:16 verbose #83 > >         Elem.div [[]] [[
00:00:16 verbose #84 > >             Text.raw "&#128196; "
00:00:16 verbose #85 > >             Elem.a [[
00:00:16 verbose #86 > >                 Attr.href $"""{relativePath}{if relativePath = "" then "" else
00:00:16 verbose #87 > > "/"}{fileName}"""
00:00:16 verbose #88 > >             ]] [[
00:00:16 verbose #89 > >                 Text.raw fileName
00:00:16 verbose #90 > >             ]]
00:00:16 verbose #91 > >             Elem.span [[]] [[
00:00:16 verbose #92 > >                 Text.raw $" ({size |> sizeLabel})"
00:00:16 verbose #93 > >             ]]
00:00:16 verbose #94 > >         ]]
00:00:16 verbose #95 > >     | Folder (folderName, relativePath, children) ->
00:00:16 verbose #96 > >         let size =
00:00:16 verbose #97 > >             let rec loop children =
00:00:16 verbose #98 > >                 children
00:00:16 verbose #99 > >                 |> List.sumBy (function
00:00:16 verbose #100 > >                     | File (_, _, size) -> size
00:00:16 verbose #101 > >                     | Folder (_, _, children)
00:00:16 verbose #102 > >                     | Root children -> loop children
00:00:16 verbose #103 > >                 )
00:00:16 verbose #104 > >             loop children
00:00:16 verbose #105 > >         Elem.details [[
00:00:16 verbose #106 > >             Attr.open' "true"
00:00:16 verbose #107 > >         ]] [[
00:00:16 verbose #108 > >             Elem.summary [[]] [[
00:00:16 verbose #109 > >                 Text.raw "&#128194; "
00:00:16 verbose #110 > >                 Elem.a [[
00:00:16 verbose #111 > >                     Attr.href relativePath
00:00:16 verbose #112 > >                 ]] [[
00:00:16 verbose #113 > >                     Text.raw folderName
00:00:16 verbose #114 > >                 ]]
00:00:16 verbose #115 > >                 Elem.span [[]] [[
00:00:16 verbose #116 > >                     Text.raw $" ({size |> sizeLabel})"
00:00:16 verbose #117 > >                 ]]
00:00:16 verbose #118 > >             ]]
00:00:16 verbose #119 > >             Elem.div [[]] [[
00:00:16 verbose #120 > >                 yield! children |> List.map generateHtml
00:00:16 verbose #121 > >             ]]
00:00:16 verbose #122 > >         ]]
00:00:16 verbose #123 > >     | Root children ->
00:00:16 verbose #124 > >         Elem.div [[]] [[
00:00:16 verbose #125 > >             yield! children |> List.map generateHtml
00:00:16 verbose #126 > >         ]]
00:00:16 verbose #127 > >
00:00:16 verbose #128 > > let generateHtmlForFileSystem root =
00:00:16 verbose #129 > >     $"""<!DOCTYPE html>
00:00:16 verbose #130 > > <html lang="en">
00:00:16 verbose #131 > > <head>
00:00:16 verbose #132 > >   <meta charset="UTF-8">
00:00:16 verbose #133 > >   <style>
00:00:16 verbose #134 > > body {{
00:00:16 verbose #135 > >     background-color: #222;
00:00:16 verbose #136 > >     color: #ccc;
00:00:16 verbose #137 > > }}
00:00:16 verbose #138 > > a {{
00:00:16 verbose #139 > >   color: #777;
00:00:16 verbose #140 > >   font-size: 15px;
00:00:16 verbose #141 > > }}
00:00:16 verbose #142 > > span {{
00:00:16 verbose #143 > >   font-size: 11px;
00:00:16 verbose #144 > > }}
00:00:16 verbose #145 > > div > div {{
00:00:16 verbose #146 > >   padding-left: 10px;
00:00:16 verbose #147 > > }}
00:00:16 verbose #148 > > details > div {{
00:00:16 verbose #149 > >   padding-left: 19px;
00:00:16 verbose #150 > > }}
00:00:16 verbose #151 > >   </style>
00:00:16 verbose #152 > > </head>
00:00:16 verbose #153 > > <body>
00:00:16 verbose #154 > >   {root |> generateHtml |> renderNode}
00:00:16 verbose #155 > > </body>
00:00:16 verbose #156 > > </html>
00:00:16 verbose #157 > > """
00:00:16 verbose #158 > >
00:00:16 verbose #159 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #160 > > //// test
00:00:16 verbose #161 > >
00:00:16 verbose #162 > > let expected = """<!DOCTYPE html>
00:00:16 verbose #163 > > <html lang="en">
00:00:16 verbose #164 > > <head>
00:00:16 verbose #165 > >   <meta charset="UTF-8">
00:00:16 verbose #166 > >   <style>
00:00:16 verbose #167 > > body {
00:00:16 verbose #168 > >     background-color: #222;
00:00:16 verbose #169 > >     color: #ccc;
00:00:16 verbose #170 > > }
00:00:16 verbose #171 > > a {
00:00:16 verbose #172 > >   color: #777;
00:00:16 verbose #173 > >   font-size: 15px;
00:00:16 verbose #174 > > }
00:00:16 verbose #175 > > span {
00:00:16 verbose #176 > >   font-size: 11px;
00:00:16 verbose #177 > > }
00:00:16 verbose #178 > > div > div {
00:00:16 verbose #179 > >   padding-left: 10px;
00:00:16 verbose #180 > > }
00:00:16 verbose #181 > > details > div {
00:00:16 verbose #182 > >   padding-left: 19px;
00:00:16 verbose #183 > > }
00:00:16 verbose #184 > >   </style>
00:00:16 verbose #185 > > </head>
00:00:16 verbose #186 > > <body>
00:00:16 verbose #187 > >   <div><details open="true"><summary>&#128194; <a href="_.root">_.root</a><span>
00:00:16 verbose #188 > > (10.00 B)</span></summary><div><details open="true"><summary>&#128194; <a
00:00:16 verbose #189 > > href="_.root/3">3</a><span> (6.00 B)</span></summary><div><details
00:00:16 verbose #190 > > open="true"><summary>&#128194; <a href="_.root/3/2">2</a><span> (3.00
00:00:16 verbose #191 > > B)</span></summary><div><details open="true"><summary>&#128194; <a
00:00:16 verbose #192 > > href="_.root/3/2/1">1</a><span> (1.00 B)</span></summary><div><div>&#128196; <a
00:00:16 verbose #193 > > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00
00:00:16 verbose #194 > > B)</span></div></div></details><div>&#128196; <a
00:00:16 verbose #195 > > href="_.root/3/2/file.txt">file.txt</a><span> (2.00
00:00:16 verbose #196 > > B)</span></div></div></details><div>&#128196; <a
00:00:16 verbose #197 > > href="_.root/3/file.txt">file.txt</a><span> (3.00
00:00:16 verbose #198 > > B)</span></div></div></details><div>&#128196; <a
00:00:16 verbose #199 > > href="_.root/file.txt">file.txt</a><span> (4.00
00:00:16 verbose #200 > > B)</span></div></div></details></div>
00:00:16 verbose #201 > > </body>
00:00:16 verbose #202 > > </html>
00:00:16 verbose #203 > > """
00:00:16 verbose #204 > >
00:00:16 verbose #205 > > let struct (tempFolder, disposable) = expected |> SpiralCrypto.hash_text |>
00:00:16 verbose #206 > > SpiralFileSystem.create_temp_dir'
00:00:16 verbose #207 > > let rec loop d n = async {
00:00:16 verbose #208 > >     if n >= 0 then
00:00:16 verbose #209 > >         tempFolder </> d |> System.IO.Directory.CreateDirectory |> ignore
00:00:16 verbose #210 > >         do!
00:00:16 verbose #211 > >             n
00:00:16 verbose #212 > >             |> string
00:00:16 verbose #213 > >             |> String.replicate (n + 1)
00:00:16 verbose #214 > >             |> SpiralFileSystem.write_all_text_async (tempFolder </> d </>
00:00:16 verbose #215 > > $"file.txt")
00:00:16 verbose #216 > >         do! loop $"{d}/{n}" (n - 1)
00:00:16 verbose #217 > > }
00:00:16 verbose #218 > > loop "_.root" 3
00:00:16 verbose #219 > > |> Async.RunSynchronously
00:00:16 verbose #220 > >
00:00:16 verbose #221 > > let html =
00:00:16 verbose #222 > >     scanDirectory true tempFolder tempFolder
00:00:16 verbose #223 > >     |> generateHtmlForFileSystem
00:00:16 verbose #224 > >
00:00:16 verbose #225 > > html
00:00:16 verbose #226 > > |> _assertEqual expected
00:00:16 verbose #227 > >
00:00:16 verbose #228 > > disposable.Dispose ()
00:00:16 verbose #229 > >
00:00:16 verbose #230 > > html |> Microsoft.DotNet.Interactive.Formatting.Html.ToHtmlContent
00:00:16 verbose #231 > >
00:00:16 verbose #232 > > ╭─[ 116.54ms - return value ]──────────────────────────────────────────────────╮
00:00:16 verbose #233 > > │ <!DOCTYPE html>                                                              │
00:00:16 verbose #234 > > │ <html lang="en">                                                             │
00:00:16 verbose #235 > > │ <head>                                                                       │
00:00:16 verbose #236 > > │   <meta charset="UTF-8">                                                     │
00:00:16 verbose #237 > > │   <style>                                                                    │
00:00:16 verbose #238 > > │ body {                                                                       │
00:00:16 verbose #239 > > │     background-color: #222;                                                  │
00:00:16 verbose #240 > > │     color: #ccc;                                                             │
00:00:16 verbose #241 > > │ }                                                                            │
00:00:16 verbose #242 > > │ a {                                                                          │
00:00:16 verbose #243 > > │   color: #777;                                                               │
00:00:16 verbose #244 > > │   font-size: 15px;                                                           │
00:00:16 verbose #245 > > │ }                                                                            │
00:00:16 verbose #246 > > │ span {                                                                       │
00:00:16 verbose #247 > > │   font-size: 11px;                                                           │
00:00:16 verbose #248 > > │ }                                                                            │
00:00:16 verbose #249 > > │ div > div {                                                                  │
00:00:16 verbose #250 > > │   padding-left: 10px;                                                        │
00:00:16 verbose #251 > > │ }                                                                            │
00:00:16 verbose #252 > > │ details > div {                                                              │
00:00:16 verbose #253 > > │   padding-left: 19px;                                                        │
00:00:16 verbose #254 > > │ }                                                                            │
00:00:16 verbose #255 > > │   </style>                                                                   │
00:00:16 verbose #256 > > │ </head>                                                                      │
00:00:16 verbose #257 > > │ <body>                                                                       │
00:00:16 verbose #258 > > │   <div><details open="true"><summary>&#128194; <a                            │
00:00:16 verbose #259 > > │ href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details       │
00:00:16 verbose #260 > > │ open="true"><summary>&#128194; <a href="_.root/3">3</a><span> (6.00          │
00:00:16 verbose #261 > > │ B)</span></summary><div><details open="true"><summary>&#128194; <a           │
00:00:16 verbose #262 > > │ href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details         │
00:00:16 verbose #263 > > │ open="true"><summary>&#128194; <a href="_.root/3/2/1">1</a><span> (1.00      │
00:00:16 verbose #264 > > │ B)</span></summary><div><div>&#128196; <a                                    │
00:00:16 verbose #265 > > │ href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00                        │
00:00:16 verbose #266 > > │ B)</span></div></div></details><div>&#128196; <a                             │
00:00:16 verbose #267 > > │ href="_.root/3/2/file.txt">file.txt</a><span> (2.00                          │
00:00:16 verbose #268 > > │ B)</span></div></div></details><div>&#128196; <a                             │
00:00:16 verbose #269 > > │ href="_.root/3/file.txt">file.txt</a><span> (3.00                            │
00:00:16 verbose #270 > > │ B)</span></div></div></details><div>&#128196; <a                             │
00:00:16 verbose #271 > > │ href="_.root/file.txt">file.txt</a><span> (4.00                              │
00:00:16 verbose #272 > > │ B)</span></div></div></details></div>                                        │
00:00:16 verbose #273 > > │ </body>                                                                      │
00:00:16 verbose #274 > > │ </html>                                                                      │
00:00:16 verbose #275 > > │                                                                              │
00:00:16 verbose #276 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #277 > >
00:00:16 verbose #278 > > ╭─[ 120.33ms - stdout ]────────────────────────────────────────────────────────╮
00:00:16 verbose #279 > > │ "<!DOCTYPE html>                                                             │
00:00:16 verbose #280 > > │ <html lang="en">                                                             │
00:00:16 verbose #281 > > │ <head>                                                                       │
00:00:16 verbose #282 > > │   <meta charset="UTF-8">                                                     │
00:00:16 verbose #283 > > │   <style>                                                                    │
00:00:16 verbose #284 > > │ body {                                                                       │
00:00:16 verbose #285 > > │     background-color: #222;                                                  │
00:00:16 verbose #286 > > │     color: #ccc;                                                             │
00:00:16 verbose #287 > > │ }                                                                            │
00:00:16 verbose #288 > > │ a {                                                                          │
00:00:16 verbose #289 > > │   color: #777;                                                               │
00:00:16 verbose #290 > > │   font-size: 15px;                                                           │
00:00:16 verbose #291 > > │ }                                                                            │
00:00:16 verbose #292 > > │ span {                                                                       │
00:00:16 verbose #293 > > │   font-size: 11px;                                                           │
00:00:16 verbose #294 > > │ }                                                                            │
00:00:16 verbose #295 > > │ div > div {                                                                  │
00:00:16 verbose #296 > > │   padding-left: 10px;                                                        │
00:00:16 verbose #297 > > │ }                                                                            │
00:00:16 verbose #298 > > │ details > div {                                                              │
00:00:16 verbose #299 > > │   padding-left: 19px;                                                        │
00:00:16 verbose #300 > > │ }                                                                            │
00:00:16 verbose #301 > > │   </style>                                                                   │
00:00:16 verbose #302 > > │ </head>                                                                      │
00:00:16 verbose #303 > > │ <body>                                                                       │
00:00:16 verbose #304 > > │   <div><details open="true"><summary>&#128194; <a                            │
00:00:16 verbose #305 > > │ href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details       │
00:00:16 verbose #306 > > │ open="true"><summary>&#128194; <a href="_.root/3">3</a><span> (6.00          │
00:00:16 verbose #307 > > │ B)</span></summary><div><details open="true"><summary>&#128194; <a           │
00:00:16 verbose #308 > > │ href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details         │
00:00:16 verbose #309 > > │ open="true"><summary>&#128194; <a href="_.root/3/2/1">1</a><span> (1.00      │
00:00:16 verbose #310 > > │ B)</span></summary><div><div>&#128196; <a                                    │
00:00:16 verbose #311 > > │ href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00                        │
00:00:16 verbose #312 > > │ B)</span></div></div></details><div>&#128196; <a                             │
00:00:16 verbose #313 > > │ href="_.root/3/2/file.txt">file.txt</a><span> (2.00                          │
00:00:16 verbose #314 > > │ B)</span></div></div></details><div>&#128196; <a                             │
00:00:16 verbose #315 > > │ href="_.root/3/file.txt">file.txt</a><span> (3.00                            │
00:00:16 verbose #316 > > │ B)</span></div></div></details><div>&#128196; <a                             │
00:00:16 verbose #317 > > │ href="_.root/file.txt">file.txt</a><span> (4.00                              │
00:00:16 verbose #318 > > │ B)</span></div></div></details></div>                                        │
00:00:16 verbose #319 > > │ </body>                                                                      │
00:00:16 verbose #320 > > │ </html>                                                                      │
00:00:16 verbose #321 > > │ "                                                                            │
00:00:16 verbose #322 > > │                                                                              │
00:00:16 verbose #323 > > │                                                                              │
00:00:16 verbose #324 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #325 > >
00:00:16 verbose #326 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #327 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #328 > > │ ## Arguments                                                                 │
00:00:16 verbose #329 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #330 > >
00:00:16 verbose #331 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #332 > > [[<RequireQualifiedAccess>]]
00:00:16 verbose #333 > > type Arguments =
00:00:16 verbose #334 > >     | [[<Argu.ArguAttributes.ExactlyOnce>]] Dir of string
00:00:16 verbose #335 > >     | [[<Argu.ArguAttributes.ExactlyOnce>]] Html of string
00:00:16 verbose #336 > >
00:00:16 verbose #337 > >     interface Argu.IArgParserTemplate with
00:00:16 verbose #338 > >         member s.Usage =
00:00:16 verbose #339 > >             match s with
00:00:16 verbose #340 > >             | Dir _ -> nameof Dir
00:00:16 verbose #341 > >             | Html _ -> nameof Html
00:00:16 verbose #342 > >
00:00:16 verbose #343 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #344 > > //// test
00:00:16 verbose #345 > >
00:00:16 verbose #346 > > Argu.ArgumentParser.Create<Arguments>().PrintUsage ()
00:00:16 verbose #347 > >
00:00:16 verbose #348 > > ╭─[ 65.98ms - return value ]───────────────────────────────────────────────────╮
00:00:16 verbose #349 > > │ "USAGE: dotnet-repl [--help] --dir <string> --html <string>                  │
00:00:16 verbose #350 > > │                                                                              │
00:00:16 verbose #351 > > │ OPTIONS:                                                                     │
00:00:16 verbose #352 > > │                                                                              │
00:00:16 verbose #353 > > │     --dir <string>        Dir                                                │
00:00:16 verbose #354 > > │     --html <string>       Html                                               │
00:00:16 verbose #355 > > │     --help                display this list of options.                      │
00:00:16 verbose #356 > > │ "                                                                            │
00:00:16 verbose #357 > > │                                                                              │
00:00:16 verbose #358 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #359 > >
00:00:16 verbose #360 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:16 verbose #361 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:16 verbose #362 > > │ ## main                                                                      │
00:00:16 verbose #363 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #364 > >
00:00:16 verbose #365 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #366 > > let main args =
00:00:16 verbose #367 > >     let argsMap = args |> Runtime.parseArgsMap<Arguments>
00:00:16 verbose #368 > >
00:00:16 verbose #369 > >     let dir =
00:00:16 verbose #370 > >         match argsMap.[[nameof Arguments.Dir]] with
00:00:16 verbose #371 > >         | [[ Arguments.Dir dir ]] -> Some dir
00:00:16 verbose #372 > >         | _ -> None
00:00:16 verbose #373 > >         |> Option.get
00:00:16 verbose #374 > >
00:00:16 verbose #375 > >     let htmlPath =
00:00:16 verbose #376 > >         match argsMap.[[nameof Arguments.Html]] with
00:00:16 verbose #377 > >         | [[ Arguments.Html html ]] -> Some html
00:00:16 verbose #378 > >         | _ -> None
00:00:16 verbose #379 > >         |> Option.get
00:00:16 verbose #380 > >
00:00:16 verbose #381 > >     let fileSystem = scanDirectory true dir dir
00:00:16 verbose #382 > >     let html = generateHtmlForFileSystem fileSystem
00:00:16 verbose #383 > >
00:00:16 verbose #384 > >     html |> SpiralFileSystem.write_all_text_async htmlPath
00:00:16 verbose #385 > >     |> Async.runWithTimeout 30000
00:00:16 verbose #386 > >     |> function
00:00:16 verbose #387 > >         | Some () -> 0
00:00:16 verbose #388 > >         | None -> 1
00:00:16 verbose #389 > >
00:00:16 verbose #390 > > ── fsharp ──────────────────────────────────────────────────────────────────────
00:00:16 verbose #391 > > //// test
00:00:16 verbose #392 > >
00:00:16 verbose #393 > > let args =
00:00:16 verbose #394 > >     System.Environment.GetEnvironmentVariable "ARGS"
00:00:16 verbose #395 > >     |> SpiralRuntime.split_args
00:00:16 verbose #396 > >     |> Result.toArray
00:00:16 verbose #397 > >     |> Array.collect id
00:00:16 verbose #398 > >
00:00:16 verbose #399 > > match args with
00:00:16 verbose #400 > > | [[||]] -> 0
00:00:16 verbose #401 > > | args -> if main args = 0 then 0 else failwith "main failed"
00:00:16 verbose #402 > >
00:00:16 verbose #403 > > ╭─[ 61.94ms - return value ]───────────────────────────────────────────────────╮
00:00:16 verbose #404 > > │ <div class="dni-plaintext"><pre>0                                            │
00:00:16 verbose #405 > > │ </pre></div><style>                                                          │
00:00:16 verbose #406 > > │ .dni-code-hint {                                                             │
00:00:16 verbose #407 > > │     font-style: italic;                                                      │
00:00:16 verbose #408 > > │     overflow: hidden;                                                        │
00:00:16 verbose #409 > > │     white-space: nowrap;                                                     │
00:00:16 verbose #410 > > │ }                                                                            │
00:00:16 verbose #411 > > │ .dni-treeview {                                                              │
00:00:16 verbose #412 > > │     white-space: nowrap;                                                     │
00:00:16 verbose #413 > > │ }                                                                            │
00:00:16 verbose #414 > > │ .dni-treeview td {                                                           │
00:00:16 verbose #415 > > │     vertical-align: top;                                                     │
00:00:16 verbose #416 > > │     text-align: start;                                                       │
00:00:16 verbose #417 > > │ }                                                                            │
00:00:16 verbose #418 > > │ details.dni-treeview {                                                       │
00:00:16 verbose #419 > > │     padding-left: 1em;                                                       │
00:00:16 verbose #420 > > │ }                                                                            │
00:00:16 verbose #421 > > │ table td {                                                                   │
00:00:16 verbose #422 > > │     text-align: start;                                                       │
00:00:16 verbose #423 > > │ }                                                                            │
00:00:16 verbose #424 > > │ table tr {                                                                   │
00:00:16 verbose #425 > > │     vertical-align: top;                                                     │
00:00:16 verbose #426 > > │     margin: 0em 0px;                                                         │
00:00:16 verbose #427 > > │ }                                                                            │
00:00:16 verbose #428 > > │ table tr td pre                                                              │
00:00:16 verbose #429 > > │ {                                                                            │
00:00:16 verbose #430 > > │     vertical-align: top !important;                                          │
00:00:16 verbose #431 > > │     margin: 0em 0px !important;                                              │
00:00:16 verbose #432 > > │ }                                                                            │
00:00:16 verbose #433 > > │ table th {                                                                   │
00:00:16 verbose #434 > > │     text-align: start;                                                       │
00:00:16 verbose #435 > > │ }                                                                            │
00:00:16 verbose #436 > > │ </style>                                                                     │
00:00:16 verbose #437 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:16 verbose #438 > 00:00:16 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 23599 }
00:00:16 verbose #439 > 00:00:16   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:00:16 verbose #440 >     "nbconvert",
00:00:16 verbose #441 >     "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb",
00:00:16 verbose #442 >     "--to",
00:00:16 verbose #443 >     "html",
00:00:16 verbose #444 >     "--HTMLExporter.theme=dark",
00:00:16 verbose #445 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:17 verbose #446 > 00:00:17 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb to html
00:00:17 verbose #447 > 00:00:17 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:17 verbose #448 > 00:00:17 verbose #7 !   validate(nb)
00:00:18 verbose #449 > 00:00:17 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:18 verbose #450 > 00:00:17 verbose #9 !   return _pygments_highlight(
00:00:18 verbose #451 > 00:00:17 verbose #10 ! [NbConvertApp] Writing 310017 bytes to /home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html
00:00:18 verbose #452 > 00:00:17 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 922 }
00:00:18 verbose #453 > 00:00:17   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 922 }
00:00:18 verbose #454 > 00:00:17   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:00:18 verbose #455 >     "-c",
00:00:18 verbose #456 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:00:18 verbose #457 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:18 verbose #458 > 00:00:18 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:18 verbose #459 > 00:00:18   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:18 verbose #460 > 00:00:18   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 24580 }
00:00:18   debug #461 runtime.execute_with_options_async / { exit_code = 0; output_length = 28369 }
00:00:18   debug #1 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path DirTreeHtml.dib
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
#endif
type std_string_String = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("&$0")>]
#endif
type Ref<'T> = class end
module State = let mutable trace_state = None
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>]
#endif
type std_env_VarError = class end
type IOsEnviron = abstract environ: x: unit -> obj
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("str")>]
#endif
type Str = class end
type [<Struct>] US0 =
    | US0_0
    | US0_1
    | US0_2
    | US0_3
    | US0_4
and Mut0 = {mutable l0 : int64}
and Mut1 = {mutable l0 : (string -> unit)}
and Mut2 = {mutable l0 : bool}
and Mut3 = {mutable l0 : US0}
and [<Struct>] US1 =
    | US1_0 of f0_0 : string
    | US1_1
and [<Struct>] US2 =
    | US2_0 of f0_0 : US0
    | US2_1
and [<Struct>] US3 =
    | US3_0 of f0_0 : int64
    | US3_1
and Mut4 = {mutable l0 : string}
and [<Struct>] US4 =
    | US4_0 of f0_0 : bool
    | US4_1
and [<Struct>] US5 =
    | US5_0 of f0_0 : bool
    | US5_1 of f1_0 : exn
and [<Struct>] US6 =
    | US6_0 of f0_0 : bool
    | US6_1 of f1_0 : exn
and [<Struct>] US7 =
    | US7_0 of f0_0 : int32
    | US7_1
let rec method1 () : string =
    let v0 : string = "TRACE_LEVEL"
    v0
and method3 () : string =
    let v0 : string = ""
    v0
and closure1 (v0 : US1 option ref) (v1 : US1 option) : US1 option ref =
    v0.Value <- v1 
    v0
and closure2 (v0 : string option, v1 : (US1 option -> US1 option ref)) () : unit =
    match v0 with
    | Some x -> (
    (fun () ->
    (fun () ->
    let v2 : string = x
    let v3 : US1 = US1_0(v2)
    v3 
    )
    |> fun x -> x () |> Some
    ) () ) | None -> None
    |> v1 |> ignore
    ()
and method2 (v0 : string) : string =
    let v1 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v2 : string = "std::env::var(&*$0)"
    let v3 : Result<std_string_String, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr v0 v2 
    let v4 : string = "true; let _result_map_ = $0.map(|x| { //"
    let v5 : bool = Fable.Core.RustInterop.emitRustExpr v3 v4 
    let v6 : string = "x"
    let v7 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v6 
    let v8 : string = "fable_library_rust::String_::fromString($0)"
    let v9 : string = Fable.Core.RustInterop.emitRustExpr v7 v8 
    let v10 : string = "true; $0 })"
    let v11 : bool = Fable.Core.RustInterop.emitRustExpr v9 v10 
    let v12 : string = "_result_map_"
    let v13 : Result<string, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr () v12 
    let v14 : string = method3()
    let v15 : string = "$0.unwrap_or($1)"
    let v16 : string = Fable.Core.RustInterop.emitRustExpr struct (v13, v14) v15 
    let _v1 = v16 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v17 : string = "std::env::var(&*$0)"
    let v18 : Result<std_string_String, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr v0 v17 
    let v19 : string = "true; let _result_map_ = $0.map(|x| { //"
    let v20 : bool = Fable.Core.RustInterop.emitRustExpr v18 v19 
    let v21 : string = "x"
    let v22 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v21 
    let v23 : string = "fable_library_rust::String_::fromString($0)"
    let v24 : string = Fable.Core.RustInterop.emitRustExpr v22 v23 
    let v25 : string = "true; $0 })"
    let v26 : bool = Fable.Core.RustInterop.emitRustExpr v24 v25 
    let v27 : string = "_result_map_"
    let v28 : Result<string, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr () v27 
    let v29 : string = method3()
    let v30 : string = "$0.unwrap_or($1)"
    let v31 : string = Fable.Core.RustInterop.emitRustExpr struct (v28, v29) v30 
    let _v1 = v31 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v32 : string = "std::env::var(&*$0)"
    let v33 : Result<std_string_String, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr v0 v32 
    let v34 : string = "true; let _result_map_ = $0.map(|x| { //"
    let v35 : bool = Fable.Core.RustInterop.emitRustExpr v33 v34 
    let v36 : string = "x"
    let v37 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v36 
    let v38 : string = "fable_library_rust::String_::fromString($0)"
    let v39 : string = Fable.Core.RustInterop.emitRustExpr v37 v38 
    let v40 : string = "true; $0 })"
    let v41 : bool = Fable.Core.RustInterop.emitRustExpr v39 v40 
    let v42 : string = "_result_map_"
    let v43 : Result<string, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr () v42 
    let v44 : string = method3()
    let v45 : string = "$0.unwrap_or($1)"
    let v46 : string = Fable.Core.RustInterop.emitRustExpr struct (v43, v44) v45 
    let _v1 = v46 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v47 : string = "process.env[$0] ?? \"\""
    let v48 : string = Fable.Core.JsInterop.emitJsExpr v0 v47 
    let _v1 = v48 
    #endif
#if FABLE_COMPILER_PYTHON
    let v49 : string = "os"
    let v50 : IOsEnviron = Fable.Core.PyInterop.importAll v49 
    let v51 : string = "v50.environ"
    let v52 : obj = Fable.Core.PyInterop.emitPyExpr () v51 
    let v55 : string = "v52.get($0)"
    let v56 : string = Fable.Core.PyInterop.emitPyExpr v0 v55 
    let mutable _v56 = None
    #if !FABLE_COMPILER && !WASM && !CONTRACT
    let v59 : (string -> string option) = Option.ofObj
    let v60 : string option = v59 v56
    v60 
    #else
    Some v56 
    #endif
    |> fun x -> _v56 <- Some x
    let v61 : string option = match _v56 with Some x -> x | None -> failwith "optionm'.of_obj / _v56=None"
    let v64 : US1 option = None
    let _v64 = ref v64 
    let v65 : US1 option ref = _v64 
    let v66 : (US1 option -> US1 option ref) = closure1(v65)
    let v67 : unit = ()
    let v68 : (unit -> unit) = closure2(v61, v66)
    let v69 : unit = (fun () -> v68 (); v67) ()
    let v72 : US1 option = _v64.Value 
    let v83 : US1 = US1_1
    let v84 : US1 = v72 |> Option.defaultValue v83 
    let v91 : string =
        match v84 with
        | US1_1 -> (* None *)
            let v89 : string = ""
            v89
        | US1_0(v88) -> (* Some *)
            v88
    let _v1 = v91 
    #endif
#else
    let v92 : (string -> string) = System.Environment.GetEnvironmentVariable
    let v93 : string = v92 v0
    let mutable _v93 = None
    #if !FABLE_COMPILER && !WASM && !CONTRACT
    let v94 : (string -> string option) = Option.ofObj
    let v95 : string option = v94 v93
    v95 
    #else
    Some v93 
    #endif
    |> fun x -> _v93 <- Some x
    let v96 : string option = match _v93 with Some x -> x | None -> failwith "optionm'.of_obj / _v93=None"
    let v99 : US1 option = None
    let _v99 = ref v99 
    let v100 : US1 option ref = _v99 
    let v101 : (US1 option -> US1 option ref) = closure1(v100)
    let v102 : unit = ()
    let v103 : (unit -> unit) = closure2(v96, v101)
    let v104 : unit = (fun () -> v103 (); v102) ()
    let v107 : US1 option = _v99.Value 
    let v118 : US1 = US1_1
    let v119 : US1 = v107 |> Option.defaultValue v118 
    let v126 : string =
        match v119 with
        | US1_1 -> (* None *)
            let v124 : string = ""
            v124
        | US1_0(v123) -> (* Some *)
            v123
    let _v1 = v126 
    #endif
    let v127 : string = _v1 
    v127
and method4 () : string =
    let v0 : string = "AUTOMATION"
    v0
and closure3 () (v0 : string) : unit =
    ()
and method0 (v0 : US0) : struct (Mut0 * Mut1 * Mut2 * Mut3 * int64 option) =
    let v1 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v2 : string = method1()
    let v3 : string = method2(v2)
    
    
    
    
    
    let v4 : bool = "Verbose" = v3
    let v8 : US2 =
        if v4 then
            let v5 : US0 = US0_0
            US2_0(v5)
        else
            US2_1
    let v49 : US2 =
        match v8 with
        | US2_1 -> (* None *)
            let v11 : bool = "Debug" = v3
            let v15 : US2 =
                if v11 then
                    let v12 : US0 = US0_1
                    US2_0(v12)
                else
                    US2_1
            match v15 with
            | US2_1 -> (* None *)
                let v18 : bool = "Info" = v3
                let v22 : US2 =
                    if v18 then
                        let v19 : US0 = US0_2
                        US2_0(v19)
                    else
                        US2_1
                match v22 with
                | US2_1 -> (* None *)
                    let v25 : bool = "Warning" = v3
                    let v29 : US2 =
                        if v25 then
                            let v26 : US0 = US0_3
                            US2_0(v26)
                        else
                            US2_1
                    match v29 with
                    | US2_1 -> (* None *)
                        let v32 : bool = "Critical" = v3
                        let v36 : US2 =
                            if v32 then
                                let v33 : US0 = US0_4
                                US2_0(v33)
                            else
                                US2_1
                        match v36 with
                        | US2_1 -> (* None *)
                            US2_1
                        | US2_0(v37) -> (* Some *)
                            US2_0(v37)
                    | US2_0(v30) -> (* Some *)
                        US2_0(v30)
                | US2_0(v23) -> (* Some *)
                    US2_0(v23)
            | US2_0(v16) -> (* Some *)
                US2_0(v16)
        | US2_0(v9) -> (* Some *)
            US2_0(v9)
    let v50 : string = method4()
    let v51 : string = method2(v50)
    let v52 : bool = v51 = "True"
    let v62 : US3 =
        if v52 then
            let v53 : System.DateTime = System.DateTime.Now
            let v56 : (System.DateTime -> int64) = _.Ticks
            let v57 : int64 = v56 v53
            US3_0(v57)
        else
            US3_1
    let _v1 = struct (v49, v62) 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v63 : US2 = US2_1
    let v64 : US3 = US3_1
    let _v1 = struct (v63, v64) 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v65 : string = "AUTOMATION"
    let v66 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v67 : string = "env!(\"" + v65 + "\")"
    let v68 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v67 
    let v69 : string = "String::from($0)"
    let v70 : std_string_String = Fable.Core.RustInterop.emitRustExpr v68 v69 
    let v71 : string = "fable_library_rust::String_::fromString($0)"
    let v72 : string = Fable.Core.RustInterop.emitRustExpr v70 v71 
    let _v66 = v72 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v73 : string = "env!(\"" + v65 + "\")"
    let v74 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v73 
    let v75 : string = "String::from($0)"
    let v76 : std_string_String = Fable.Core.RustInterop.emitRustExpr v74 v75 
    let v77 : string = "fable_library_rust::String_::fromString($0)"
    let v78 : string = Fable.Core.RustInterop.emitRustExpr v76 v77 
    let _v66 = v78 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v79 : string = "env!(\"" + v65 + "\")"
    let v80 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v79 
    let v81 : string = "String::from($0)"
    let v82 : std_string_String = Fable.Core.RustInterop.emitRustExpr v80 v81 
    let v83 : string = "fable_library_rust::String_::fromString($0)"
    let v84 : string = Fable.Core.RustInterop.emitRustExpr v82 v83 
    let _v66 = v84 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v85 : string = null |> unbox<string>
    let _v66 = v85 
    #endif
#if FABLE_COMPILER_PYTHON
    let v88 : string = null |> unbox<string>
    let _v66 = v88 
    #endif
#else
    let v91 : string = null |> unbox<string>
    let _v66 = v91 
    #endif
    let v94 : string = _v66 
    let v99 : string = "True"
    let v100 : bool = v94 <> v99 
    let v109 : US3 =
        if v100 then
            US3_1
        else
            let v104 : string = $"near_sdk::env::block_timestamp()"
            let v105 : uint64 = Fable.Core.RustInterop.emitRustExpr () v104 
            let v106 : (uint64 -> int64) = int64
            let v107 : int64 = v106 v105
            US3_0(v107)
    let v110 : US2 = US2_1
    let _v1 = struct (v110, v109) 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v111 : string = method1()
    let v112 : string = method2(v111)
    
    
    
    
    
    let v113 : bool = "Verbose" = v112
    let v117 : US2 =
        if v113 then
            let v114 : US0 = US0_0
            US2_0(v114)
        else
            US2_1
    let v158 : US2 =
        match v117 with
        | US2_1 -> (* None *)
            let v120 : bool = "Debug" = v112
            let v124 : US2 =
                if v120 then
                    let v121 : US0 = US0_1
                    US2_0(v121)
                else
                    US2_1
            match v124 with
            | US2_1 -> (* None *)
                let v127 : bool = "Info" = v112
                let v131 : US2 =
                    if v127 then
                        let v128 : US0 = US0_2
                        US2_0(v128)
                    else
                        US2_1
                match v131 with
                | US2_1 -> (* None *)
                    let v134 : bool = "Warning" = v112
                    let v138 : US2 =
                        if v134 then
                            let v135 : US0 = US0_3
                            US2_0(v135)
                        else
                            US2_1
                    match v138 with
                    | US2_1 -> (* None *)
                        let v141 : bool = "Critical" = v112
                        let v145 : US2 =
                            if v141 then
                                let v142 : US0 = US0_4
                                US2_0(v142)
                            else
                                US2_1
                        match v145 with
                        | US2_1 -> (* None *)
                            US2_1
                        | US2_0(v146) -> (* Some *)
                            US2_0(v146)
                    | US2_0(v139) -> (* Some *)
                        US2_0(v139)
                | US2_0(v132) -> (* Some *)
                    US2_0(v132)
            | US2_0(v125) -> (* Some *)
                US2_0(v125)
        | US2_0(v118) -> (* Some *)
            US2_0(v118)
    let v159 : string = method4()
    let v160 : string = method2(v159)
    let v161 : bool = v160 = "True"
    let v171 : US3 =
        if v161 then
            let v162 : System.DateTime = System.DateTime.Now
            let v165 : (System.DateTime -> int64) = _.Ticks
            let v166 : int64 = v165 v162
            US3_0(v166)
        else
            US3_1
    let _v1 = struct (v158, v171) 
    #endif
#if FABLE_COMPILER_PYTHON
    let v172 : string = method1()
    let v173 : string = method2(v172)
    
    
    
    
    
    let v174 : bool = "Verbose" = v173
    let v178 : US2 =
        if v174 then
            let v175 : US0 = US0_0
            US2_0(v175)
        else
            US2_1
    let v219 : US2 =
        match v178 with
        | US2_1 -> (* None *)
            let v181 : bool = "Debug" = v173
            let v185 : US2 =
                if v181 then
                    let v182 : US0 = US0_1
                    US2_0(v182)
                else
                    US2_1
            match v185 with
            | US2_1 -> (* None *)
                let v188 : bool = "Info" = v173
                let v192 : US2 =
                    if v188 then
                        let v189 : US0 = US0_2
                        US2_0(v189)
                    else
                        US2_1
                match v192 with
                | US2_1 -> (* None *)
                    let v195 : bool = "Warning" = v173
                    let v199 : US2 =
                        if v195 then
                            let v196 : US0 = US0_3
                            US2_0(v196)
                        else
                            US2_1
                    match v199 with
                    | US2_1 -> (* None *)
                        let v202 : bool = "Critical" = v173
                        let v206 : US2 =
                            if v202 then
                                let v203 : US0 = US0_4
                                US2_0(v203)
                            else
                                US2_1
                        match v206 with
                        | US2_1 -> (* None *)
                            US2_1
                        | US2_0(v207) -> (* Some *)
                            US2_0(v207)
                    | US2_0(v200) -> (* Some *)
                        US2_0(v200)
                | US2_0(v193) -> (* Some *)
                    US2_0(v193)
            | US2_0(v186) -> (* Some *)
                US2_0(v186)
        | US2_0(v179) -> (* Some *)
            US2_0(v179)
    let v220 : string = method4()
    let v221 : string = method2(v220)
    let v222 : bool = v221 = "True"
    let v232 : US3 =
        if v222 then
            let v223 : System.DateTime = System.DateTime.Now
            let v226 : (System.DateTime -> int64) = _.Ticks
            let v227 : int64 = v226 v223
            US3_0(v227)
        else
            US3_1
    let _v1 = struct (v219, v232) 
    #endif
#else
    let v233 : string = method1()
    let v234 : string = method2(v233)
    
    
    
    
    
    let v235 : bool = "Verbose" = v234
    let v239 : US2 =
        if v235 then
            let v236 : US0 = US0_0
            US2_0(v236)
        else
            US2_1
    let v280 : US2 =
        match v239 with
        | US2_1 -> (* None *)
            let v242 : bool = "Debug" = v234
            let v246 : US2 =
                if v242 then
                    let v243 : US0 = US0_1
                    US2_0(v243)
                else
                    US2_1
            match v246 with
            | US2_1 -> (* None *)
                let v249 : bool = "Info" = v234
                let v253 : US2 =
                    if v249 then
                        let v250 : US0 = US0_2
                        US2_0(v250)
                    else
                        US2_1
                match v253 with
                | US2_1 -> (* None *)
                    let v256 : bool = "Warning" = v234
                    let v260 : US2 =
                        if v256 then
                            let v257 : US0 = US0_3
                            US2_0(v257)
                        else
                            US2_1
                    match v260 with
                    | US2_1 -> (* None *)
                        let v263 : bool = "Critical" = v234
                        let v267 : US2 =
                            if v263 then
                                let v264 : US0 = US0_4
                                US2_0(v264)
                            else
                                US2_1
                        match v267 with
                        | US2_1 -> (* None *)
                            US2_1
                        | US2_0(v268) -> (* Some *)
                            US2_0(v268)
                    | US2_0(v261) -> (* Some *)
                        US2_0(v261)
                | US2_0(v254) -> (* Some *)
                    US2_0(v254)
            | US2_0(v247) -> (* Some *)
                US2_0(v247)
        | US2_0(v240) -> (* Some *)
            US2_0(v240)
    let v281 : string = method4()
    let v282 : string = method2(v281)
    let v283 : bool = v282 = "True"
    let v293 : US3 =
        if v283 then
            let v284 : System.DateTime = System.DateTime.Now
            let v287 : (System.DateTime -> int64) = _.Ticks
            let v288 : int64 = v287 v284
            US3_0(v288)
        else
            US3_1
    let _v1 = struct (v280, v293) 
    #endif
    let struct (v294 : US2, v295 : US3) = _v1 
    let v359 : Mut2 = {l0 = true} : Mut2
    let v360 : Mut0 = {l0 = 0L} : Mut0
    let v363 : US0 =
        match v294 with
        | US2_1 -> (* None *)
            v0
        | US2_0(v361) -> (* Some *)
            v361
    let v364 : Mut3 = {l0 = v363} : Mut3
    let v365 : (string -> unit) = closure3()
    let v366 : Mut1 = {l0 = v365} : Mut1
    let v373 : int64 option =
        match v295 with
        | US3_1 -> (* None *)
            let v371 : int64 option = None
            v371
        | US3_0(v367) -> (* Some *)
            let v368 : int64 option = Some v367 
            v368
    struct (v360, v366, v359, v364, v373)
and closure0 () () : unit =
    let v0 : bool = State.trace_state.IsNone
    if v0 then
        let v1 : US0 = US0_0
        let struct (v2 : Mut0, v3 : Mut1, v4 : Mut2, v5 : Mut3, v6 : int64 option) = method0(v1)
        let v7 : struct (Mut0 * Mut1 * Mut2 * Mut3 * int64 option) option = Some struct (v2, v3, v4, v5, v6) 
        State.trace_state <- v7 
        ()
and closure7 (v0 : Mut0) () : unit =
    let v1 : int64 = v0.l0
    let v2 : int64 = v1 + 1L
    v0.l0 <- v2
    ()
and closure8 (v0 : US3 option ref) (v1 : US3 option) : US3 option ref =
    v0.Value <- v1 
    v0
and closure9 (v0 : int64 option, v1 : (US3 option -> US3 option ref)) () : unit =
    match v0 with
    | Some x -> (
    (fun () ->
    (fun () ->
    let v2 : int64 = x
    let v3 : US3 = US3_0(v2)
    v3 
    )
    |> fun x -> x () |> Some
    ) () ) | None -> None
    |> v1 |> ignore
    ()
and method5 () : string =
    let v0 : string = "hh:mm:ss"
    v0
and method6 () : string =
    let v0 : string = "HH:mm:ss"
    v0
and method7 () : string =
    let v0 : string = "\u001b[0m"
    v0
and method8 () : string =
    let v0 : string = ""
    v0
and closure10 (v0 : Mut4, v1 : string) () : unit =
    let v2 : string = v0.l0
    let v3 : string = v2 + v1 
    v0.l0 <- v3
    ()
and closure11 () () : string =
    let v0 : string = $"networking.test_port_open"
    v0
and closure13 (v0 : string) () : unit =
    let v1 : (string -> unit) = System.Console.WriteLine
    v1 v0
and closure12 () (v0 : string) : unit =
    let v1 : unit = ()
    let v2 : (unit -> unit) = closure13(v0)
    let v3 : unit = (fun () -> v2 (); v1) ()
    ()
and closure6 (v0 : int32, v1 : string) () : unit =
    let v2 : unit = ()
    let v3 : (unit -> unit) = closure0()
    let v4 : unit = (fun () -> v3 (); v2) ()
    let struct (v17 : Mut0, v18 : Mut1, v19 : Mut2, v20 : Mut3, v21 : int64 option) = State.trace_state.Value
    let v32 : unit = ()
    let v33 : unit = (fun () -> v3 (); v32) ()
    let struct (v46 : Mut0, v47 : Mut1, v48 : Mut2, v49 : Mut3, v50 : int64 option) = State.trace_state.Value
    let v61 : US0 = v49.l0
    let v62 : bool = v48.l0
    let v63 : bool = v62 = false
    let v66 : bool =
        if v63 then
            false
        else
            let v64 : int32 = [ US0_0, 0; US0_1, 1; US0_2, 2; US0_3, 3; US0_4, 4 ] |> Map |> Map.find v61
            let v65 : bool = 0 >= v64
            v65
    if v66 then
        let v67 : unit = ()
        let v68 : (unit -> unit) = closure7(v17)
        let v69 : unit = (fun () -> v68 (); v67) ()
        let v72 : unit = ()
        let v73 : unit = (fun () -> v3 (); v72) ()
        let struct (v86 : Mut0, v87 : Mut1, v88 : Mut2, v89 : Mut3, v90 : int64 option) = State.trace_state.Value
        let v101 : unit = ()
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v102 : US3 option = None
        let _v102 = ref v102 
        let v103 : US3 option ref = _v102 
        let v104 : (US3 option -> US3 option ref) = closure8(v103)
        let v105 : unit = ()
        let v106 : (unit -> unit) = closure9(v90, v104)
        let v107 : unit = (fun () -> v106 (); v105) ()
        let v110 : US3 option = _v102.Value 
        let v121 : US3 = US3_1
        let v122 : US3 = v110 |> Option.defaultValue v121 
        let v162 : System.DateTime =
            match v122 with
            | US3_1 -> (* None *)
                let v158 : System.DateTime = System.DateTime.Now
                v158
            | US3_0(v126) -> (* Some *)
                let v127 : System.DateTime = System.DateTime.Now
                let v130 : (System.DateTime -> int64) = _.Ticks
                let v131 : int64 = v130 v127
                let v134 : int64 = v131 - v126
                let v135 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v136 : System.TimeSpan = v135 v134
                let v139 : (System.TimeSpan -> int32) = _.Hours
                let v140 : int32 = v139 v136
                let v143 : (System.TimeSpan -> int32) = _.Minutes
                let v144 : int32 = v143 v136
                let v147 : (System.TimeSpan -> int32) = _.Seconds
                let v148 : int32 = v147 v136
                let v151 : (System.TimeSpan -> int32) = _.Milliseconds
                let v152 : int32 = v151 v136
                let v155 : System.DateTime = System.DateTime (1, 1, 1, v140, v144, v148, v152)
                v155
        let v163 : string = method5()
        let v166 : (string -> string) = v162.ToString
        let v167 : string = v166 v163
        let _v101 = v167 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v170 : US3 option = None
        let _v170 = ref v170 
        let v171 : US3 option ref = _v170 
        let v172 : (US3 option -> US3 option ref) = closure8(v171)
        let v173 : unit = ()
        let v174 : (unit -> unit) = closure9(v90, v172)
        let v175 : unit = (fun () -> v174 (); v173) ()
        let v178 : US3 option = _v170.Value 
        let v189 : US3 = US3_1
        let v190 : US3 = v178 |> Option.defaultValue v189 
        let v230 : System.DateTime =
            match v190 with
            | US3_1 -> (* None *)
                let v226 : System.DateTime = System.DateTime.Now
                v226
            | US3_0(v194) -> (* Some *)
                let v195 : System.DateTime = System.DateTime.Now
                let v198 : (System.DateTime -> int64) = _.Ticks
                let v199 : int64 = v198 v195
                let v202 : int64 = v199 - v194
                let v203 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v204 : System.TimeSpan = v203 v202
                let v207 : (System.TimeSpan -> int32) = _.Hours
                let v208 : int32 = v207 v204
                let v211 : (System.TimeSpan -> int32) = _.Minutes
                let v212 : int32 = v211 v204
                let v215 : (System.TimeSpan -> int32) = _.Seconds
                let v216 : int32 = v215 v204
                let v219 : (System.TimeSpan -> int32) = _.Milliseconds
                let v220 : int32 = v219 v204
                let v223 : System.DateTime = System.DateTime (1, 1, 1, v208, v212, v216, v220)
                v223
        let v231 : string = method5()
        let v234 : (string -> string) = v230.ToString
        let v235 : string = v234 v231
        let _v101 = v235 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v238 : string = $"near_sdk::env::block_timestamp()"
        let v239 : uint64 = Fable.Core.RustInterop.emitRustExpr () v238 
        let v240 : US3 option = None
        let _v240 = ref v240 
        let v241 : US3 option ref = _v240 
        let v242 : (US3 option -> US3 option ref) = closure8(v241)
        let v243 : unit = ()
        let v244 : (unit -> unit) = closure9(v90, v242)
        let v245 : unit = (fun () -> v244 (); v243) ()
        let v248 : US3 option = _v240.Value 
        let v259 : US3 = US3_1
        let v260 : US3 = v248 |> Option.defaultValue v259 
        let v269 : uint64 =
            match v260 with
            | US3_1 -> (* None *)
                v239
            | US3_0(v264) -> (* Some *)
                let v265 : (int64 -> uint64) = uint64
                let v266 : uint64 = v265 v264
                let v267 : uint64 = v239 - v266
                v267
        let v270 : uint64 = v269 / 1000000000UL
        let v271 : uint64 = v270 % 60UL
        let v272 : uint64 = v270 / 60UL
        let v273 : uint64 = v272 % 60UL
        let v274 : uint64 = v270 / 3600UL
        let v275 : uint64 = v274 % 24UL
        let v276 : string = $"format!(\"{{:02}}:{{:02}}:{{:02}}\", $0, $1, $2)"
        let v277 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v275, v273, v271) v276 
        let v278 : string = "fable_library_rust::String_::fromString($0)"
        let v279 : string = Fable.Core.RustInterop.emitRustExpr v277 v278 
        let _v101 = v279 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        let v280 : US3 option = None
        let _v280 = ref v280 
        let v281 : US3 option ref = _v280 
        let v282 : (US3 option -> US3 option ref) = closure8(v281)
        let v283 : unit = ()
        let v284 : (unit -> unit) = closure9(v90, v282)
        let v285 : unit = (fun () -> v284 (); v283) ()
        let v288 : US3 option = _v280.Value 
        let v299 : US3 = US3_1
        let v300 : US3 = v288 |> Option.defaultValue v299 
        let v340 : System.DateTime =
            match v300 with
            | US3_1 -> (* None *)
                let v336 : System.DateTime = System.DateTime.Now
                v336
            | US3_0(v304) -> (* Some *)
                let v305 : System.DateTime = System.DateTime.Now
                let v308 : (System.DateTime -> int64) = _.Ticks
                let v309 : int64 = v308 v305
                let v312 : int64 = v309 - v304
                let v313 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v314 : System.TimeSpan = v313 v312
                let v317 : (System.TimeSpan -> int32) = _.Hours
                let v318 : int32 = v317 v314
                let v321 : (System.TimeSpan -> int32) = _.Minutes
                let v322 : int32 = v321 v314
                let v325 : (System.TimeSpan -> int32) = _.Seconds
                let v326 : int32 = v325 v314
                let v329 : (System.TimeSpan -> int32) = _.Milliseconds
                let v330 : int32 = v329 v314
                let v333 : System.DateTime = System.DateTime (1, 1, 1, v318, v322, v326, v330)
                v333
        let v341 : string = method6()
        let v344 : (string -> string) = v340.ToString
        let v345 : string = v344 v341
        let _v101 = v345 
        #endif
#if FABLE_COMPILER_PYTHON
        let v348 : US3 option = None
        let _v348 = ref v348 
        let v349 : US3 option ref = _v348 
        let v350 : (US3 option -> US3 option ref) = closure8(v349)
        let v351 : unit = ()
        let v352 : (unit -> unit) = closure9(v90, v350)
        let v353 : unit = (fun () -> v352 (); v351) ()
        let v356 : US3 option = _v348.Value 
        let v367 : US3 = US3_1
        let v368 : US3 = v356 |> Option.defaultValue v367 
        let v408 : System.DateTime =
            match v368 with
            | US3_1 -> (* None *)
                let v404 : System.DateTime = System.DateTime.Now
                v404
            | US3_0(v372) -> (* Some *)
                let v373 : System.DateTime = System.DateTime.Now
                let v376 : (System.DateTime -> int64) = _.Ticks
                let v377 : int64 = v376 v373
                let v380 : int64 = v377 - v372
                let v381 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v382 : System.TimeSpan = v381 v380
                let v385 : (System.TimeSpan -> int32) = _.Hours
                let v386 : int32 = v385 v382
                let v389 : (System.TimeSpan -> int32) = _.Minutes
                let v390 : int32 = v389 v382
                let v393 : (System.TimeSpan -> int32) = _.Seconds
                let v394 : int32 = v393 v382
                let v397 : (System.TimeSpan -> int32) = _.Milliseconds
                let v398 : int32 = v397 v382
                let v401 : System.DateTime = System.DateTime (1, 1, 1, v386, v390, v394, v398)
                v401
        let v409 : string = method6()
        let v412 : (string -> string) = v408.ToString
        let v413 : string = v412 v409
        let _v101 = v413 
        #endif
#else
        let v416 : US3 option = None
        let _v416 = ref v416 
        let v417 : US3 option ref = _v416 
        let v418 : (US3 option -> US3 option ref) = closure8(v417)
        let v419 : unit = ()
        let v420 : (unit -> unit) = closure9(v90, v418)
        let v421 : unit = (fun () -> v420 (); v419) ()
        let v424 : US3 option = _v416.Value 
        let v435 : US3 = US3_1
        let v436 : US3 = v424 |> Option.defaultValue v435 
        let v476 : System.DateTime =
            match v436 with
            | US3_1 -> (* None *)
                let v472 : System.DateTime = System.DateTime.Now
                v472
            | US3_0(v440) -> (* Some *)
                let v441 : System.DateTime = System.DateTime.Now
                let v444 : (System.DateTime -> int64) = _.Ticks
                let v445 : int64 = v444 v441
                let v448 : int64 = v445 - v440
                let v449 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v450 : System.TimeSpan = v449 v448
                let v453 : (System.TimeSpan -> int32) = _.Hours
                let v454 : int32 = v453 v450
                let v457 : (System.TimeSpan -> int32) = _.Minutes
                let v458 : int32 = v457 v450
                let v461 : (System.TimeSpan -> int32) = _.Seconds
                let v462 : int32 = v461 v450
                let v465 : (System.TimeSpan -> int32) = _.Milliseconds
                let v466 : int32 = v465 v450
                let v469 : System.DateTime = System.DateTime (1, 1, 1, v454, v458, v462, v466)
                v469
        let v477 : string = method6()
        let v480 : (string -> string) = v476.ToString
        let v481 : string = v480 v477
        let _v101 = v481 
        #endif
        let v484 : string = _v101 
        
        
        
        
        
        let v554 : string = "Verbose"
        let v555 : (unit -> string) = v554.ToLower
        let v556 : string = v555 ()
        let v559 : string = v556.PadLeft (7, ' ')
        let v573 : unit = ()
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v574 : string = "inline_colorization::color_bright_black"
        let v575 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v574 
        let v576 : string = "&*$0"
        let v577 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v559 v576 
        let v578 : string = "inline_colorization::color_reset"
        let v579 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v578 
        let v580 : string = "\"{v575}{v577}{v579}\""
        let v581 : string = @$"format!(" + v580 + ")"
        let v582 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v581 
        let v583 : string = "fable_library_rust::String_::fromString($0)"
        let v584 : string = Fable.Core.RustInterop.emitRustExpr v582 v583 
        let _v573 = v584 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v585 : string = "inline_colorization::color_bright_black"
        let v586 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v585 
        let v587 : string = "&*$0"
        let v588 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v559 v587 
        let v589 : string = "inline_colorization::color_reset"
        let v590 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v589 
        let v591 : string = "\"{v586}{v588}{v590}\""
        let v592 : string = @$"format!(" + v591 + ")"
        let v593 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v592 
        let v594 : string = "fable_library_rust::String_::fromString($0)"
        let v595 : string = Fable.Core.RustInterop.emitRustExpr v593 v594 
        let _v573 = v595 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v596 : string = "inline_colorization::color_bright_black"
        let v597 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v596 
        let v598 : string = "&*$0"
        let v599 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v559 v598 
        let v600 : string = "inline_colorization::color_reset"
        let v601 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v600 
        let v602 : string = "\"{v597}{v599}{v601}\""
        let v603 : string = @$"format!(" + v602 + ")"
        let v604 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v603 
        let v605 : string = "fable_library_rust::String_::fromString($0)"
        let v606 : string = Fable.Core.RustInterop.emitRustExpr v604 v605 
        let _v573 = v606 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        let v607 : string = "\u001b[90m"
        let v608 : string = method7()
        let v609 : string = v607 + v559 
        let v610 : string = v609 + v608 
        let _v573 = v610 
        #endif
#if FABLE_COMPILER_PYTHON
        let v611 : string = "\u001b[90m"
        let v612 : string = method7()
        let v613 : string = v611 + v559 
        let v614 : string = v613 + v612 
        let _v573 = v614 
        #endif
#else
        let v615 : string = "\u001b[90m"
        let v616 : string = method7()
        let v617 : string = v615 + v559 
        let v618 : string = v617 + v616 
        let _v573 = v618 
        #endif
        let v619 : string = _v573 
        let v625 : int64 = v86.l0
        let v626 : string = method8()
        let v627 : Mut4 = {l0 = v626} : Mut4
        let v628 : string = "{ "
        let v629 : string = $"{v628}"
        let v632 : unit = ()
        let v633 : (unit -> unit) = closure10(v627, v629)
        let v634 : unit = (fun () -> v633 (); v632) ()
        let v637 : string = "port"
        let v638 : string = $"{v637}"
        let v641 : unit = ()
        let v642 : (unit -> unit) = closure10(v627, v638)
        let v643 : unit = (fun () -> v642 (); v641) ()
        let v646 : string = " = "
        let v647 : string = $"{v646}"
        let v650 : unit = ()
        let v651 : (unit -> unit) = closure10(v627, v647)
        let v652 : unit = (fun () -> v651 (); v650) ()
        let v655 : string = $"{v0}"
        let v658 : unit = ()
        let v659 : (unit -> unit) = closure10(v627, v655)
        let v660 : unit = (fun () -> v659 (); v658) ()
        let v663 : string = "; "
        let v664 : string = $"{v663}"
        let v667 : unit = ()
        let v668 : (unit -> unit) = closure10(v627, v664)
        let v669 : unit = (fun () -> v668 (); v667) ()
        let v672 : string = "ex"
        let v673 : string = $"{v672}"
        let v676 : unit = ()
        let v677 : (unit -> unit) = closure10(v627, v673)
        let v678 : unit = (fun () -> v677 (); v676) ()
        let v681 : string = $"{v646}"
        let v684 : unit = ()
        let v685 : (unit -> unit) = closure10(v627, v681)
        let v686 : unit = (fun () -> v685 (); v684) ()
        let v689 : string = $"{v1}"
        let v692 : unit = ()
        let v693 : (unit -> unit) = closure10(v627, v689)
        let v694 : unit = (fun () -> v693 (); v692) ()
        let v697 : string = " }"
        let v698 : string = $"{v697}"
        let v701 : unit = ()
        let v702 : (unit -> unit) = closure10(v627, v698)
        let v703 : unit = (fun () -> v702 (); v701) ()
        let v706 : string = v627.l0
        let v707 : (unit -> string) = closure11()
        let v708 : string = $"{v484} {v619} #{v625} %s{v707 ()} / {v706}"
        let v711 : char list = []
        let v712 : (char list -> (char [])) = List.toArray
        let v713 : (char []) = v712 v711
        let v716 : string = v708.TrimStart v713 
        let v734 : char list = []
        let v735 : char list = '/' :: v734 
        let v738 : char list = ' ' :: v735 
        let v741 : (char list -> (char [])) = List.toArray
        let v742 : (char []) = v741 v738
        let v745 : string = v716.TrimEnd v742 
        let v763 : (string -> unit) = closure12()
        let v764 : unit = ()
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v765 : string = @"println!(""{}"", $0)"
        Fable.Core.RustInterop.emitRustExpr v745 v765 
        let _v764 = () 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v766 : string = @"println!(""{}"", $0)"
        Fable.Core.RustInterop.emitRustExpr v745 v766 
        let _v764 = () 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v767 : string = $"near_sdk::log!(\"{{}}\", $0)"
        Fable.Core.RustInterop.emitRustExpr v745 v767 
        let _v764 = () 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        v763 v745
        let _v764 = () 
        #endif
#if FABLE_COMPILER_PYTHON
        v763 v745
        let _v764 = () 
        #endif
#else
        v763 v745
        let _v764 = () 
        #endif
        _v764 
        let v768 : (string -> unit) = v18.l0
        v768 v745
and closure5 (v0 : string) (v1 : int32) : Async<bool> =
    let v2 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v3 : Async<bool> = null |> unbox<Async<bool>>
    let _v2 = v3 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v6 : Async<bool> = null |> unbox<Async<bool>>
    let _v2 = v6 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v9 : Async<bool> = null |> unbox<Async<bool>>
    let _v2 = v9 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v12 : Async<bool> = null |> unbox<Async<bool>>
    let _v2 = v12 
    #endif
#if FABLE_COMPILER_PYTHON
    let v15 : Async<bool> = null |> unbox<Async<bool>>
    let _v2 = v15 
    #endif
#else
    let v18 : Async<bool> option = None
    let mutable _v18 = v18 
    async {
    let v19 : Async<System.Threading.CancellationToken> = Async.CancellationToken
    let! v19 = v19 
    let v20 : System.Threading.CancellationToken = v19 
    let v21 : System.Net.Sockets.TcpClient = new System.Net.Sockets.TcpClient ()
    use v21 = v21 
    let v22 : System.Net.Sockets.TcpClient = v21 
    try
    let v23 : System.Threading.Tasks.ValueTask = v22.ConnectAsync (v0, v1, v20)
    let v24 : (unit -> System.Threading.Tasks.Task) = v23.AsTask
    let v25 : System.Threading.Tasks.Task = v24 ()
    let v26 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v27 : Async<unit> = null |> unbox<Async<unit>>
    let _v26 = v27 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v30 : Async<unit> = null |> unbox<Async<unit>>
    let _v26 = v30 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v33 : Async<unit> = null |> unbox<Async<unit>>
    let _v26 = v33 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v36 : Async<unit> = null |> unbox<Async<unit>>
    let _v26 = v36 
    #endif
#if FABLE_COMPILER_PYTHON
    let v39 : Async<unit> = null |> unbox<Async<unit>>
    let _v26 = v39 
    #endif
#else
    let v42 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
    let v43 : Async<unit> = v42 v25
    let _v26 = v43 
    #endif
    let v44 : Async<unit> = _v26 
    do! v44 
    return true 
    with ex ->
    let v49 : exn = ex
    let v50 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v51 : string = $"%A{v49}"
    let _v50 = v51 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v54 : string = $"%A{v49}"
    let _v50 = v54 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v57 : string = $"%A{v49}"
    let _v50 = v57 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v60 : string = $"%A{v49}"
    let _v50 = v60 
    #endif
#if FABLE_COMPILER_PYTHON
    let v63 : string = $"%A{v49}"
    let _v50 = v63 
    #endif
#else
    let v66 : string = $"{v49.GetType ()}: {v49.Message}"
    let _v50 = v66 
    #endif
    let v67 : string = _v50 
    let v72 : unit = ()
    let v73 : (unit -> unit) = closure6(v1, v67)
    let v74 : unit = (fun () -> v73 (); v72) ()
    return false 
    (*
    let v842 : bool = *)
    }
    |> fun x -> _v18 <- Some x
    let v843 : Async<bool> = match _v18 with Some x -> x | None -> failwith "async.new_async_unit / _v18=None"
    let _v2 = v843 
    #endif
    let v844 : Async<bool> = _v2 
    v844
and closure4 () (v0 : string) : (int32 -> Async<bool>) =
    closure5(v0)
and closure17 () (v0 : bool) : US5 =
    US5_0(v0)
and closure18 () (v0 : exn) : US5 =
    US5_1(v0)
and closure20 () () : string =
    let v0 : string = "async.run_with_timeout_async"
    v0
and closure19 (v0 : int32) () : unit =
    let v1 : unit = ()
    let v2 : (unit -> unit) = closure0()
    let v3 : unit = (fun () -> v2 (); v1) ()
    let struct (v16 : Mut0, v17 : Mut1, v18 : Mut2, v19 : Mut3, v20 : int64 option) = State.trace_state.Value
    let v31 : unit = ()
    let v32 : unit = (fun () -> v2 (); v31) ()
    let struct (v45 : Mut0, v46 : Mut1, v47 : Mut2, v48 : Mut3, v49 : int64 option) = State.trace_state.Value
    let v60 : US0 = v48.l0
    let v61 : bool = v47.l0
    let v62 : bool = v61 = false
    let v65 : bool =
        if v62 then
            false
        else
            let v63 : int32 = [ US0_0, 0; US0_1, 1; US0_2, 2; US0_3, 3; US0_4, 4 ] |> Map |> Map.find v60
            let v64 : bool = 0 >= v63
            v64
    if v65 then
        let v66 : unit = ()
        let v67 : (unit -> unit) = closure7(v16)
        let v68 : unit = (fun () -> v67 (); v66) ()
        let v71 : unit = ()
        let v72 : unit = (fun () -> v2 (); v71) ()
        let struct (v85 : Mut0, v86 : Mut1, v87 : Mut2, v88 : Mut3, v89 : int64 option) = State.trace_state.Value
        let v100 : unit = ()
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v101 : US3 option = None
        let _v101 = ref v101 
        let v102 : US3 option ref = _v101 
        let v103 : (US3 option -> US3 option ref) = closure8(v102)
        let v104 : unit = ()
        let v105 : (unit -> unit) = closure9(v89, v103)
        let v106 : unit = (fun () -> v105 (); v104) ()
        let v109 : US3 option = _v101.Value 
        let v120 : US3 = US3_1
        let v121 : US3 = v109 |> Option.defaultValue v120 
        let v161 : System.DateTime =
            match v121 with
            | US3_1 -> (* None *)
                let v157 : System.DateTime = System.DateTime.Now
                v157
            | US3_0(v125) -> (* Some *)
                let v126 : System.DateTime = System.DateTime.Now
                let v129 : (System.DateTime -> int64) = _.Ticks
                let v130 : int64 = v129 v126
                let v133 : int64 = v130 - v125
                let v134 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v135 : System.TimeSpan = v134 v133
                let v138 : (System.TimeSpan -> int32) = _.Hours
                let v139 : int32 = v138 v135
                let v142 : (System.TimeSpan -> int32) = _.Minutes
                let v143 : int32 = v142 v135
                let v146 : (System.TimeSpan -> int32) = _.Seconds
                let v147 : int32 = v146 v135
                let v150 : (System.TimeSpan -> int32) = _.Milliseconds
                let v151 : int32 = v150 v135
                let v154 : System.DateTime = System.DateTime (1, 1, 1, v139, v143, v147, v151)
                v154
        let v162 : string = method5()
        let v165 : (string -> string) = v161.ToString
        let v166 : string = v165 v162
        let _v100 = v166 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v169 : US3 option = None
        let _v169 = ref v169 
        let v170 : US3 option ref = _v169 
        let v171 : (US3 option -> US3 option ref) = closure8(v170)
        let v172 : unit = ()
        let v173 : (unit -> unit) = closure9(v89, v171)
        let v174 : unit = (fun () -> v173 (); v172) ()
        let v177 : US3 option = _v169.Value 
        let v188 : US3 = US3_1
        let v189 : US3 = v177 |> Option.defaultValue v188 
        let v229 : System.DateTime =
            match v189 with
            | US3_1 -> (* None *)
                let v225 : System.DateTime = System.DateTime.Now
                v225
            | US3_0(v193) -> (* Some *)
                let v194 : System.DateTime = System.DateTime.Now
                let v197 : (System.DateTime -> int64) = _.Ticks
                let v198 : int64 = v197 v194
                let v201 : int64 = v198 - v193
                let v202 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v203 : System.TimeSpan = v202 v201
                let v206 : (System.TimeSpan -> int32) = _.Hours
                let v207 : int32 = v206 v203
                let v210 : (System.TimeSpan -> int32) = _.Minutes
                let v211 : int32 = v210 v203
                let v214 : (System.TimeSpan -> int32) = _.Seconds
                let v215 : int32 = v214 v203
                let v218 : (System.TimeSpan -> int32) = _.Milliseconds
                let v219 : int32 = v218 v203
                let v222 : System.DateTime = System.DateTime (1, 1, 1, v207, v211, v215, v219)
                v222
        let v230 : string = method5()
        let v233 : (string -> string) = v229.ToString
        let v234 : string = v233 v230
        let _v100 = v234 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v237 : string = $"near_sdk::env::block_timestamp()"
        let v238 : uint64 = Fable.Core.RustInterop.emitRustExpr () v237 
        let v239 : US3 option = None
        let _v239 = ref v239 
        let v240 : US3 option ref = _v239 
        let v241 : (US3 option -> US3 option ref) = closure8(v240)
        let v242 : unit = ()
        let v243 : (unit -> unit) = closure9(v89, v241)
        let v244 : unit = (fun () -> v243 (); v242) ()
        let v247 : US3 option = _v239.Value 
        let v258 : US3 = US3_1
        let v259 : US3 = v247 |> Option.defaultValue v258 
        let v268 : uint64 =
            match v259 with
            | US3_1 -> (* None *)
                v238
            | US3_0(v263) -> (* Some *)
                let v264 : (int64 -> uint64) = uint64
                let v265 : uint64 = v264 v263
                let v266 : uint64 = v238 - v265
                v266
        let v269 : uint64 = v268 / 1000000000UL
        let v270 : uint64 = v269 % 60UL
        let v271 : uint64 = v269 / 60UL
        let v272 : uint64 = v271 % 60UL
        let v273 : uint64 = v269 / 3600UL
        let v274 : uint64 = v273 % 24UL
        let v275 : string = $"format!(\"{{:02}}:{{:02}}:{{:02}}\", $0, $1, $2)"
        let v276 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v274, v272, v270) v275 
        let v277 : string = "fable_library_rust::String_::fromString($0)"
        let v278 : string = Fable.Core.RustInterop.emitRustExpr v276 v277 
        let _v100 = v278 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        let v279 : US3 option = None
        let _v279 = ref v279 
        let v280 : US3 option ref = _v279 
        let v281 : (US3 option -> US3 option ref) = closure8(v280)
        let v282 : unit = ()
        let v283 : (unit -> unit) = closure9(v89, v281)
        let v284 : unit = (fun () -> v283 (); v282) ()
        let v287 : US3 option = _v279.Value 
        let v298 : US3 = US3_1
        let v299 : US3 = v287 |> Option.defaultValue v298 
        let v339 : System.DateTime =
            match v299 with
            | US3_1 -> (* None *)
                let v335 : System.DateTime = System.DateTime.Now
                v335
            | US3_0(v303) -> (* Some *)
                let v304 : System.DateTime = System.DateTime.Now
                let v307 : (System.DateTime -> int64) = _.Ticks
                let v308 : int64 = v307 v304
                let v311 : int64 = v308 - v303
                let v312 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v313 : System.TimeSpan = v312 v311
                let v316 : (System.TimeSpan -> int32) = _.Hours
                let v317 : int32 = v316 v313
                let v320 : (System.TimeSpan -> int32) = _.Minutes
                let v321 : int32 = v320 v313
                let v324 : (System.TimeSpan -> int32) = _.Seconds
                let v325 : int32 = v324 v313
                let v328 : (System.TimeSpan -> int32) = _.Milliseconds
                let v329 : int32 = v328 v313
                let v332 : System.DateTime = System.DateTime (1, 1, 1, v317, v321, v325, v329)
                v332
        let v340 : string = method6()
        let v343 : (string -> string) = v339.ToString
        let v344 : string = v343 v340
        let _v100 = v344 
        #endif
#if FABLE_COMPILER_PYTHON
        let v347 : US3 option = None
        let _v347 = ref v347 
        let v348 : US3 option ref = _v347 
        let v349 : (US3 option -> US3 option ref) = closure8(v348)
        let v350 : unit = ()
        let v351 : (unit -> unit) = closure9(v89, v349)
        let v352 : unit = (fun () -> v351 (); v350) ()
        let v355 : US3 option = _v347.Value 
        let v366 : US3 = US3_1
        let v367 : US3 = v355 |> Option.defaultValue v366 
        let v407 : System.DateTime =
            match v367 with
            | US3_1 -> (* None *)
                let v403 : System.DateTime = System.DateTime.Now
                v403
            | US3_0(v371) -> (* Some *)
                let v372 : System.DateTime = System.DateTime.Now
                let v375 : (System.DateTime -> int64) = _.Ticks
                let v376 : int64 = v375 v372
                let v379 : int64 = v376 - v371
                let v380 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v381 : System.TimeSpan = v380 v379
                let v384 : (System.TimeSpan -> int32) = _.Hours
                let v385 : int32 = v384 v381
                let v388 : (System.TimeSpan -> int32) = _.Minutes
                let v389 : int32 = v388 v381
                let v392 : (System.TimeSpan -> int32) = _.Seconds
                let v393 : int32 = v392 v381
                let v396 : (System.TimeSpan -> int32) = _.Milliseconds
                let v397 : int32 = v396 v381
                let v400 : System.DateTime = System.DateTime (1, 1, 1, v385, v389, v393, v397)
                v400
        let v408 : string = method6()
        let v411 : (string -> string) = v407.ToString
        let v412 : string = v411 v408
        let _v100 = v412 
        #endif
#else
        let v415 : US3 option = None
        let _v415 = ref v415 
        let v416 : US3 option ref = _v415 
        let v417 : (US3 option -> US3 option ref) = closure8(v416)
        let v418 : unit = ()
        let v419 : (unit -> unit) = closure9(v89, v417)
        let v420 : unit = (fun () -> v419 (); v418) ()
        let v423 : US3 option = _v415.Value 
        let v434 : US3 = US3_1
        let v435 : US3 = v423 |> Option.defaultValue v434 
        let v475 : System.DateTime =
            match v435 with
            | US3_1 -> (* None *)
                let v471 : System.DateTime = System.DateTime.Now
                v471
            | US3_0(v439) -> (* Some *)
                let v440 : System.DateTime = System.DateTime.Now
                let v443 : (System.DateTime -> int64) = _.Ticks
                let v444 : int64 = v443 v440
                let v447 : int64 = v444 - v439
                let v448 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v449 : System.TimeSpan = v448 v447
                let v452 : (System.TimeSpan -> int32) = _.Hours
                let v453 : int32 = v452 v449
                let v456 : (System.TimeSpan -> int32) = _.Minutes
                let v457 : int32 = v456 v449
                let v460 : (System.TimeSpan -> int32) = _.Seconds
                let v461 : int32 = v460 v449
                let v464 : (System.TimeSpan -> int32) = _.Milliseconds
                let v465 : int32 = v464 v449
                let v468 : System.DateTime = System.DateTime (1, 1, 1, v453, v457, v461, v465)
                v468
        let v476 : string = method6()
        let v479 : (string -> string) = v475.ToString
        let v480 : string = v479 v476
        let _v100 = v480 
        #endif
        let v483 : string = _v100 
        
        
        
        
        
        let v553 : string = "Verbose"
        let v554 : (unit -> string) = v553.ToLower
        let v555 : string = v554 ()
        let v558 : string = v555.PadLeft (7, ' ')
        let v572 : unit = ()
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v573 : string = "inline_colorization::color_bright_black"
        let v574 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v573 
        let v575 : string = "&*$0"
        let v576 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v558 v575 
        let v577 : string = "inline_colorization::color_reset"
        let v578 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v577 
        let v579 : string = "\"{v574}{v576}{v578}\""
        let v580 : string = @$"format!(" + v579 + ")"
        let v581 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v580 
        let v582 : string = "fable_library_rust::String_::fromString($0)"
        let v583 : string = Fable.Core.RustInterop.emitRustExpr v581 v582 
        let _v572 = v583 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v584 : string = "inline_colorization::color_bright_black"
        let v585 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v584 
        let v586 : string = "&*$0"
        let v587 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v558 v586 
        let v588 : string = "inline_colorization::color_reset"
        let v589 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v588 
        let v590 : string = "\"{v585}{v587}{v589}\""
        let v591 : string = @$"format!(" + v590 + ")"
        let v592 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v591 
        let v593 : string = "fable_library_rust::String_::fromString($0)"
        let v594 : string = Fable.Core.RustInterop.emitRustExpr v592 v593 
        let _v572 = v594 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v595 : string = "inline_colorization::color_bright_black"
        let v596 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v595 
        let v597 : string = "&*$0"
        let v598 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v558 v597 
        let v599 : string = "inline_colorization::color_reset"
        let v600 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v599 
        let v601 : string = "\"{v596}{v598}{v600}\""
        let v602 : string = @$"format!(" + v601 + ")"
        let v603 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v602 
        let v604 : string = "fable_library_rust::String_::fromString($0)"
        let v605 : string = Fable.Core.RustInterop.emitRustExpr v603 v604 
        let _v572 = v605 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        let v606 : string = "\u001b[90m"
        let v607 : string = method7()
        let v608 : string = v606 + v558 
        let v609 : string = v608 + v607 
        let _v572 = v609 
        #endif
#if FABLE_COMPILER_PYTHON
        let v610 : string = "\u001b[90m"
        let v611 : string = method7()
        let v612 : string = v610 + v558 
        let v613 : string = v612 + v611 
        let _v572 = v613 
        #endif
#else
        let v614 : string = "\u001b[90m"
        let v615 : string = method7()
        let v616 : string = v614 + v558 
        let v617 : string = v616 + v615 
        let _v572 = v617 
        #endif
        let v618 : string = _v572 
        let v624 : int64 = v85.l0
        let v625 : string = method8()
        let v626 : Mut4 = {l0 = v625} : Mut4
        let v627 : string = "{ "
        let v628 : string = $"{v627}"
        let v631 : unit = ()
        let v632 : (unit -> unit) = closure10(v626, v628)
        let v633 : unit = (fun () -> v632 (); v631) ()
        let v636 : string = "timeout"
        let v637 : string = $"{v636}"
        let v640 : unit = ()
        let v641 : (unit -> unit) = closure10(v626, v637)
        let v642 : unit = (fun () -> v641 (); v640) ()
        let v645 : string = " = "
        let v646 : string = $"{v645}"
        let v649 : unit = ()
        let v650 : (unit -> unit) = closure10(v626, v646)
        let v651 : unit = (fun () -> v650 (); v649) ()
        let v654 : string = $"{v0}"
        let v657 : unit = ()
        let v658 : (unit -> unit) = closure10(v626, v654)
        let v659 : unit = (fun () -> v658 (); v657) ()
        let v662 : string = " }"
        let v663 : string = $"{v662}"
        let v666 : unit = ()
        let v667 : (unit -> unit) = closure10(v626, v663)
        let v668 : unit = (fun () -> v667 (); v666) ()
        let v671 : string = v626.l0
        let v672 : (unit -> string) = closure20()
        let v673 : string = $"{v483} {v618} #{v624} %s{v672 ()} / {v671}"
        let v676 : char list = []
        let v677 : (char list -> (char [])) = List.toArray
        let v678 : (char []) = v677 v676
        let v681 : string = v673.TrimStart v678 
        let v699 : char list = []
        let v700 : char list = '/' :: v699 
        let v703 : char list = ' ' :: v700 
        let v706 : (char list -> (char [])) = List.toArray
        let v707 : (char []) = v706 v703
        let v710 : string = v681.TrimEnd v707 
        let v728 : (string -> unit) = closure12()
        let v729 : unit = ()
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v730 : string = @"println!(""{}"", $0)"
        Fable.Core.RustInterop.emitRustExpr v710 v730 
        let _v729 = () 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v731 : string = @"println!(""{}"", $0)"
        Fable.Core.RustInterop.emitRustExpr v710 v731 
        let _v729 = () 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v732 : string = $"near_sdk::log!(\"{{}}\", $0)"
        Fable.Core.RustInterop.emitRustExpr v710 v732 
        let _v729 = () 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        v728 v710
        let _v729 = () 
        #endif
#if FABLE_COMPILER_PYTHON
        v728 v710
        let _v729 = () 
        #endif
#else
        v728 v710
        let _v729 = () 
        #endif
        _v729 
        let v733 : (string -> unit) = v17.l0
        v733 v710
and method9 () : string =
    let v0 : string = "("
    v0
and method10 () : string =
    let v0 : string = " "
    v0
and closure22 () () : string =
    let v0 : string = $"async.run_with_timeout_async**"
    v0
and closure21 (v0 : int32, v1 : exn) () : unit =
    let v2 : unit = ()
    let v3 : (unit -> unit) = closure0()
    let v4 : unit = (fun () -> v3 (); v2) ()
    let struct (v17 : Mut0, v18 : Mut1, v19 : Mut2, v20 : Mut3, v21 : int64 option) = State.trace_state.Value
    let v32 : unit = ()
    let v33 : unit = (fun () -> v3 (); v32) ()
    let struct (v46 : Mut0, v47 : Mut1, v48 : Mut2, v49 : Mut3, v50 : int64 option) = State.trace_state.Value
    let v61 : US0 = v49.l0
    let v62 : bool = v48.l0
    let v63 : bool = v62 = false
    let v66 : bool =
        if v63 then
            false
        else
            let v64 : int32 = [ US0_0, 0; US0_1, 1; US0_2, 2; US0_3, 3; US0_4, 4 ] |> Map |> Map.find v61
            let v65 : bool = 4 >= v64
            v65
    if v66 then
        let v67 : unit = ()
        let v68 : (unit -> unit) = closure7(v17)
        let v69 : unit = (fun () -> v68 (); v67) ()
        let v72 : unit = ()
        let v73 : unit = (fun () -> v3 (); v72) ()
        let struct (v86 : Mut0, v87 : Mut1, v88 : Mut2, v89 : Mut3, v90 : int64 option) = State.trace_state.Value
        let v101 : unit = ()
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v102 : US3 option = None
        let _v102 = ref v102 
        let v103 : US3 option ref = _v102 
        let v104 : (US3 option -> US3 option ref) = closure8(v103)
        let v105 : unit = ()
        let v106 : (unit -> unit) = closure9(v90, v104)
        let v107 : unit = (fun () -> v106 (); v105) ()
        let v110 : US3 option = _v102.Value 
        let v121 : US3 = US3_1
        let v122 : US3 = v110 |> Option.defaultValue v121 
        let v162 : System.DateTime =
            match v122 with
            | US3_1 -> (* None *)
                let v158 : System.DateTime = System.DateTime.Now
                v158
            | US3_0(v126) -> (* Some *)
                let v127 : System.DateTime = System.DateTime.Now
                let v130 : (System.DateTime -> int64) = _.Ticks
                let v131 : int64 = v130 v127
                let v134 : int64 = v131 - v126
                let v135 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v136 : System.TimeSpan = v135 v134
                let v139 : (System.TimeSpan -> int32) = _.Hours
                let v140 : int32 = v139 v136
                let v143 : (System.TimeSpan -> int32) = _.Minutes
                let v144 : int32 = v143 v136
                let v147 : (System.TimeSpan -> int32) = _.Seconds
                let v148 : int32 = v147 v136
                let v151 : (System.TimeSpan -> int32) = _.Milliseconds
                let v152 : int32 = v151 v136
                let v155 : System.DateTime = System.DateTime (1, 1, 1, v140, v144, v148, v152)
                v155
        let v163 : string = method5()
        let v166 : (string -> string) = v162.ToString
        let v167 : string = v166 v163
        let _v101 = v167 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v170 : US3 option = None
        let _v170 = ref v170 
        let v171 : US3 option ref = _v170 
        let v172 : (US3 option -> US3 option ref) = closure8(v171)
        let v173 : unit = ()
        let v174 : (unit -> unit) = closure9(v90, v172)
        let v175 : unit = (fun () -> v174 (); v173) ()
        let v178 : US3 option = _v170.Value 
        let v189 : US3 = US3_1
        let v190 : US3 = v178 |> Option.defaultValue v189 
        let v230 : System.DateTime =
            match v190 with
            | US3_1 -> (* None *)
                let v226 : System.DateTime = System.DateTime.Now
                v226
            | US3_0(v194) -> (* Some *)
                let v195 : System.DateTime = System.DateTime.Now
                let v198 : (System.DateTime -> int64) = _.Ticks
                let v199 : int64 = v198 v195
                let v202 : int64 = v199 - v194
                let v203 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v204 : System.TimeSpan = v203 v202
                let v207 : (System.TimeSpan -> int32) = _.Hours
                let v208 : int32 = v207 v204
                let v211 : (System.TimeSpan -> int32) = _.Minutes
                let v212 : int32 = v211 v204
                let v215 : (System.TimeSpan -> int32) = _.Seconds
                let v216 : int32 = v215 v204
                let v219 : (System.TimeSpan -> int32) = _.Milliseconds
                let v220 : int32 = v219 v204
                let v223 : System.DateTime = System.DateTime (1, 1, 1, v208, v212, v216, v220)
                v223
        let v231 : string = method5()
        let v234 : (string -> string) = v230.ToString
        let v235 : string = v234 v231
        let _v101 = v235 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v238 : string = $"near_sdk::env::block_timestamp()"
        let v239 : uint64 = Fable.Core.RustInterop.emitRustExpr () v238 
        let v240 : US3 option = None
        let _v240 = ref v240 
        let v241 : US3 option ref = _v240 
        let v242 : (US3 option -> US3 option ref) = closure8(v241)
        let v243 : unit = ()
        let v244 : (unit -> unit) = closure9(v90, v242)
        let v245 : unit = (fun () -> v244 (); v243) ()
        let v248 : US3 option = _v240.Value 
        let v259 : US3 = US3_1
        let v260 : US3 = v248 |> Option.defaultValue v259 
        let v269 : uint64 =
            match v260 with
            | US3_1 -> (* None *)
                v239
            | US3_0(v264) -> (* Some *)
                let v265 : (int64 -> uint64) = uint64
                let v266 : uint64 = v265 v264
                let v267 : uint64 = v239 - v266
                v267
        let v270 : uint64 = v269 / 1000000000UL
        let v271 : uint64 = v270 % 60UL
        let v272 : uint64 = v270 / 60UL
        let v273 : uint64 = v272 % 60UL
        let v274 : uint64 = v270 / 3600UL
        let v275 : uint64 = v274 % 24UL
        let v276 : string = $"format!(\"{{:02}}:{{:02}}:{{:02}}\", $0, $1, $2)"
        let v277 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v275, v273, v271) v276 
        let v278 : string = "fable_library_rust::String_::fromString($0)"
        let v279 : string = Fable.Core.RustInterop.emitRustExpr v277 v278 
        let _v101 = v279 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        let v280 : US3 option = None
        let _v280 = ref v280 
        let v281 : US3 option ref = _v280 
        let v282 : (US3 option -> US3 option ref) = closure8(v281)
        let v283 : unit = ()
        let v284 : (unit -> unit) = closure9(v90, v282)
        let v285 : unit = (fun () -> v284 (); v283) ()
        let v288 : US3 option = _v280.Value 
        let v299 : US3 = US3_1
        let v300 : US3 = v288 |> Option.defaultValue v299 
        let v340 : System.DateTime =
            match v300 with
            | US3_1 -> (* None *)
                let v336 : System.DateTime = System.DateTime.Now
                v336
            | US3_0(v304) -> (* Some *)
                let v305 : System.DateTime = System.DateTime.Now
                let v308 : (System.DateTime -> int64) = _.Ticks
                let v309 : int64 = v308 v305
                let v312 : int64 = v309 - v304
                let v313 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v314 : System.TimeSpan = v313 v312
                let v317 : (System.TimeSpan -> int32) = _.Hours
                let v318 : int32 = v317 v314
                let v321 : (System.TimeSpan -> int32) = _.Minutes
                let v322 : int32 = v321 v314
                let v325 : (System.TimeSpan -> int32) = _.Seconds
                let v326 : int32 = v325 v314
                let v329 : (System.TimeSpan -> int32) = _.Milliseconds
                let v330 : int32 = v329 v314
                let v333 : System.DateTime = System.DateTime (1, 1, 1, v318, v322, v326, v330)
                v333
        let v341 : string = method6()
        let v344 : (string -> string) = v340.ToString
        let v345 : string = v344 v341
        let _v101 = v345 
        #endif
#if FABLE_COMPILER_PYTHON
        let v348 : US3 option = None
        let _v348 = ref v348 
        let v349 : US3 option ref = _v348 
        let v350 : (US3 option -> US3 option ref) = closure8(v349)
        let v351 : unit = ()
        let v352 : (unit -> unit) = closure9(v90, v350)
        let v353 : unit = (fun () -> v352 (); v351) ()
        let v356 : US3 option = _v348.Value 
        let v367 : US3 = US3_1
        let v368 : US3 = v356 |> Option.defaultValue v367 
        let v408 : System.DateTime =
            match v368 with
            | US3_1 -> (* None *)
                let v404 : System.DateTime = System.DateTime.Now
                v404
            | US3_0(v372) -> (* Some *)
                let v373 : System.DateTime = System.DateTime.Now
                let v376 : (System.DateTime -> int64) = _.Ticks
                let v377 : int64 = v376 v373
                let v380 : int64 = v377 - v372
                let v381 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v382 : System.TimeSpan = v381 v380
                let v385 : (System.TimeSpan -> int32) = _.Hours
                let v386 : int32 = v385 v382
                let v389 : (System.TimeSpan -> int32) = _.Minutes
                let v390 : int32 = v389 v382
                let v393 : (System.TimeSpan -> int32) = _.Seconds
                let v394 : int32 = v393 v382
                let v397 : (System.TimeSpan -> int32) = _.Milliseconds
                let v398 : int32 = v397 v382
                let v401 : System.DateTime = System.DateTime (1, 1, 1, v386, v390, v394, v398)
                v401
        let v409 : string = method6()
        let v412 : (string -> string) = v408.ToString
        let v413 : string = v412 v409
        let _v101 = v413 
        #endif
#else
        let v416 : US3 option = None
        let _v416 = ref v416 
        let v417 : US3 option ref = _v416 
        let v418 : (US3 option -> US3 option ref) = closure8(v417)
        let v419 : unit = ()
        let v420 : (unit -> unit) = closure9(v90, v418)
        let v421 : unit = (fun () -> v420 (); v419) ()
        let v424 : US3 option = _v416.Value 
        let v435 : US3 = US3_1
        let v436 : US3 = v424 |> Option.defaultValue v435 
        let v476 : System.DateTime =
            match v436 with
            | US3_1 -> (* None *)
                let v472 : System.DateTime = System.DateTime.Now
                v472
            | US3_0(v440) -> (* Some *)
                let v441 : System.DateTime = System.DateTime.Now
                let v444 : (System.DateTime -> int64) = _.Ticks
                let v445 : int64 = v444 v441
                let v448 : int64 = v445 - v440
                let v449 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v450 : System.TimeSpan = v449 v448
                let v453 : (System.TimeSpan -> int32) = _.Hours
                let v454 : int32 = v453 v450
                let v457 : (System.TimeSpan -> int32) = _.Minutes
                let v458 : int32 = v457 v450
                let v461 : (System.TimeSpan -> int32) = _.Seconds
                let v462 : int32 = v461 v450
                let v465 : (System.TimeSpan -> int32) = _.Milliseconds
                let v466 : int32 = v465 v450
                let v469 : System.DateTime = System.DateTime (1, 1, 1, v454, v458, v462, v466)
                v469
        let v477 : string = method6()
        let v480 : (string -> string) = v476.ToString
        let v481 : string = v480 v477
        let _v101 = v481 
        #endif
        let v484 : string = _v101 
        
        
        
        
        
        let v554 : unit = ()
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v555 : string = method9()
        let _v554 = v555 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v556 : string = method9()
        let _v554 = v556 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v557 : string = method9()
        let _v554 = v557 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        let v558 : string = method10()
        let _v554 = v558 
        #endif
#if FABLE_COMPILER_PYTHON
        let v559 : string = method10()
        let _v554 = v559 
        #endif
#else
        let v560 : string = method10()
        let _v554 = v560 
        #endif
        let v561 : string = _v554 
        let v566 : string = method8()
        let v567 : Mut4 = {l0 = v566} : Mut4
        let v568 : US0 = US0_0
        let v569 : string = $"%A{v568}"
        let v573 : string = $"{v569}"
        let v576 : unit = ()
        let v577 : (unit -> unit) = closure10(v567, v573)
        let v578 : unit = (fun () -> v577 (); v576) ()
        let v581 : string = v567.l0
        let v582 : (string []) = v581.Split v561 
        let v585 : string = v582.[int 0]
        let v588 : string = method8()
        let v589 : Mut4 = {l0 = v588} : Mut4
        let v590 : US0 = US0_4
        let v591 : string = $"%A{v590}"
        let v595 : string = $"{v591}"
        let v598 : unit = ()
        let v599 : (unit -> unit) = closure10(v589, v595)
        let v600 : unit = (fun () -> v599 (); v598) ()
        let v603 : string = v589.l0
        let v604 : bool = v603.StartsWith v585 
        let v610 : US1 =
            if v604 then
                let v607 : string = "Verbose"
                US1_0(v607)
            else
                US1_1
        let v799 : US1 =
            match v610 with
            | US1_1 -> (* None *)
                let v613 : unit = ()
                
#if FABLE_COMPILER || WASM || CONTRACT
                
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                let v614 : string = method9()
                let _v613 = v614 
                #endif
#if FABLE_COMPILER_RUST && WASM
                let v615 : string = method9()
                let _v613 = v615 
                #endif
#if FABLE_COMPILER_RUST && CONTRACT
                let v616 : string = method9()
                let _v613 = v616 
                #endif
#if FABLE_COMPILER_TYPESCRIPT
                let v617 : string = method10()
                let _v613 = v617 
                #endif
#if FABLE_COMPILER_PYTHON
                let v618 : string = method10()
                let _v613 = v618 
                #endif
#else
                let v619 : string = method10()
                let _v613 = v619 
                #endif
                let v620 : string = _v613 
                let v625 : string = method8()
                let v626 : Mut4 = {l0 = v625} : Mut4
                let v627 : US0 = US0_1
                let v628 : string = $"%A{v627}"
                let v632 : string = $"{v628}"
                let v635 : unit = ()
                let v636 : (unit -> unit) = closure10(v626, v632)
                let v637 : unit = (fun () -> v636 (); v635) ()
                let v640 : string = v626.l0
                let v641 : (string []) = v640.Split v620 
                let v644 : string = v641.[int 0]
                let v647 : string = method8()
                let v648 : Mut4 = {l0 = v647} : Mut4
                let v649 : US0 = US0_4
                let v650 : string = $"%A{v649}"
                let v654 : string = $"{v650}"
                let v657 : unit = ()
                let v658 : (unit -> unit) = closure10(v648, v654)
                let v659 : unit = (fun () -> v658 (); v657) ()
                let v662 : string = v648.l0
                let v663 : bool = v662.StartsWith v644 
                let v669 : US1 =
                    if v663 then
                        let v666 : string = "Debug"
                        US1_0(v666)
                    else
                        US1_1
                match v669 with
                | US1_1 -> (* None *)
                    let v672 : unit = ()
                    
#if FABLE_COMPILER || WASM || CONTRACT
                    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                    let v673 : string = method9()
                    let _v672 = v673 
                    #endif
#if FABLE_COMPILER_RUST && WASM
                    let v674 : string = method9()
                    let _v672 = v674 
                    #endif
#if FABLE_COMPILER_RUST && CONTRACT
                    let v675 : string = method9()
                    let _v672 = v675 
                    #endif
#if FABLE_COMPILER_TYPESCRIPT
                    let v676 : string = method10()
                    let _v672 = v676 
                    #endif
#if FABLE_COMPILER_PYTHON
                    let v677 : string = method10()
                    let _v672 = v677 
                    #endif
#else
                    let v678 : string = method10()
                    let _v672 = v678 
                    #endif
                    let v679 : string = _v672 
                    let v684 : string = method8()
                    let v685 : Mut4 = {l0 = v684} : Mut4
                    let v686 : US0 = US0_2
                    let v687 : string = $"%A{v686}"
                    let v691 : string = $"{v687}"
                    let v694 : unit = ()
                    let v695 : (unit -> unit) = closure10(v685, v691)
                    let v696 : unit = (fun () -> v695 (); v694) ()
                    let v699 : string = v685.l0
                    let v700 : (string []) = v699.Split v679 
                    let v703 : string = v700.[int 0]
                    let v706 : string = method8()
                    let v707 : Mut4 = {l0 = v706} : Mut4
                    let v708 : US0 = US0_4
                    let v709 : string = $"%A{v708}"
                    let v713 : string = $"{v709}"
                    let v716 : unit = ()
                    let v717 : (unit -> unit) = closure10(v707, v713)
                    let v718 : unit = (fun () -> v717 (); v716) ()
                    let v721 : string = v707.l0
                    let v722 : bool = v721.StartsWith v703 
                    let v728 : US1 =
                        if v722 then
                            let v725 : string = "Info"
                            US1_0(v725)
                        else
                            US1_1
                    match v728 with
                    | US1_1 -> (* None *)
                        let v731 : unit = ()
                        
#if FABLE_COMPILER || WASM || CONTRACT
                        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
                        let v732 : string = method9()
                        let _v731 = v732 
                        #endif
#if FABLE_COMPILER_RUST && WASM
                        let v733 : string = method9()
                        let _v731 = v733 
                        #endif
#if FABLE_COMPILER_RUST && CONTRACT
                        let v734 : string = method9()
                        let _v731 = v734 
                        #endif
#if FABLE_COMPILER_TYPESCRIPT
                        let v735 : string = method10()
                        let _v731 = v735 
                        #endif
#if FABLE_COMPILER_PYTHON
                        let v736 : string = method10()
                        let _v731 = v736 
                        #endif
#else
                        let v737 : string = method10()
                        let _v731 = v737 
                        #endif
                        let v738 : string = _v731 
                        let v743 : string = method8()
                        let v744 : Mut4 = {l0 = v743} : Mut4
                        let v745 : US0 = US0_3
                        let v746 : string = $"%A{v745}"
                        let v750 : string = $"{v746}"
                        let v753 : unit = ()
                        let v754 : (unit -> unit) = closure10(v744, v750)
                        let v755 : unit = (fun () -> v754 (); v753) ()
                        let v758 : string = v744.l0
                        let v759 : (string []) = v758.Split v738 
                        let v762 : string = v759.[int 0]
                        let v765 : string = method8()
                        let v766 : Mut4 = {l0 = v765} : Mut4
                        let v767 : US0 = US0_4
                        let v768 : string = $"%A{v767}"
                        let v772 : string = $"{v768}"
                        let v775 : unit = ()
                        let v776 : (unit -> unit) = closure10(v766, v772)
                        let v777 : unit = (fun () -> v776 (); v775) ()
                        let v780 : string = v766.l0
                        let v781 : bool = v780.StartsWith v762 
                        let v787 : US1 =
                            if v781 then
                                let v784 : string = "Warning"
                                US1_0(v784)
                            else
                                US1_1
                        match v787 with
                        | US1_1 -> (* None *)
                            let v790 : string = "Critical"
                            US1_0(v790)
                        | US1_0(v788) -> (* Some *)
                            US1_0(v788)
                    | US1_0(v729) -> (* Some *)
                        US1_0(v729)
                | US1_0(v670) -> (* Some *)
                    US1_0(v670)
            | US1_0(v611) -> (* Some *)
                US1_0(v611)
        let v803 : string =
            match v799 with
            | US1_1 -> (* None *)
                failwith<string> "Option does not have a value."
            | US1_0(v800) -> (* Some *)
                v800
        let v804 : (unit -> string) = v803.ToLower
        let v805 : string = v804 ()
        let v808 : string = v805.PadLeft (7, ' ')
        let v822 : unit = ()
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v823 : string = "inline_colorization::color_bright_red"
        let v824 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v823 
        let v825 : string = "&*$0"
        let v826 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v808 v825 
        let v827 : string = "inline_colorization::color_reset"
        let v828 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v827 
        let v829 : string = "\"{v824}{v826}{v828}\""
        let v830 : string = @$"format!(" + v829 + ")"
        let v831 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v830 
        let v832 : string = "fable_library_rust::String_::fromString($0)"
        let v833 : string = Fable.Core.RustInterop.emitRustExpr v831 v832 
        let _v822 = v833 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v834 : string = "inline_colorization::color_bright_red"
        let v835 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v834 
        let v836 : string = "&*$0"
        let v837 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v808 v836 
        let v838 : string = "inline_colorization::color_reset"
        let v839 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v838 
        let v840 : string = "\"{v835}{v837}{v839}\""
        let v841 : string = @$"format!(" + v840 + ")"
        let v842 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v841 
        let v843 : string = "fable_library_rust::String_::fromString($0)"
        let v844 : string = Fable.Core.RustInterop.emitRustExpr v842 v843 
        let _v822 = v844 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v845 : string = "inline_colorization::color_bright_red"
        let v846 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v845 
        let v847 : string = "&*$0"
        let v848 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v808 v847 
        let v849 : string = "inline_colorization::color_reset"
        let v850 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v849 
        let v851 : string = "\"{v846}{v848}{v850}\""
        let v852 : string = @$"format!(" + v851 + ")"
        let v853 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v852 
        let v854 : string = "fable_library_rust::String_::fromString($0)"
        let v855 : string = Fable.Core.RustInterop.emitRustExpr v853 v854 
        let _v822 = v855 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        let v856 : string = "\u001b[91m"
        let v857 : string = method7()
        let v858 : string = v856 + v808 
        let v859 : string = v858 + v857 
        let _v822 = v859 
        #endif
#if FABLE_COMPILER_PYTHON
        let v860 : string = "\u001b[91m"
        let v861 : string = method7()
        let v862 : string = v860 + v808 
        let v863 : string = v862 + v861 
        let _v822 = v863 
        #endif
#else
        let v864 : string = "\u001b[91m"
        let v865 : string = method7()
        let v866 : string = v864 + v808 
        let v867 : string = v866 + v865 
        let _v822 = v867 
        #endif
        let v868 : string = _v822 
        let v874 : int64 = v86.l0
        let v875 : unit = ()
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v876 : string = $"%A{v1}"
        let _v875 = v876 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v879 : string = $"%A{v1}"
        let _v875 = v879 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v882 : string = $"%A{v1}"
        let _v875 = v882 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        let v885 : string = $"%A{v1}"
        let _v875 = v885 
        #endif
#if FABLE_COMPILER_PYTHON
        let v888 : string = $"%A{v1}"
        let _v875 = v888 
        #endif
#else
        let v891 : string = $"{v1.GetType ()}: {v1.Message}"
        let _v875 = v891 
        #endif
        let v892 : string = _v875 
        let v897 : string = method8()
        let v898 : Mut4 = {l0 = v897} : Mut4
        let v899 : string = "{ "
        let v900 : string = $"{v899}"
        let v903 : unit = ()
        let v904 : (unit -> unit) = closure10(v898, v900)
        let v905 : unit = (fun () -> v904 (); v903) ()
        let v908 : string = "timeout"
        let v909 : string = $"{v908}"
        let v912 : unit = ()
        let v913 : (unit -> unit) = closure10(v898, v909)
        let v914 : unit = (fun () -> v913 (); v912) ()
        let v917 : string = " = "
        let v918 : string = $"{v917}"
        let v921 : unit = ()
        let v922 : (unit -> unit) = closure10(v898, v918)
        let v923 : unit = (fun () -> v922 (); v921) ()
        let v926 : string = $"{v0}"
        let v929 : unit = ()
        let v930 : (unit -> unit) = closure10(v898, v926)
        let v931 : unit = (fun () -> v930 (); v929) ()
        let v934 : string = "; "
        let v935 : string = $"{v934}"
        let v938 : unit = ()
        let v939 : (unit -> unit) = closure10(v898, v935)
        let v940 : unit = (fun () -> v939 (); v938) ()
        let v943 : string = "ex"
        let v944 : string = $"{v943}"
        let v947 : unit = ()
        let v948 : (unit -> unit) = closure10(v898, v944)
        let v949 : unit = (fun () -> v948 (); v947) ()
        let v952 : string = $"{v917}"
        let v955 : unit = ()
        let v956 : (unit -> unit) = closure10(v898, v952)
        let v957 : unit = (fun () -> v956 (); v955) ()
        let v960 : string = $"{v892}"
        let v963 : unit = ()
        let v964 : (unit -> unit) = closure10(v898, v960)
        let v965 : unit = (fun () -> v964 (); v963) ()
        let v968 : string = " }"
        let v969 : string = $"{v968}"
        let v972 : unit = ()
        let v973 : (unit -> unit) = closure10(v898, v969)
        let v974 : unit = (fun () -> v973 (); v972) ()
        let v977 : string = v898.l0
        let v978 : (unit -> string) = closure22()
        let v979 : string = $"{v484} {v868} #{v874} %s{v978 ()} / {v977}"
        let v982 : char list = []
        let v983 : (char list -> (char [])) = List.toArray
        let v984 : (char []) = v983 v982
        let v987 : string = v979.TrimStart v984 
        let v1005 : char list = []
        let v1006 : char list = '/' :: v1005 
        let v1009 : char list = ' ' :: v1006 
        let v1012 : (char list -> (char [])) = List.toArray
        let v1013 : (char []) = v1012 v1009
        let v1016 : string = v987.TrimEnd v1013 
        let v1034 : (string -> unit) = closure12()
        let v1035 : unit = ()
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v1036 : string = @"println!(""{}"", $0)"
        Fable.Core.RustInterop.emitRustExpr v1016 v1036 
        let _v1035 = () 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v1037 : string = @"println!(""{}"", $0)"
        Fable.Core.RustInterop.emitRustExpr v1016 v1037 
        let _v1035 = () 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v1038 : string = $"near_sdk::log!(\"{{}}\", $0)"
        Fable.Core.RustInterop.emitRustExpr v1016 v1038 
        let _v1035 = () 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        v1034 v1016
        let _v1035 = () 
        #endif
#if FABLE_COMPILER_PYTHON
        v1034 v1016
        let _v1035 = () 
        #endif
#else
        v1034 v1016
        let _v1035 = () 
        #endif
        _v1035 
        let v1039 : (string -> unit) = v18.l0
        v1039 v1016
and closure16 (v0 : int32, v1 : string) (v2 : int32) : Async<bool> =
    let v3 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v4 : Async<bool> = null |> unbox<Async<bool>>
    let _v3 = v4 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v7 : Async<bool> = null |> unbox<Async<bool>>
    let _v3 = v7 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v10 : Async<bool> = null |> unbox<Async<bool>>
    let _v3 = v10 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v13 : Async<bool> = null |> unbox<Async<bool>>
    let _v3 = v13 
    #endif
#if FABLE_COMPILER_PYTHON
    let v16 : Async<bool> = null |> unbox<Async<bool>>
    let _v3 = v16 
    #endif
#else
    let v19 : Async<bool> option = None
    let mutable _v19 = v19 
    async {
    let v20 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v21 : Async<bool> = null |> unbox<Async<bool>>
    let _v20 = v21 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v24 : Async<bool> = null |> unbox<Async<bool>>
    let _v20 = v24 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v27 : Async<bool> = null |> unbox<Async<bool>>
    let _v20 = v27 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v30 : Async<bool> = null |> unbox<Async<bool>>
    let _v20 = v30 
    #endif
#if FABLE_COMPILER_PYTHON
    let v33 : Async<bool> = null |> unbox<Async<bool>>
    let _v20 = v33 
    #endif
#else
    let v36 : Async<bool> option = None
    let mutable _v36 = v36 
    async {
    let v37 : Async<System.Threading.CancellationToken> = Async.CancellationToken
    let! v37 = v37 
    let v38 : System.Threading.CancellationToken = v37 
    let v39 : System.Net.Sockets.TcpClient = new System.Net.Sockets.TcpClient ()
    use v39 = v39 
    let v40 : System.Net.Sockets.TcpClient = v39 
    try
    let v41 : System.Threading.Tasks.ValueTask = v40.ConnectAsync (v1, v2, v38)
    let v42 : (unit -> System.Threading.Tasks.Task) = v41.AsTask
    let v43 : System.Threading.Tasks.Task = v42 ()
    let v44 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v45 : Async<unit> = null |> unbox<Async<unit>>
    let _v44 = v45 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v48 : Async<unit> = null |> unbox<Async<unit>>
    let _v44 = v48 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v51 : Async<unit> = null |> unbox<Async<unit>>
    let _v44 = v51 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v54 : Async<unit> = null |> unbox<Async<unit>>
    let _v44 = v54 
    #endif
#if FABLE_COMPILER_PYTHON
    let v57 : Async<unit> = null |> unbox<Async<unit>>
    let _v44 = v57 
    #endif
#else
    let v60 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
    let v61 : Async<unit> = v60 v43
    let _v44 = v61 
    #endif
    let v62 : Async<unit> = _v44 
    do! v62 
    return true 
    with ex ->
    let v67 : exn = ex
    let v68 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v69 : string = $"%A{v67}"
    let _v68 = v69 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v72 : string = $"%A{v67}"
    let _v68 = v72 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v75 : string = $"%A{v67}"
    let _v68 = v75 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v78 : string = $"%A{v67}"
    let _v68 = v78 
    #endif
#if FABLE_COMPILER_PYTHON
    let v81 : string = $"%A{v67}"
    let _v68 = v81 
    #endif
#else
    let v84 : string = $"{v67.GetType ()}: {v67.Message}"
    let _v68 = v84 
    #endif
    let v85 : string = _v68 
    let v90 : unit = ()
    let v91 : (unit -> unit) = closure6(v2, v85)
    let v92 : unit = (fun () -> v91 (); v90) ()
    return false 
    (*
    let v860 : bool = *)
    }
    |> fun x -> _v36 <- Some x
    let v861 : Async<bool> = match _v36 with Some x -> x | None -> failwith "async.new_async_unit / _v36=None"
    let _v20 = v861 
    #endif
    let v862 : Async<bool> = _v20 
    let v867 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v868 : Async<US4> = null |> unbox<Async<US4>>
    let _v867 = v868 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v871 : Async<US4> = null |> unbox<Async<US4>>
    let _v867 = v871 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v874 : Async<US4> = null |> unbox<Async<US4>>
    let _v867 = v874 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v877 : Async<US4> = null |> unbox<Async<US4>>
    let _v867 = v877 
    #endif
#if FABLE_COMPILER_PYTHON
    let v880 : Async<US4> = null |> unbox<Async<US4>>
    let _v867 = v880 
    #endif
#else
    let v883 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v884 : Async<US4> = null |> unbox<Async<US4>>
    let _v883 = v884 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v887 : Async<US4> = null |> unbox<Async<US4>>
    let _v883 = v887 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v890 : Async<US4> = null |> unbox<Async<US4>>
    let _v883 = v890 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v893 : Async<US4> = null |> unbox<Async<US4>>
    let _v883 = v893 
    #endif
#if FABLE_COMPILER_PYTHON
    let v896 : Async<US4> = null |> unbox<Async<US4>>
    let _v883 = v896 
    #endif
#else
    let v899 : Async<US4> option = None
    let mutable _v899 = v899 
    async {
    let v900 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v901 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
    let _v900 = v901 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v904 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
    let _v900 = v904 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v907 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
    let _v900 = v907 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v910 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
    let _v900 = v910 
    #endif
#if FABLE_COMPILER_PYTHON
    let v913 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
    let _v900 = v913 
    #endif
#else
    let v916 : Async<Async<bool>> = Async.StartChild (v862, v0)
    let _v900 = v916 
    #endif
    let v917 : Async<Async<bool>> = _v900 
    let! v917 = v917 
    let v922 : Async<bool> = v917 
    let v923 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v924 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
    let _v923 = v924 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v927 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
    let _v923 = v927 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v930 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
    let _v923 = v930 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v933 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
    let _v923 = v933 
    #endif
#if FABLE_COMPILER_PYTHON
    let v936 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
    let _v923 = v936 
    #endif
#else
    let v939 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
    let v940 : Async<Choice<bool, exn>> = v939 v922
    let _v923 = v940 
    #endif
    let v941 : Async<Choice<bool, exn>> = _v923 
    let v946 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v947 : Async<US5> = null |> unbox<Async<US5>>
    let _v946 = v947 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v950 : Async<US5> = null |> unbox<Async<US5>>
    let _v946 = v950 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v953 : Async<US5> = null |> unbox<Async<US5>>
    let _v946 = v953 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v956 : Async<US5> = null |> unbox<Async<US5>>
    let _v946 = v956 
    #endif
#if FABLE_COMPILER_PYTHON
    let v959 : Async<US5> = null |> unbox<Async<US5>>
    let _v946 = v959 
    #endif
#else
    let v962 : Async<US5> option = None
    let mutable _v962 = v962 
    async {
    let! v941 = v941 
    let v963 : Choice<bool, exn> = v941 
    let v964 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v965 : US5 = null |> unbox<US5>
    let _v964 = v965 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v968 : US5 = null |> unbox<US5>
    let _v964 = v968 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v971 : US5 = null |> unbox<US5>
    let _v964 = v971 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v974 : US5 = null |> unbox<US5>
    let _v964 = v974 
    #endif
#if FABLE_COMPILER_PYTHON
    let v977 : US5 = null |> unbox<US5>
    let _v964 = v977 
    #endif
#else
    let v980 : (bool -> US5) = closure17()
    let v981 : (exn -> US5) = closure18()
    let v982 : US5 = match v963 with Choice1Of2 x -> v980 x | Choice2Of2 x -> v981 x
    let _v964 = v982 
    #endif
    let v983 : US5 = _v964 
    return v983 
    }
    |> fun x -> _v962 <- Some x
    let v988 : Async<US5> = match _v962 with Some x -> x | None -> failwith "async.new_async_unit / _v962=None"
    let _v946 = v988 
    #endif
    let v989 : Async<US5> = _v946 
    let v994 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v995 : Async<US6> = null |> unbox<Async<US6>>
    let _v994 = v995 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v998 : Async<US6> = null |> unbox<Async<US6>>
    let _v994 = v998 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v1001 : Async<US6> = null |> unbox<Async<US6>>
    let _v994 = v1001 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v1004 : Async<US6> = null |> unbox<Async<US6>>
    let _v994 = v1004 
    #endif
#if FABLE_COMPILER_PYTHON
    let v1007 : Async<US6> = null |> unbox<Async<US6>>
    let _v994 = v1007 
    #endif
#else
    let v1010 : Async<US6> option = None
    let mutable _v1010 = v1010 
    async {
    let! v989 = v989 
    let v1011 : US5 = v989 
    let v1017 : US6 =
        match v1011 with
        | US5_0(v1012) -> (* C1of2 *)
            US6_0(v1012)
        | US5_1(v1014) -> (* C2of2 *)
            US6_1(v1014)
    return v1017 
    }
    |> fun x -> _v1010 <- Some x
    let v1018 : Async<US6> = match _v1010 with Some x -> x | None -> failwith "async.new_async_unit / _v1010=None"
    let _v994 = v1018 
    #endif
    let v1019 : Async<US6> = _v994 
    let v1024 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v1025 : Async<US4> = null |> unbox<Async<US4>>
    let _v1024 = v1025 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v1028 : Async<US4> = null |> unbox<Async<US4>>
    let _v1024 = v1028 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v1031 : Async<US4> = null |> unbox<Async<US4>>
    let _v1024 = v1031 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v1034 : Async<US4> = null |> unbox<Async<US4>>
    let _v1024 = v1034 
    #endif
#if FABLE_COMPILER_PYTHON
    let v1037 : Async<US4> = null |> unbox<Async<US4>>
    let _v1024 = v1037 
    #endif
#else
    let v1040 : Async<US4> option = None
    let mutable _v1040 = v1040 
    async {
    let! v1019 = v1019 
    let v1041 : US6 = v1019 
    let v2833 : US4 =
        match v1041 with
        | US6_1(v1044) -> (* Error *)
            let v1045 : string = $"%A{v1044}"
            let v1048 : string = "System.TimeoutException"
            let v1049 : bool = v1045.Contains v1048 
            if v1049 then
                let v1052 : unit = ()
                let v1053 : (unit -> unit) = closure19(v0)
                let v1054 : unit = (fun () -> v1053 (); v1052) ()
                US4_1
            else
                let v1789 : unit = ()
                let v1790 : (unit -> unit) = closure21(v0, v1044)
                let v1791 : unit = (fun () -> v1790 (); v1789) ()
                US4_1
        | US6_0(v1042) -> (* Ok *)
            US4_0(v1042)
    return v2833 
    }
    |> fun x -> _v1040 <- Some x
    let v2834 : Async<US4> = match _v1040 with Some x -> x | None -> failwith "async.new_async_unit / _v1040=None"
    let _v1024 = v2834 
    #endif
    let v2835 : Async<US4> = _v1024 
    return! v2835 
    }
    |> fun x -> _v899 <- Some x
    let v2840 : Async<US4> = match _v899 with Some x -> x | None -> failwith "async.new_async_unit / _v899=None"
    let _v883 = v2840 
    #endif
    let v2841 : Async<US4> = _v883 
    let _v867 = v2841 
    #endif
    let v2846 : Async<US4> = _v867 
    let! v2846 = v2846 
    let v2851 : US4 = v2846 
    let v2854 : bool =
        match v2851 with
        | US4_1 -> (* None *)
            false
        | US4_0(v2852) -> (* Some *)
            v2852
    return v2854 
    }
    |> fun x -> _v19 <- Some x
    let v2855 : Async<bool> = match _v19 with Some x -> x | None -> failwith "async.new_async_unit / _v19=None"
    let _v3 = v2855 
    #endif
    let v2856 : Async<bool> = _v3 
    v2856
and closure15 (v0 : int32) (v1 : string) : (int32 -> Async<bool>) =
    closure16(v0, v1)
and closure14 () (v0 : int32) : (string -> (int32 -> Async<bool>)) =
    closure15(v0)
and closure27 (v0 : US7 option ref) (v1 : US7 option) : US7 option ref =
    v0.Value <- v1 
    v0
and closure28 (v0 : int32 option, v1 : (US7 option -> US7 option ref)) () : unit =
    match v0 with
    | Some x -> (
    (fun () ->
    (fun () ->
    let v2 : int32 = x
    let v3 : US7 = US7_0(v2)
    v3 
    )
    |> fun x -> x () |> Some
    ) () ) | None -> None
    |> v1 |> ignore
    ()
and closure30 () () : string =
    let v0 : string = "networking.wait_for_port_access"
    v0
and closure29 (v0 : int32 option, v1 : bool, v2 : int32, v3 : int64) () : unit =
    let v4 : unit = ()
    let v5 : (unit -> unit) = closure0()
    let v6 : unit = (fun () -> v5 (); v4) ()
    let struct (v19 : Mut0, v20 : Mut1, v21 : Mut2, v22 : Mut3, v23 : int64 option) = State.trace_state.Value
    let v34 : unit = ()
    let v35 : unit = (fun () -> v5 (); v34) ()
    let struct (v48 : Mut0, v49 : Mut1, v50 : Mut2, v51 : Mut3, v52 : int64 option) = State.trace_state.Value
    let v63 : US0 = v51.l0
    let v64 : bool = v50.l0
    let v65 : bool = v64 = false
    let v68 : bool =
        if v65 then
            false
        else
            let v66 : int32 = [ US0_0, 0; US0_1, 1; US0_2, 2; US0_3, 3; US0_4, 4 ] |> Map |> Map.find v63
            let v67 : bool = 0 >= v66
            v67
    if v68 then
        let v69 : unit = ()
        let v70 : (unit -> unit) = closure7(v19)
        let v71 : unit = (fun () -> v70 (); v69) ()
        let v74 : unit = ()
        let v75 : unit = (fun () -> v5 (); v74) ()
        let struct (v88 : Mut0, v89 : Mut1, v90 : Mut2, v91 : Mut3, v92 : int64 option) = State.trace_state.Value
        let v103 : unit = ()
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v104 : US3 option = None
        let _v104 = ref v104 
        let v105 : US3 option ref = _v104 
        let v106 : (US3 option -> US3 option ref) = closure8(v105)
        let v107 : unit = ()
        let v108 : (unit -> unit) = closure9(v92, v106)
        let v109 : unit = (fun () -> v108 (); v107) ()
        let v112 : US3 option = _v104.Value 
        let v123 : US3 = US3_1
        let v124 : US3 = v112 |> Option.defaultValue v123 
        let v164 : System.DateTime =
            match v124 with
            | US3_1 -> (* None *)
                let v160 : System.DateTime = System.DateTime.Now
                v160
            | US3_0(v128) -> (* Some *)
                let v129 : System.DateTime = System.DateTime.Now
                let v132 : (System.DateTime -> int64) = _.Ticks
                let v133 : int64 = v132 v129
                let v136 : int64 = v133 - v128
                let v137 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v138 : System.TimeSpan = v137 v136
                let v141 : (System.TimeSpan -> int32) = _.Hours
                let v142 : int32 = v141 v138
                let v145 : (System.TimeSpan -> int32) = _.Minutes
                let v146 : int32 = v145 v138
                let v149 : (System.TimeSpan -> int32) = _.Seconds
                let v150 : int32 = v149 v138
                let v153 : (System.TimeSpan -> int32) = _.Milliseconds
                let v154 : int32 = v153 v138
                let v157 : System.DateTime = System.DateTime (1, 1, 1, v142, v146, v150, v154)
                v157
        let v165 : string = method5()
        let v168 : (string -> string) = v164.ToString
        let v169 : string = v168 v165
        let _v103 = v169 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v172 : US3 option = None
        let _v172 = ref v172 
        let v173 : US3 option ref = _v172 
        let v174 : (US3 option -> US3 option ref) = closure8(v173)
        let v175 : unit = ()
        let v176 : (unit -> unit) = closure9(v92, v174)
        let v177 : unit = (fun () -> v176 (); v175) ()
        let v180 : US3 option = _v172.Value 
        let v191 : US3 = US3_1
        let v192 : US3 = v180 |> Option.defaultValue v191 
        let v232 : System.DateTime =
            match v192 with
            | US3_1 -> (* None *)
                let v228 : System.DateTime = System.DateTime.Now
                v228
            | US3_0(v196) -> (* Some *)
                let v197 : System.DateTime = System.DateTime.Now
                let v200 : (System.DateTime -> int64) = _.Ticks
                let v201 : int64 = v200 v197
                let v204 : int64 = v201 - v196
                let v205 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v206 : System.TimeSpan = v205 v204
                let v209 : (System.TimeSpan -> int32) = _.Hours
                let v210 : int32 = v209 v206
                let v213 : (System.TimeSpan -> int32) = _.Minutes
                let v214 : int32 = v213 v206
                let v217 : (System.TimeSpan -> int32) = _.Seconds
                let v218 : int32 = v217 v206
                let v221 : (System.TimeSpan -> int32) = _.Milliseconds
                let v222 : int32 = v221 v206
                let v225 : System.DateTime = System.DateTime (1, 1, 1, v210, v214, v218, v222)
                v225
        let v233 : string = method5()
        let v236 : (string -> string) = v232.ToString
        let v237 : string = v236 v233
        let _v103 = v237 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v240 : string = $"near_sdk::env::block_timestamp()"
        let v241 : uint64 = Fable.Core.RustInterop.emitRustExpr () v240 
        let v242 : US3 option = None
        let _v242 = ref v242 
        let v243 : US3 option ref = _v242 
        let v244 : (US3 option -> US3 option ref) = closure8(v243)
        let v245 : unit = ()
        let v246 : (unit -> unit) = closure9(v92, v244)
        let v247 : unit = (fun () -> v246 (); v245) ()
        let v250 : US3 option = _v242.Value 
        let v261 : US3 = US3_1
        let v262 : US3 = v250 |> Option.defaultValue v261 
        let v271 : uint64 =
            match v262 with
            | US3_1 -> (* None *)
                v241
            | US3_0(v266) -> (* Some *)
                let v267 : (int64 -> uint64) = uint64
                let v268 : uint64 = v267 v266
                let v269 : uint64 = v241 - v268
                v269
        let v272 : uint64 = v271 / 1000000000UL
        let v273 : uint64 = v272 % 60UL
        let v274 : uint64 = v272 / 60UL
        let v275 : uint64 = v274 % 60UL
        let v276 : uint64 = v272 / 3600UL
        let v277 : uint64 = v276 % 24UL
        let v278 : string = $"format!(\"{{:02}}:{{:02}}:{{:02}}\", $0, $1, $2)"
        let v279 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v277, v275, v273) v278 
        let v280 : string = "fable_library_rust::String_::fromString($0)"
        let v281 : string = Fable.Core.RustInterop.emitRustExpr v279 v280 
        let _v103 = v281 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        let v282 : US3 option = None
        let _v282 = ref v282 
        let v283 : US3 option ref = _v282 
        let v284 : (US3 option -> US3 option ref) = closure8(v283)
        let v285 : unit = ()
        let v286 : (unit -> unit) = closure9(v92, v284)
        let v287 : unit = (fun () -> v286 (); v285) ()
        let v290 : US3 option = _v282.Value 
        let v301 : US3 = US3_1
        let v302 : US3 = v290 |> Option.defaultValue v301 
        let v342 : System.DateTime =
            match v302 with
            | US3_1 -> (* None *)
                let v338 : System.DateTime = System.DateTime.Now
                v338
            | US3_0(v306) -> (* Some *)
                let v307 : System.DateTime = System.DateTime.Now
                let v310 : (System.DateTime -> int64) = _.Ticks
                let v311 : int64 = v310 v307
                let v314 : int64 = v311 - v306
                let v315 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v316 : System.TimeSpan = v315 v314
                let v319 : (System.TimeSpan -> int32) = _.Hours
                let v320 : int32 = v319 v316
                let v323 : (System.TimeSpan -> int32) = _.Minutes
                let v324 : int32 = v323 v316
                let v327 : (System.TimeSpan -> int32) = _.Seconds
                let v328 : int32 = v327 v316
                let v331 : (System.TimeSpan -> int32) = _.Milliseconds
                let v332 : int32 = v331 v316
                let v335 : System.DateTime = System.DateTime (1, 1, 1, v320, v324, v328, v332)
                v335
        let v343 : string = method6()
        let v346 : (string -> string) = v342.ToString
        let v347 : string = v346 v343
        let _v103 = v347 
        #endif
#if FABLE_COMPILER_PYTHON
        let v350 : US3 option = None
        let _v350 = ref v350 
        let v351 : US3 option ref = _v350 
        let v352 : (US3 option -> US3 option ref) = closure8(v351)
        let v353 : unit = ()
        let v354 : (unit -> unit) = closure9(v92, v352)
        let v355 : unit = (fun () -> v354 (); v353) ()
        let v358 : US3 option = _v350.Value 
        let v369 : US3 = US3_1
        let v370 : US3 = v358 |> Option.defaultValue v369 
        let v410 : System.DateTime =
            match v370 with
            | US3_1 -> (* None *)
                let v406 : System.DateTime = System.DateTime.Now
                v406
            | US3_0(v374) -> (* Some *)
                let v375 : System.DateTime = System.DateTime.Now
                let v378 : (System.DateTime -> int64) = _.Ticks
                let v379 : int64 = v378 v375
                let v382 : int64 = v379 - v374
                let v383 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v384 : System.TimeSpan = v383 v382
                let v387 : (System.TimeSpan -> int32) = _.Hours
                let v388 : int32 = v387 v384
                let v391 : (System.TimeSpan -> int32) = _.Minutes
                let v392 : int32 = v391 v384
                let v395 : (System.TimeSpan -> int32) = _.Seconds
                let v396 : int32 = v395 v384
                let v399 : (System.TimeSpan -> int32) = _.Milliseconds
                let v400 : int32 = v399 v384
                let v403 : System.DateTime = System.DateTime (1, 1, 1, v388, v392, v396, v400)
                v403
        let v411 : string = method6()
        let v414 : (string -> string) = v410.ToString
        let v415 : string = v414 v411
        let _v103 = v415 
        #endif
#else
        let v418 : US3 option = None
        let _v418 = ref v418 
        let v419 : US3 option ref = _v418 
        let v420 : (US3 option -> US3 option ref) = closure8(v419)
        let v421 : unit = ()
        let v422 : (unit -> unit) = closure9(v92, v420)
        let v423 : unit = (fun () -> v422 (); v421) ()
        let v426 : US3 option = _v418.Value 
        let v437 : US3 = US3_1
        let v438 : US3 = v426 |> Option.defaultValue v437 
        let v478 : System.DateTime =
            match v438 with
            | US3_1 -> (* None *)
                let v474 : System.DateTime = System.DateTime.Now
                v474
            | US3_0(v442) -> (* Some *)
                let v443 : System.DateTime = System.DateTime.Now
                let v446 : (System.DateTime -> int64) = _.Ticks
                let v447 : int64 = v446 v443
                let v450 : int64 = v447 - v442
                let v451 : (int64 -> System.TimeSpan) = System.TimeSpan 
                let v452 : System.TimeSpan = v451 v450
                let v455 : (System.TimeSpan -> int32) = _.Hours
                let v456 : int32 = v455 v452
                let v459 : (System.TimeSpan -> int32) = _.Minutes
                let v460 : int32 = v459 v452
                let v463 : (System.TimeSpan -> int32) = _.Seconds
                let v464 : int32 = v463 v452
                let v467 : (System.TimeSpan -> int32) = _.Milliseconds
                let v468 : int32 = v467 v452
                let v471 : System.DateTime = System.DateTime (1, 1, 1, v456, v460, v464, v468)
                v471
        let v479 : string = method6()
        let v482 : (string -> string) = v478.ToString
        let v483 : string = v482 v479
        let _v103 = v483 
        #endif
        let v486 : string = _v103 
        
        
        
        
        
        let v556 : string = "Verbose"
        let v557 : (unit -> string) = v556.ToLower
        let v558 : string = v557 ()
        let v561 : string = v558.PadLeft (7, ' ')
        let v575 : unit = ()
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v576 : string = "inline_colorization::color_bright_black"
        let v577 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v576 
        let v578 : string = "&*$0"
        let v579 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v561 v578 
        let v580 : string = "inline_colorization::color_reset"
        let v581 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v580 
        let v582 : string = "\"{v577}{v579}{v581}\""
        let v583 : string = @$"format!(" + v582 + ")"
        let v584 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v583 
        let v585 : string = "fable_library_rust::String_::fromString($0)"
        let v586 : string = Fable.Core.RustInterop.emitRustExpr v584 v585 
        let _v575 = v586 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v587 : string = "inline_colorization::color_bright_black"
        let v588 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v587 
        let v589 : string = "&*$0"
        let v590 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v561 v589 
        let v591 : string = "inline_colorization::color_reset"
        let v592 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v591 
        let v593 : string = "\"{v588}{v590}{v592}\""
        let v594 : string = @$"format!(" + v593 + ")"
        let v595 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v594 
        let v596 : string = "fable_library_rust::String_::fromString($0)"
        let v597 : string = Fable.Core.RustInterop.emitRustExpr v595 v596 
        let _v575 = v597 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v598 : string = "inline_colorization::color_bright_black"
        let v599 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v598 
        let v600 : string = "&*$0"
        let v601 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v561 v600 
        let v602 : string = "inline_colorization::color_reset"
        let v603 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v602 
        let v604 : string = "\"{v599}{v601}{v603}\""
        let v605 : string = @$"format!(" + v604 + ")"
        let v606 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v605 
        let v607 : string = "fable_library_rust::String_::fromString($0)"
        let v608 : string = Fable.Core.RustInterop.emitRustExpr v606 v607 
        let _v575 = v608 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        let v609 : string = "\u001b[90m"
        let v610 : string = method7()
        let v611 : string = v609 + v561 
        let v612 : string = v611 + v610 
        let _v575 = v612 
        #endif
#if FABLE_COMPILER_PYTHON
        let v613 : string = "\u001b[90m"
        let v614 : string = method7()
        let v615 : string = v613 + v561 
        let v616 : string = v615 + v614 
        let _v575 = v616 
        #endif
#else
        let v617 : string = "\u001b[90m"
        let v618 : string = method7()
        let v619 : string = v617 + v561 
        let v620 : string = v619 + v618 
        let _v575 = v620 
        #endif
        let v621 : string = _v575 
        let v627 : int64 = v88.l0
        let v628 : string = method8()
        let v629 : Mut4 = {l0 = v628} : Mut4
        let v630 : string = "{ "
        let v631 : string = $"{v630}"
        let v634 : unit = ()
        let v635 : (unit -> unit) = closure10(v629, v631)
        let v636 : unit = (fun () -> v635 (); v634) ()
        let v639 : string = "port"
        let v640 : string = $"{v639}"
        let v643 : unit = ()
        let v644 : (unit -> unit) = closure10(v629, v640)
        let v645 : unit = (fun () -> v644 (); v643) ()
        let v648 : string = " = "
        let v649 : string = $"{v648}"
        let v652 : unit = ()
        let v653 : (unit -> unit) = closure10(v629, v649)
        let v654 : unit = (fun () -> v653 (); v652) ()
        let v657 : string = $"{v2}"
        let v660 : unit = ()
        let v661 : (unit -> unit) = closure10(v629, v657)
        let v662 : unit = (fun () -> v661 (); v660) ()
        let v665 : string = "; "
        let v666 : string = $"{v665}"
        let v669 : unit = ()
        let v670 : (unit -> unit) = closure10(v629, v666)
        let v671 : unit = (fun () -> v670 (); v669) ()
        let v674 : string = "retry"
        let v675 : string = $"{v674}"
        let v678 : unit = ()
        let v679 : (unit -> unit) = closure10(v629, v675)
        let v680 : unit = (fun () -> v679 (); v678) ()
        let v683 : string = $"{v648}"
        let v686 : unit = ()
        let v687 : (unit -> unit) = closure10(v629, v683)
        let v688 : unit = (fun () -> v687 (); v686) ()
        let v691 : string = $"{v3}"
        let v694 : unit = ()
        let v695 : (unit -> unit) = closure10(v629, v691)
        let v696 : unit = (fun () -> v695 (); v694) ()
        let v699 : string = $"{v665}"
        let v702 : unit = ()
        let v703 : (unit -> unit) = closure10(v629, v699)
        let v704 : unit = (fun () -> v703 (); v702) ()
        let v707 : string = "timeout"
        let v708 : string = $"{v707}"
        let v711 : unit = ()
        let v712 : (unit -> unit) = closure10(v629, v708)
        let v713 : unit = (fun () -> v712 (); v711) ()
        let v716 : string = $"{v648}"
        let v719 : unit = ()
        let v720 : (unit -> unit) = closure10(v629, v716)
        let v721 : unit = (fun () -> v720 (); v719) ()
        let v724 : unit = ()
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v725 : string = "format!(\"{:#?}\", $0)"
        let v726 : std_string_String = Fable.Core.RustInterop.emitRustExpr v0 v725 
        let v727 : string = "fable_library_rust::String_::fromString($0)"
        let v728 : string = Fable.Core.RustInterop.emitRustExpr v726 v727 
        let _v724 = v728 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v729 : string = "format!(\"{:#?}\", $0)"
        let v730 : std_string_String = Fable.Core.RustInterop.emitRustExpr v0 v729 
        let v731 : string = "fable_library_rust::String_::fromString($0)"
        let v732 : string = Fable.Core.RustInterop.emitRustExpr v730 v731 
        let _v724 = v732 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v733 : string = "format!(\"{:#?}\", $0)"
        let v734 : std_string_String = Fable.Core.RustInterop.emitRustExpr v0 v733 
        let v735 : string = "fable_library_rust::String_::fromString($0)"
        let v736 : string = Fable.Core.RustInterop.emitRustExpr v734 v735 
        let _v724 = v736 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        let v737 : string = $"%A{v0}"
        let _v724 = v737 
        #endif
#if FABLE_COMPILER_PYTHON
        let v740 : string = $"%A{v0}"
        let _v724 = v740 
        #endif
#else
        let v743 : string = $"%A{v0}"
        let _v724 = v743 
        #endif
        let v746 : string = _v724 
        let v751 : string = $"{v746}"
        let v754 : unit = ()
        let v755 : (unit -> unit) = closure10(v629, v751)
        let v756 : unit = (fun () -> v755 (); v754) ()
        let v759 : string = $"{v665}"
        let v762 : unit = ()
        let v763 : (unit -> unit) = closure10(v629, v759)
        let v764 : unit = (fun () -> v763 (); v762) ()
        let v767 : string = "status"
        let v768 : string = $"{v767}"
        let v771 : unit = ()
        let v772 : (unit -> unit) = closure10(v629, v768)
        let v773 : unit = (fun () -> v772 (); v771) ()
        let v776 : string = $"{v648}"
        let v779 : unit = ()
        let v780 : (unit -> unit) = closure10(v629, v776)
        let v781 : unit = (fun () -> v780 (); v779) ()
        let v786 : string =
            if v1 then
                let v784 : string = "true"
                v784
            else
                let v785 : string = "false"
                v785
        let v787 : string = $"{v786}"
        let v790 : unit = ()
        let v791 : (unit -> unit) = closure10(v629, v787)
        let v792 : unit = (fun () -> v791 (); v790) ()
        let v795 : string = " }"
        let v796 : string = $"{v795}"
        let v799 : unit = ()
        let v800 : (unit -> unit) = closure10(v629, v796)
        let v801 : unit = (fun () -> v800 (); v799) ()
        let v804 : string = v629.l0
        let v805 : (unit -> string) = closure30()
        let v806 : string = $"{v486} {v621} #{v627} %s{v805 ()} / {v804}"
        let v809 : char list = []
        let v810 : (char list -> (char [])) = List.toArray
        let v811 : (char []) = v810 v809
        let v814 : string = v806.TrimStart v811 
        let v832 : char list = []
        let v833 : char list = '/' :: v832 
        let v836 : char list = ' ' :: v833 
        let v839 : (char list -> (char [])) = List.toArray
        let v840 : (char []) = v839 v836
        let v843 : string = v814.TrimEnd v840 
        let v861 : (string -> unit) = closure12()
        let v862 : unit = ()
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v863 : string = @"println!(""{}"", $0)"
        Fable.Core.RustInterop.emitRustExpr v843 v863 
        let _v862 = () 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v864 : string = @"println!(""{}"", $0)"
        Fable.Core.RustInterop.emitRustExpr v843 v864 
        let _v862 = () 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v865 : string = $"near_sdk::log!(\"{{}}\", $0)"
        Fable.Core.RustInterop.emitRustExpr v843 v865 
        let _v862 = () 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        v861 v843
        let _v862 = () 
        #endif
#if FABLE_COMPILER_PYTHON
        v861 v843
        let _v862 = () 
        #endif
#else
        v861 v843
        let _v862 = () 
        #endif
        _v862 
        let v866 : (string -> unit) = v20.l0
        v866 v843
and method11 (v0 : int32 option, v1 : bool, v2 : string, v3 : int32, v4 : int64) : Async<int64> =
    let v5 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v6 : Async<int64> = null |> unbox<Async<int64>>
    let _v5 = v6 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v9 : Async<int64> = null |> unbox<Async<int64>>
    let _v5 = v9 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v12 : Async<int64> = null |> unbox<Async<int64>>
    let _v5 = v12 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v15 : Async<int64> = null |> unbox<Async<int64>>
    let _v5 = v15 
    #endif
#if FABLE_COMPILER_PYTHON
    let v18 : Async<int64> = null |> unbox<Async<int64>>
    let _v5 = v18 
    #endif
#else
    let v21 : Async<int64> option = None
    let mutable _v21 = v21 
    async {
    let v22 : US7 option = None
    let _v22 = ref v22 
    let v23 : US7 option ref = _v22 
    let v24 : (US7 option -> US7 option ref) = closure27(v23)
    let v25 : unit = ()
    let v26 : (unit -> unit) = closure28(v0, v24)
    let v27 : unit = (fun () -> v26 (); v25) ()
    let v30 : US7 option = _v22.Value 
    let v41 : US7 = US7_1
    let v42 : US7 = v30 |> Option.defaultValue v41 
    let v3753 : Async<bool> =
        match v42 with
        | US7_1 -> (* None *)
            let v46 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v47 : Async<bool> = null |> unbox<Async<bool>>
            let _v46 = v47 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v50 : Async<bool> = null |> unbox<Async<bool>>
            let _v46 = v50 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v53 : Async<bool> = null |> unbox<Async<bool>>
            let _v46 = v53 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v56 : Async<bool> = null |> unbox<Async<bool>>
            let _v46 = v56 
            #endif
#if FABLE_COMPILER_PYTHON
            let v59 : Async<bool> = null |> unbox<Async<bool>>
            let _v46 = v59 
            #endif
#else
            let v62 : Async<bool> option = None
            let mutable _v62 = v62 
            async {
            let v63 : Async<System.Threading.CancellationToken> = Async.CancellationToken
            let! v63 = v63 
            let v64 : System.Threading.CancellationToken = v63 
            let v65 : System.Net.Sockets.TcpClient = new System.Net.Sockets.TcpClient ()
            use v65 = v65 
            let v66 : System.Net.Sockets.TcpClient = v65 
            try
            let v67 : System.Threading.Tasks.ValueTask = v66.ConnectAsync (v2, v3, v64)
            let v68 : (unit -> System.Threading.Tasks.Task) = v67.AsTask
            let v69 : System.Threading.Tasks.Task = v68 ()
            let v70 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v71 : Async<unit> = null |> unbox<Async<unit>>
            let _v70 = v71 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v74 : Async<unit> = null |> unbox<Async<unit>>
            let _v70 = v74 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v77 : Async<unit> = null |> unbox<Async<unit>>
            let _v70 = v77 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v80 : Async<unit> = null |> unbox<Async<unit>>
            let _v70 = v80 
            #endif
#if FABLE_COMPILER_PYTHON
            let v83 : Async<unit> = null |> unbox<Async<unit>>
            let _v70 = v83 
            #endif
#else
            let v86 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v87 : Async<unit> = v86 v69
            let _v70 = v87 
            #endif
            let v88 : Async<unit> = _v70 
            do! v88 
            return true 
            with ex ->
            let v93 : exn = ex
            let v94 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v95 : string = $"%A{v93}"
            let _v94 = v95 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v98 : string = $"%A{v93}"
            let _v94 = v98 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v101 : string = $"%A{v93}"
            let _v94 = v101 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v104 : string = $"%A{v93}"
            let _v94 = v104 
            #endif
#if FABLE_COMPILER_PYTHON
            let v107 : string = $"%A{v93}"
            let _v94 = v107 
            #endif
#else
            let v110 : string = $"{v93.GetType ()}: {v93.Message}"
            let _v94 = v110 
            #endif
            let v111 : string = _v94 
            let v116 : unit = ()
            let v117 : (unit -> unit) = closure6(v3, v111)
            let v118 : unit = (fun () -> v117 (); v116) ()
            return false 
            (*
            let v886 : bool = *)
            }
            |> fun x -> _v62 <- Some x
            let v887 : Async<bool> = match _v62 with Some x -> x | None -> failwith "async.new_async_unit / _v62=None"
            let _v46 = v887 
            #endif
            let v888 : Async<bool> = _v46 
            v888
        | US7_0(v893) -> (* Some *)
            let v894 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v895 : Async<bool> = null |> unbox<Async<bool>>
            let _v894 = v895 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v898 : Async<bool> = null |> unbox<Async<bool>>
            let _v894 = v898 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v901 : Async<bool> = null |> unbox<Async<bool>>
            let _v894 = v901 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v904 : Async<bool> = null |> unbox<Async<bool>>
            let _v894 = v904 
            #endif
#if FABLE_COMPILER_PYTHON
            let v907 : Async<bool> = null |> unbox<Async<bool>>
            let _v894 = v907 
            #endif
#else
            let v910 : Async<bool> option = None
            let mutable _v910 = v910 
            async {
            let v911 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v912 : Async<bool> = null |> unbox<Async<bool>>
            let _v911 = v912 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v915 : Async<bool> = null |> unbox<Async<bool>>
            let _v911 = v915 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v918 : Async<bool> = null |> unbox<Async<bool>>
            let _v911 = v918 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v921 : Async<bool> = null |> unbox<Async<bool>>
            let _v911 = v921 
            #endif
#if FABLE_COMPILER_PYTHON
            let v924 : Async<bool> = null |> unbox<Async<bool>>
            let _v911 = v924 
            #endif
#else
            let v927 : Async<bool> option = None
            let mutable _v927 = v927 
            async {
            let v928 : Async<System.Threading.CancellationToken> = Async.CancellationToken
            let! v928 = v928 
            let v929 : System.Threading.CancellationToken = v928 
            let v930 : System.Net.Sockets.TcpClient = new System.Net.Sockets.TcpClient ()
            use v930 = v930 
            let v931 : System.Net.Sockets.TcpClient = v930 
            try
            let v932 : System.Threading.Tasks.ValueTask = v931.ConnectAsync (v2, v3, v929)
            let v933 : (unit -> System.Threading.Tasks.Task) = v932.AsTask
            let v934 : System.Threading.Tasks.Task = v933 ()
            let v935 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v936 : Async<unit> = null |> unbox<Async<unit>>
            let _v935 = v936 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v939 : Async<unit> = null |> unbox<Async<unit>>
            let _v935 = v939 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v942 : Async<unit> = null |> unbox<Async<unit>>
            let _v935 = v942 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v945 : Async<unit> = null |> unbox<Async<unit>>
            let _v935 = v945 
            #endif
#if FABLE_COMPILER_PYTHON
            let v948 : Async<unit> = null |> unbox<Async<unit>>
            let _v935 = v948 
            #endif
#else
            let v951 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v952 : Async<unit> = v951 v934
            let _v935 = v952 
            #endif
            let v953 : Async<unit> = _v935 
            do! v953 
            return true 
            with ex ->
            let v958 : exn = ex
            let v959 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v960 : string = $"%A{v958}"
            let _v959 = v960 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v963 : string = $"%A{v958}"
            let _v959 = v963 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v966 : string = $"%A{v958}"
            let _v959 = v966 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v969 : string = $"%A{v958}"
            let _v959 = v969 
            #endif
#if FABLE_COMPILER_PYTHON
            let v972 : string = $"%A{v958}"
            let _v959 = v972 
            #endif
#else
            let v975 : string = $"{v958.GetType ()}: {v958.Message}"
            let _v959 = v975 
            #endif
            let v976 : string = _v959 
            let v981 : unit = ()
            let v982 : (unit -> unit) = closure6(v3, v976)
            let v983 : unit = (fun () -> v982 (); v981) ()
            return false 
            (*
            let v1751 : bool = *)
            }
            |> fun x -> _v927 <- Some x
            let v1752 : Async<bool> = match _v927 with Some x -> x | None -> failwith "async.new_async_unit / _v927=None"
            let _v911 = v1752 
            #endif
            let v1753 : Async<bool> = _v911 
            let v1758 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1759 : Async<US4> = null |> unbox<Async<US4>>
            let _v1758 = v1759 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1762 : Async<US4> = null |> unbox<Async<US4>>
            let _v1758 = v1762 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1765 : Async<US4> = null |> unbox<Async<US4>>
            let _v1758 = v1765 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1768 : Async<US4> = null |> unbox<Async<US4>>
            let _v1758 = v1768 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1771 : Async<US4> = null |> unbox<Async<US4>>
            let _v1758 = v1771 
            #endif
#else
            let v1774 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1775 : Async<US4> = null |> unbox<Async<US4>>
            let _v1774 = v1775 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1778 : Async<US4> = null |> unbox<Async<US4>>
            let _v1774 = v1778 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1781 : Async<US4> = null |> unbox<Async<US4>>
            let _v1774 = v1781 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1784 : Async<US4> = null |> unbox<Async<US4>>
            let _v1774 = v1784 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1787 : Async<US4> = null |> unbox<Async<US4>>
            let _v1774 = v1787 
            #endif
#else
            let v1790 : Async<US4> option = None
            let mutable _v1790 = v1790 
            async {
            let v1791 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1792 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _v1791 = v1792 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1795 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _v1791 = v1795 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1798 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _v1791 = v1798 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1801 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _v1791 = v1801 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1804 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _v1791 = v1804 
            #endif
#else
            let v1807 : Async<Async<bool>> = Async.StartChild (v1753, v893)
            let _v1791 = v1807 
            #endif
            let v1808 : Async<Async<bool>> = _v1791 
            let! v1808 = v1808 
            let v1813 : Async<bool> = v1808 
            let v1814 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1815 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _v1814 = v1815 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1818 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _v1814 = v1818 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1821 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _v1814 = v1821 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1824 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _v1814 = v1824 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1827 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _v1814 = v1827 
            #endif
#else
            let v1830 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v1831 : Async<Choice<bool, exn>> = v1830 v1813
            let _v1814 = v1831 
            #endif
            let v1832 : Async<Choice<bool, exn>> = _v1814 
            let v1837 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1838 : Async<US5> = null |> unbox<Async<US5>>
            let _v1837 = v1838 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1841 : Async<US5> = null |> unbox<Async<US5>>
            let _v1837 = v1841 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1844 : Async<US5> = null |> unbox<Async<US5>>
            let _v1837 = v1844 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1847 : Async<US5> = null |> unbox<Async<US5>>
            let _v1837 = v1847 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1850 : Async<US5> = null |> unbox<Async<US5>>
            let _v1837 = v1850 
            #endif
#else
            let v1853 : Async<US5> option = None
            let mutable _v1853 = v1853 
            async {
            let! v1832 = v1832 
            let v1854 : Choice<bool, exn> = v1832 
            let v1855 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1856 : US5 = null |> unbox<US5>
            let _v1855 = v1856 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1859 : US5 = null |> unbox<US5>
            let _v1855 = v1859 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1862 : US5 = null |> unbox<US5>
            let _v1855 = v1862 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1865 : US5 = null |> unbox<US5>
            let _v1855 = v1865 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1868 : US5 = null |> unbox<US5>
            let _v1855 = v1868 
            #endif
#else
            let v1871 : (bool -> US5) = closure17()
            let v1872 : (exn -> US5) = closure18()
            let v1873 : US5 = match v1854 with Choice1Of2 x -> v1871 x | Choice2Of2 x -> v1872 x
            let _v1855 = v1873 
            #endif
            let v1874 : US5 = _v1855 
            return v1874 
            }
            |> fun x -> _v1853 <- Some x
            let v1879 : Async<US5> = match _v1853 with Some x -> x | None -> failwith "async.new_async_unit / _v1853=None"
            let _v1837 = v1879 
            #endif
            let v1880 : Async<US5> = _v1837 
            let v1885 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1886 : Async<US6> = null |> unbox<Async<US6>>
            let _v1885 = v1886 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1889 : Async<US6> = null |> unbox<Async<US6>>
            let _v1885 = v1889 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1892 : Async<US6> = null |> unbox<Async<US6>>
            let _v1885 = v1892 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1895 : Async<US6> = null |> unbox<Async<US6>>
            let _v1885 = v1895 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1898 : Async<US6> = null |> unbox<Async<US6>>
            let _v1885 = v1898 
            #endif
#else
            let v1901 : Async<US6> option = None
            let mutable _v1901 = v1901 
            async {
            let! v1880 = v1880 
            let v1902 : US5 = v1880 
            let v1908 : US6 =
                match v1902 with
                | US5_0(v1903) -> (* C1of2 *)
                    US6_0(v1903)
                | US5_1(v1905) -> (* C2of2 *)
                    US6_1(v1905)
            return v1908 
            }
            |> fun x -> _v1901 <- Some x
            let v1909 : Async<US6> = match _v1901 with Some x -> x | None -> failwith "async.new_async_unit / _v1901=None"
            let _v1885 = v1909 
            #endif
            let v1910 : Async<US6> = _v1885 
            let v1915 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1916 : Async<US4> = null |> unbox<Async<US4>>
            let _v1915 = v1916 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1919 : Async<US4> = null |> unbox<Async<US4>>
            let _v1915 = v1919 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1922 : Async<US4> = null |> unbox<Async<US4>>
            let _v1915 = v1922 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1925 : Async<US4> = null |> unbox<Async<US4>>
            let _v1915 = v1925 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1928 : Async<US4> = null |> unbox<Async<US4>>
            let _v1915 = v1928 
            #endif
#else
            let v1931 : Async<US4> option = None
            let mutable _v1931 = v1931 
            async {
            let! v1910 = v1910 
            let v1932 : US6 = v1910 
            let v3724 : US4 =
                match v1932 with
                | US6_1(v1935) -> (* Error *)
                    let v1936 : string = $"%A{v1935}"
                    let v1939 : string = "System.TimeoutException"
                    let v1940 : bool = v1936.Contains v1939 
                    if v1940 then
                        let v1943 : unit = ()
                        let v1944 : (unit -> unit) = closure19(v893)
                        let v1945 : unit = (fun () -> v1944 (); v1943) ()
                        US4_1
                    else
                        let v2680 : unit = ()
                        let v2681 : (unit -> unit) = closure21(v893, v1935)
                        let v2682 : unit = (fun () -> v2681 (); v2680) ()
                        US4_1
                | US6_0(v1933) -> (* Ok *)
                    US4_0(v1933)
            return v3724 
            }
            |> fun x -> _v1931 <- Some x
            let v3725 : Async<US4> = match _v1931 with Some x -> x | None -> failwith "async.new_async_unit / _v1931=None"
            let _v1915 = v3725 
            #endif
            let v3726 : Async<US4> = _v1915 
            return! v3726 
            }
            |> fun x -> _v1790 <- Some x
            let v3731 : Async<US4> = match _v1790 with Some x -> x | None -> failwith "async.new_async_unit / _v1790=None"
            let _v1774 = v3731 
            #endif
            let v3732 : Async<US4> = _v1774 
            let _v1758 = v3732 
            #endif
            let v3737 : Async<US4> = _v1758 
            let! v3737 = v3737 
            let v3742 : US4 = v3737 
            let v3745 : bool =
                match v3742 with
                | US4_1 -> (* None *)
                    false
                | US4_0(v3743) -> (* Some *)
                    v3743
            return v3745 
            }
            |> fun x -> _v910 <- Some x
            let v3746 : Async<bool> = match _v910 with Some x -> x | None -> failwith "async.new_async_unit / _v910=None"
            let _v894 = v3746 
            #endif
            let v3747 : Async<bool> = _v894 
            v3747
    let! v3753 = v3753 
    let v3754 : bool = v3753 
    let v3755 : bool = v3754 = v1
    if v3755 then
        return v4 
        (*
        ()
    else
        *) else
        let v3756 : int64 = v4 % 100L
        let v3757 : bool = v3756 = 0L
        if v3757 then
            let v3758 : unit = ()
            let v3759 : (unit -> unit) = closure29(v0, v1, v3, v4)
            let v3760 : unit = (fun () -> v3759 (); v3758) ()
            ()
        let v4624 : unit = ()
        
#if FABLE_COMPILER || WASM || CONTRACT
        
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
        let v4625 : Async<unit> = null |> unbox<Async<unit>>
        let _v4624 = v4625 
        #endif
#if FABLE_COMPILER_RUST && WASM
        let v4628 : Async<unit> = null |> unbox<Async<unit>>
        let _v4624 = v4628 
        #endif
#if FABLE_COMPILER_RUST && CONTRACT
        let v4631 : Async<unit> = null |> unbox<Async<unit>>
        let _v4624 = v4631 
        #endif
#if FABLE_COMPILER_TYPESCRIPT
        let v4634 : Async<unit> = null |> unbox<Async<unit>>
        let _v4624 = v4634 
        #endif
#if FABLE_COMPILER_PYTHON
        let v4637 : Async<unit> = null |> unbox<Async<unit>>
        let _v4624 = v4637 
        #endif
#else
        let v4640 : (int32 -> Async<unit>) = Async.Sleep
        let v4641 : Async<unit> = v4640 10
        let _v4624 = v4641 
        #endif
        let v4642 : Async<unit> = _v4624 
        do! v4642 
        let v4647 : int64 = v4 + 1L
        let v4648 : Async<int64> = method11(v0, v1, v2, v3, v4647)
        return! v4648 
        (*
        ()
    *)
    }
    |> fun x -> _v21 <- Some x
    let v4649 : Async<int64> = match _v21 with Some x -> x | None -> failwith "async.new_async_unit / _v21=None"
    let _v5 = v4649 
    #endif
    let v4650 : Async<int64> = _v5 
    v4650
and closure26 (v0 : int32 option, v1 : bool, v2 : string) (v3 : int32) : Async<int64> =
    let v4 : int64 = 0L
    method11(v0, v1, v2, v3, v4)
and closure25 (v0 : int32 option, v1 : bool) (v2 : string) : (int32 -> Async<int64>) =
    closure26(v0, v1, v2)
and closure24 (v0 : int32 option) (v1 : bool) : (string -> (int32 -> Async<int64>)) =
    closure25(v0, v1)
and closure23 () (v0 : int32 option) : (bool -> (string -> (int32 -> Async<int64>))) =
    closure24(v0)
and method12 (v0 : int32 option, v1 : string, v2 : int32) : Async<int32> =
    let v3 : unit = ()
    
#if FABLE_COMPILER || WASM || CONTRACT
    
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
    let v4 : Async<int32> = null |> unbox<Async<int32>>
    let _v3 = v4 
    #endif
#if FABLE_COMPILER_RUST && WASM
    let v7 : Async<int32> = null |> unbox<Async<int32>>
    let _v3 = v7 
    #endif
#if FABLE_COMPILER_RUST && CONTRACT
    let v10 : Async<int32> = null |> unbox<Async<int32>>
    let _v3 = v10 
    #endif
#if FABLE_COMPILER_TYPESCRIPT
    let v13 : Async<int32> = null |> unbox<Async<int32>>
    let _v3 = v13 
    #endif
#if FABLE_COMPILER_PYTHON
    let v16 : Async<int32> = null |> unbox<Async<int32>>
    let _v3 = v16 
    #endif
#else
    let v19 : Async<int32> option = None
    let mutable _v19 = v19 
    async {
    let v20 : US7 option = None
    let _v20 = ref v20 
    let v21 : US7 option ref = _v20 
    let v22 : (US7 option -> US7 option ref) = closure27(v21)
    let v23 : unit = ()
    let v24 : (unit -> unit) = closure28(v0, v22)
    let v25 : unit = (fun () -> v24 (); v23) ()
    let v28 : US7 option = _v20.Value 
    let v39 : US7 = US7_1
    let v40 : US7 = v28 |> Option.defaultValue v39 
    let v3751 : Async<bool> =
        match v40 with
        | US7_1 -> (* None *)
            let v44 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v45 : Async<bool> = null |> unbox<Async<bool>>
            let _v44 = v45 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v48 : Async<bool> = null |> unbox<Async<bool>>
            let _v44 = v48 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v51 : Async<bool> = null |> unbox<Async<bool>>
            let _v44 = v51 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v54 : Async<bool> = null |> unbox<Async<bool>>
            let _v44 = v54 
            #endif
#if FABLE_COMPILER_PYTHON
            let v57 : Async<bool> = null |> unbox<Async<bool>>
            let _v44 = v57 
            #endif
#else
            let v60 : Async<bool> option = None
            let mutable _v60 = v60 
            async {
            let v61 : Async<System.Threading.CancellationToken> = Async.CancellationToken
            let! v61 = v61 
            let v62 : System.Threading.CancellationToken = v61 
            let v63 : System.Net.Sockets.TcpClient = new System.Net.Sockets.TcpClient ()
            use v63 = v63 
            let v64 : System.Net.Sockets.TcpClient = v63 
            try
            let v65 : System.Threading.Tasks.ValueTask = v64.ConnectAsync (v1, v2, v62)
            let v66 : (unit -> System.Threading.Tasks.Task) = v65.AsTask
            let v67 : System.Threading.Tasks.Task = v66 ()
            let v68 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v69 : Async<unit> = null |> unbox<Async<unit>>
            let _v68 = v69 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v72 : Async<unit> = null |> unbox<Async<unit>>
            let _v68 = v72 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v75 : Async<unit> = null |> unbox<Async<unit>>
            let _v68 = v75 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v78 : Async<unit> = null |> unbox<Async<unit>>
            let _v68 = v78 
            #endif
#if FABLE_COMPILER_PYTHON
            let v81 : Async<unit> = null |> unbox<Async<unit>>
            let _v68 = v81 
            #endif
#else
            let v84 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v85 : Async<unit> = v84 v67
            let _v68 = v85 
            #endif
            let v86 : Async<unit> = _v68 
            do! v86 
            return true 
            with ex ->
            let v91 : exn = ex
            let v92 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v93 : string = $"%A{v91}"
            let _v92 = v93 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v96 : string = $"%A{v91}"
            let _v92 = v96 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v99 : string = $"%A{v91}"
            let _v92 = v99 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v102 : string = $"%A{v91}"
            let _v92 = v102 
            #endif
#if FABLE_COMPILER_PYTHON
            let v105 : string = $"%A{v91}"
            let _v92 = v105 
            #endif
#else
            let v108 : string = $"{v91.GetType ()}: {v91.Message}"
            let _v92 = v108 
            #endif
            let v109 : string = _v92 
            let v114 : unit = ()
            let v115 : (unit -> unit) = closure6(v2, v109)
            let v116 : unit = (fun () -> v115 (); v114) ()
            return false 
            (*
            let v884 : bool = *)
            }
            |> fun x -> _v60 <- Some x
            let v885 : Async<bool> = match _v60 with Some x -> x | None -> failwith "async.new_async_unit / _v60=None"
            let _v44 = v885 
            #endif
            let v886 : Async<bool> = _v44 
            v886
        | US7_0(v891) -> (* Some *)
            let v892 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v893 : Async<bool> = null |> unbox<Async<bool>>
            let _v892 = v893 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v896 : Async<bool> = null |> unbox<Async<bool>>
            let _v892 = v896 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v899 : Async<bool> = null |> unbox<Async<bool>>
            let _v892 = v899 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v902 : Async<bool> = null |> unbox<Async<bool>>
            let _v892 = v902 
            #endif
#if FABLE_COMPILER_PYTHON
            let v905 : Async<bool> = null |> unbox<Async<bool>>
            let _v892 = v905 
            #endif
#else
            let v908 : Async<bool> option = None
            let mutable _v908 = v908 
            async {
            let v909 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v910 : Async<bool> = null |> unbox<Async<bool>>
            let _v909 = v910 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v913 : Async<bool> = null |> unbox<Async<bool>>
            let _v909 = v913 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v916 : Async<bool> = null |> unbox<Async<bool>>
            let _v909 = v916 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v919 : Async<bool> = null |> unbox<Async<bool>>
            let _v909 = v919 
            #endif
#if FABLE_COMPILER_PYTHON
            let v922 : Async<bool> = null |> unbox<Async<bool>>
            let _v909 = v922 
            #endif
#else
            let v925 : Async<bool> option = None
            let mutable _v925 = v925 
            async {
            let v926 : Async<System.Threading.CancellationToken> = Async.CancellationToken
            let! v926 = v926 
            let v927 : System.Threading.CancellationToken = v926 
            let v928 : System.Net.Sockets.TcpClient = new System.Net.Sockets.TcpClient ()
            use v928 = v928 
            let v929 : System.Net.Sockets.TcpClient = v928 
            try
            let v930 : System.Threading.Tasks.ValueTask = v929.ConnectAsync (v1, v2, v927)
            let v931 : (unit -> System.Threading.Tasks.Task) = v930.AsTask
            let v932 : System.Threading.Tasks.Task = v931 ()
            let v933 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v934 : Async<unit> = null |> unbox<Async<unit>>
            let _v933 = v934 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v937 : Async<unit> = null |> unbox<Async<unit>>
            let _v933 = v937 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v940 : Async<unit> = null |> unbox<Async<unit>>
            let _v933 = v940 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v943 : Async<unit> = null |> unbox<Async<unit>>
            let _v933 = v943 
            #endif
#if FABLE_COMPILER_PYTHON
            let v946 : Async<unit> = null |> unbox<Async<unit>>
            let _v933 = v946 
            #endif
#else
            let v949 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask
            let v950 : Async<unit> = v949 v932
            let _v933 = v950 
            #endif
            let v951 : Async<unit> = _v933 
            do! v951 
            return true 
            with ex ->
            let v956 : exn = ex
            let v957 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v958 : string = $"%A{v956}"
            let _v957 = v958 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v961 : string = $"%A{v956}"
            let _v957 = v961 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v964 : string = $"%A{v956}"
            let _v957 = v964 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v967 : string = $"%A{v956}"
            let _v957 = v967 
            #endif
#if FABLE_COMPILER_PYTHON
            let v970 : string = $"%A{v956}"
            let _v957 = v970 
            #endif
#else
            let v973 : string = $"{v956.GetType ()}: {v956.Message}"
            let _v957 = v973 
            #endif
            let v974 : string = _v957 
            let v979 : unit = ()
            let v980 : (unit -> unit) = closure6(v2, v974)
            let v981 : unit = (fun () -> v980 (); v979) ()
            return false 
            (*
            let v1749 : bool = *)
            }
            |> fun x -> _v925 <- Some x
            let v1750 : Async<bool> = match _v925 with Some x -> x | None -> failwith "async.new_async_unit / _v925=None"
            let _v909 = v1750 
            #endif
            let v1751 : Async<bool> = _v909 
            let v1756 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1757 : Async<US4> = null |> unbox<Async<US4>>
            let _v1756 = v1757 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1760 : Async<US4> = null |> unbox<Async<US4>>
            let _v1756 = v1760 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1763 : Async<US4> = null |> unbox<Async<US4>>
            let _v1756 = v1763 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1766 : Async<US4> = null |> unbox<Async<US4>>
            let _v1756 = v1766 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1769 : Async<US4> = null |> unbox<Async<US4>>
            let _v1756 = v1769 
            #endif
#else
            let v1772 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1773 : Async<US4> = null |> unbox<Async<US4>>
            let _v1772 = v1773 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1776 : Async<US4> = null |> unbox<Async<US4>>
            let _v1772 = v1776 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1779 : Async<US4> = null |> unbox<Async<US4>>
            let _v1772 = v1779 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1782 : Async<US4> = null |> unbox<Async<US4>>
            let _v1772 = v1782 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1785 : Async<US4> = null |> unbox<Async<US4>>
            let _v1772 = v1785 
            #endif
#else
            let v1788 : Async<US4> option = None
            let mutable _v1788 = v1788 
            async {
            let v1789 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1790 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _v1789 = v1790 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1793 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _v1789 = v1793 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1796 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _v1789 = v1796 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1799 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _v1789 = v1799 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1802 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>>
            let _v1789 = v1802 
            #endif
#else
            let v1805 : Async<Async<bool>> = Async.StartChild (v1751, v891)
            let _v1789 = v1805 
            #endif
            let v1806 : Async<Async<bool>> = _v1789 
            let! v1806 = v1806 
            let v1811 : Async<bool> = v1806 
            let v1812 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1813 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _v1812 = v1813 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1816 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _v1812 = v1816 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1819 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _v1812 = v1819 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1822 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _v1812 = v1822 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1825 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>>
            let _v1812 = v1825 
            #endif
#else
            let v1828 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch
            let v1829 : Async<Choice<bool, exn>> = v1828 v1811
            let _v1812 = v1829 
            #endif
            let v1830 : Async<Choice<bool, exn>> = _v1812 
            let v1835 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1836 : Async<US5> = null |> unbox<Async<US5>>
            let _v1835 = v1836 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1839 : Async<US5> = null |> unbox<Async<US5>>
            let _v1835 = v1839 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1842 : Async<US5> = null |> unbox<Async<US5>>
            let _v1835 = v1842 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1845 : Async<US5> = null |> unbox<Async<US5>>
            let _v1835 = v1845 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1848 : Async<US5> = null |> unbox<Async<US5>>
            let _v1835 = v1848 
            #endif
#else
            let v1851 : Async<US5> option = None
            let mutable _v1851 = v1851 
            async {
            let! v1830 = v1830 
            let v1852 : Choice<bool, exn> = v1830 
            let v1853 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1854 : US5 = null |> unbox<US5>
            let _v1853 = v1854 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1857 : US5 = null |> unbox<US5>
            let _v1853 = v1857 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1860 : US5 = null |> unbox<US5>
            let _v1853 = v1860 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1863 : US5 = null |> unbox<US5>
            let _v1853 = v1863 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1866 : US5 = null |> unbox<US5>
            let _v1853 = v1866 
            #endif
#else
            let v1869 : (bool -> US5) = closure17()
            let v1870 : (exn -> US5) = closure18()
            let v1871 : US5 = match v1852 with Choice1Of2 x -> v1869 x | Choice2Of2 x -> v1870 x
            let _v1853 = v1871 
            #endif
            let v1872 : US5 = _v1853 
            return v1872 
            }
            |> fun x -> _v1851 <- Some x
            let v1877 : Async<US5> = match _v1851 with Some x -> x | None -> failwith "async.new_async_unit / _v1851=None"
            let _v1835 = v1877 
            #endif
            let v1878 : Async<US5> = _v1835 
            let v1883 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1884 : Async<US6> = null |> unbox<Async<US6>>
            let _v1883 = v1884 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1887 : Async<US6> = null |> unbox<Async<US6>>
            let _v1883 = v1887 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1890 : Async<US6> = null |> unbox<Async<US6>>
            let _v1883 = v1890 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1893 : Async<US6> = null |> unbox<Async<US6>>
            let _v1883 = v1893 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1896 : Async<US6> = null |> unbox<Async<US6>>
            let _v1883 = v1896 
            #endif
#else
            let v1899 : Async<US6> option = None
            let mutable _v1899 = v1899 
            async {
            let! v1878 = v1878 
            let v1900 : US5 = v1878 
            let v1906 : US6 =
                match v1900 with
                | US5_0(v1901) -> (* C1of2 *)
                    US6_0(v1901)
                | US5_1(v1903) -> (* C2of2 *)
                    US6_1(v1903)
            return v1906 
            }
            |> fun x -> _v1899 <- Some x
            let v1907 : Async<US6> = match _v1899 with Some x -> x | None -> failwith "async.new_async_unit / _v1899=None"
            let _v1883 = v1907 
            #endif
            let v1908 : Async<US6> = _v1883 
            let v1913 : unit = ()
            
#if FABLE_COMPILER || WASM || CONTRACT
            
#if FABLE_COMPILER_RUST && !WASM && !CONTRACT
            let v1914 : Async<US4> = null |> unbox<Async<US4>>
            let _v1913 = v1914 
            #endif
#if FABLE_COMPILER_RUST && WASM
            let v1917 : Async<US4> = null |> unbox<Async<US4>>
            let _v1913 = v1917 
            #endif
#if FABLE_COMPILER_RUST && CONTRACT
            let v1920 : Async<US4> = null |> unbox<Async<US4>>
            let _v1913 = v1920 
            #endif
#if FABLE_COMPILER_TYPESCRIPT
            let v1923 : Async<US4> = null |> unbox<Async<US4>>
            let _v1913 = v1923 
            #endif
#if FABLE_COMPILER_PYTHON
            let v1926 : Async<US4> = null |> unbox<Async<US4>>
            let _v1913 = v1926 
            #endif
#else
            let v1929 : Async<US4> option = None
            let mutable _v1929 = v1929 
            async {
            let! v1908 = v1908 
            let v1930 : US6 = v1908 
            let v3722 : US4 =
                match v1930 with
                | US6_1(v1933) -> (* Error *)
                    let v1934 : string = $"%A{v1933}"
                    let v1937 : string = "System.TimeoutException"
                    let v1938 : bool = v1934.Contains v1937 
                    if v1938 then
                        let v1941 : unit = ()
                        let v1942 : (unit -> unit) = closure19(v891)
                        let v1943 : unit = (fun () -> v1942 (); v1941) ()
                        US4_1
                    else
                        let v2678 : unit = ()
                        let v2679 : (unit -> unit) = closure21(v891, v1933)
                        let v2680 : unit = (fun () -> v2679 (); v2678) ()
                        US4_1
                | US6_0(v1931) -> (* Ok *)
                    US4_0(v1931)
            return v3722 
            }
            |> fun x -> _v1929 <- Some x
            let v3723 : Async<US4> = match _v1929 with Some x -> x | None -> failwith "async.new_async_unit / _v1929=None"
            let _v1913 = v3723 
            #endif
            let v3724 : Async<US4> = _v1913 
            return! v3724 
            }
            |> fun x -> _v1788 <- Some x
            let v3729 : Async<US4> = match _v1788 with Some x -> x | None -> failwith "async.new_async_unit / _v1788=None"
            let _v1772 = v3729 
            #endif
            let v3730 : Async<US4> = _v1772 
            let _v1756 = v3730 
            #endif
            let v3735 : Async<US4> = _v1756 
            let! v3735 = v3735 
            let v3740 : US4 = v3735 
            let v3743 : bool =
                match v3740 with
                | US4_1 -> (* None *)
                    false
                | US4_0(v3741) -> (* Some *)
                    v3741
            return v3743 
            }
            |> fun x -> _v908 <- Some x
            let v3744 : Async<bool> = match _v908 with Some x -> x | None -> failwith "async.new_async_unit / _v908=None"
            let _v892 = v3744 
            #endif
            let v3745 : Async<bool> = _v892 
            v3745
    let! v3751 = v3751 
    let v3752 : bool = v3751 
    let v3753 : bool = v3752 = false
    if v3753 then
        return v2 
        (*
        ()
    else
        *) else
        let v3754 : int32 = v2 + 1
        let v3755 : Async<int32> = method12(v0, v1, v3754)
        return! v3755 
        (*
        ()
    *)
    }
    |> fun x -> _v19 <- Some x
    let v3756 : Async<int32> = match _v19 with Some x -> x | None -> failwith "async.new_async_unit / _v19=None"
    let _v3 = v3756 
    #endif
    let v3757 : Async<int32> = _v3 
    v3757
and closure33 (v0 : int32 option, v1 : string) (v2 : int32) : Async<int32> =
    method12(v0, v1, v2)
and closure32 (v0 : int32 option) (v1 : string) : (int32 -> Async<int32>) =
    closure33(v0, v1)
and closure31 () (v0 : int32 option) : (string -> (int32 -> Async<int32>)) =
    closure32(v0)
let v0 : unit = ()
let v1 : (unit -> unit) = closure0()
let v2 : unit = (fun () -> v1 (); v0) ()
let v15 : (string -> (int32 -> Async<bool>)) = closure4()
let test_port_open x = v15 x
let v16 : (int32 -> (string -> (int32 -> Async<bool>))) = closure14()
let test_port_open_timeout x = v16 x
let v17 : (int32 option -> (bool -> (string -> (int32 -> Async<int64>)))) = closure23()
let wait_for_port_access x = v17 x
let v18 : (int32 option -> (string -> (int32 -> Async<int32>))) = closure31()
let get_available_port x = v18 x
()
00:00:00   debug #1 writeDibCode / output: Fs / path: DirTreeHtml.dib
00:00:00   debug #2 parseDibCode / output: Fs / file: DirTreeHtml.dib
00:00:00   debug #1 persistCodeProject / packages: [Argu; Falco.Markup; FSharp.Control.AsyncSeq; ... ] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: DirTreeHtml / hash:  / code.Length: 4638
00:00:00   debug #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj
00:00:00   debug #1 runtime.execute_with_options_async / { options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml" } }
00:00:00 verbose #2 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:00 verbose #3 >   Determining projects to restore...
00:00:01 verbose #4 >   Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
00:00:01 verbose #5 >   The last full restore is still up to date. Nothing left to do.
00:00:01 verbose #6 >   Total time taken: 0 milliseconds
00:00:01 verbose #7 >   Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
00:00:01 verbose #8 >   Restoring /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj
00:00:01 verbose #9 >   Starting restore process.
00:00:02 verbose #10 >   Total time taken: 0 milliseconds
00:00:02 verbose #11 >   Restored /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj (in 314 ms).
00:00:02 verbose #12 > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj]
00:00:13 verbose #13 >   DirTreeHtml -> /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/bin/Release/net9.0/linux-x64/DirTreeHtml.dll
00:00:13 verbose #14 >   DirTreeHtml -> /home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist
00:00:13   debug #15 runtime.execute_with_options_async / { exit_code = 0; output_length = 1129 }
In [ ]:
{ pwsh ../lib/spiral/build.ps1 -sequential 1 } | Invoke-Block
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00   debug #1 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path sm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:00 verbose #2 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "sm'.dib", "--retries", "3"])) }
00:00:00 verbose #3 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:00:00 verbose #4 >     "repl",
00:00:00 verbose #5 >     "--exit-after-run",
00:00:00 verbose #6 >     "--run",
00:00:00 verbose #7 >     "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib",
00:00:00 verbose #8 >     "--output-path",
00:00:00 verbose #9 >     "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb",
00:00:00 verbose #10 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:01 verbose #11 > >
00:00:01 verbose #12 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:01 verbose #13 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:01 verbose #14 > > │ # sm'                                                                        │
00:00:01 verbose #15 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:04 verbose #16 > >
00:00:04 verbose #17 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:04 verbose #18 > > //// test
00:00:04 verbose #19 > >
00:00:04 verbose #20 > > open testing
00:00:05 verbose #21 > >
00:00:05 verbose #22 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #23 > > open rust
00:00:05 verbose #24 > > open rust_operators
00:00:05 verbose #25 > > open real_sm'
00:00:05 verbose #26 > >
00:00:05 verbose #27 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #28 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #29 > > │ ## rust                                                                      │
00:00:05 verbose #30 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #31 > >
00:00:05 verbose #32 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #33 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #34 > > │ ### std_string                                                               │
00:00:05 verbose #35 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #36 > >
00:00:05 verbose #37 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #38 > > //// real
00:00:05 verbose #39 > >
00:00:05 verbose #40 > > nominal std_string =
00:00:05 verbose #41 > >     `(
00:00:05 verbose #42 > >         backend_switch `(()) `({}) {
00:00:05 verbose #43 > >             Fsharp =
00:00:05 verbose #44 > >                 (fun () =>
00:00:05 verbose #45 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:05 verbose #46 > > Fable.Core.Emit(\"std::string::String\")>]]\n#endif\ntype std_string_String =
00:00:05 verbose #47 > > class end"
00:00:05 verbose #48 > >                 ) : () -> ()
00:00:05 verbose #49 > >         }
00:00:05 verbose #50 > >         $'' : $'std_string_String'
00:00:05 verbose #51 > >     )
00:00:05 verbose #52 > >
00:00:05 verbose #53 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #54 > > type std_string = real_sm'.std_string
00:00:05 verbose #55 > >
00:00:05 verbose #56 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #57 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #58 > > │ ### from_std_string                                                          │
00:00:05 verbose #59 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #60 > >
00:00:05 verbose #61 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #62 > > //// real
00:00:05 verbose #63 > >
00:00:05 verbose #64 > > inl from_std_string (str : std_string) : string =
00:00:05 verbose #65 > >     open rust
00:00:05 verbose #66 > >     rust.emit_expr `std_string `string str
00:00:05 verbose #67 > > ($'"fable_library_rust::String_::fromString($0)"' : string)
00:00:05 verbose #68 > >
00:00:05 verbose #69 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #70 > > inl from_std_string (str : std_string) : string =
00:00:05 verbose #71 > >     real real_sm'.from_std_string str
00:00:05 verbose #72 > >
00:00:05 verbose #73 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #74 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #75 > > │ ## sm'                                                                       │
00:00:05 verbose #76 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #77 > >
00:00:05 verbose #78 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #79 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #80 > > │ ### symbol_to_string                                                         │
00:00:05 verbose #81 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #82 > >
00:00:05 verbose #83 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #84 > > //// real
00:00:05 verbose #85 > >
00:00:05 verbose #86 > > inl symbol_to_string forall t {symbol}. : string =
00:00:05 verbose #87 > >     // inl x = real_core.type_lit_to_lit `t
00:00:05 verbose #88 > >     // inl x = real_core.type_to_symbol `t
00:00:05 verbose #89 > >     // inl x = real_core.type_lit_to_lit `t
00:00:05 verbose #90 > >     // !!!!SymbolToString (`(`t))
00:00:05 verbose #91 > >     inl x = real_core.type_to_symbol `t
00:00:05 verbose #92 > >     !!!!SymbolToString (x)
00:00:05 verbose #93 > >
00:00:05 verbose #94 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #95 > > inl symbol_to_string forall t {symbol}. (x : t) : string =
00:00:05 verbose #96 > >     real symbol_to_string `t
00:00:05 verbose #97 > >
00:00:05 verbose #98 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #99 > > //// test
00:00:05 verbose #100 > >
00:00:05 verbose #101 > > .test
00:00:05 verbose #102 > > |> symbol_to_string
00:00:05 verbose #103 > > |> _assert_eq "test"
00:00:06 verbose #104 > >
00:00:06 verbose #105 > > ╭─[ 539.31ms - stdout ]────────────────────────────────────────────────────────╮
00:00:06 verbose #106 > > │ __assert_eq / actual: "test" / expected: "test"                              │
00:00:06 verbose #107 > > │                                                                              │
00:00:06 verbose #108 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #109 > >
00:00:06 verbose #110 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #111 > > //// test
00:00:06 verbose #112 > > //// real
00:00:06 verbose #113 > >
00:00:06 verbose #114 > > open testing
00:00:06 verbose #115 > > inl x = .test
00:00:06 verbose #116 > > inl x = symbol_to_string `(`x)
00:00:06 verbose #117 > > _assert_eq `string "test" x
00:00:06 verbose #118 > >
00:00:06 verbose #119 > > ╭─[ 94.94ms - stdout ]─────────────────────────────────────────────────────────╮
00:00:06 verbose #120 > > │ __assert_eq / actual: "test" / expected: "test"                              │
00:00:06 verbose #121 > > │                                                                              │
00:00:06 verbose #122 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #123 > >
00:00:06 verbose #124 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #125 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #126 > > │ ### index                                                                    │
00:00:06 verbose #127 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #128 > >
00:00:06 verbose #129 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #130 > > inl index i (str : string) : char =
00:00:06 verbose #131 > >     sm.index str i
00:00:06 verbose #132 > >
00:00:06 verbose #133 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #134 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #135 > > │ ### length                                                                   │
00:00:06 verbose #136 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #137 > >
00:00:06 verbose #138 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #139 > > inl length forall dim {int}. (input : string) : dim =
00:00:06 verbose #140 > >     input |> sm.length
00:00:06 verbose #141 > >
00:00:06 verbose #142 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #143 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #144 > > │ ### to_char_array                                                            │
00:00:06 verbose #145 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #146 > >
00:00:06 verbose #147 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #148 > > inl to_char_array (str : string) : array_base char =
00:00:06 verbose #149 > >     am.init (str |> length) (fun i => str |> index i)
00:00:06 verbose #150 > >     |> fun (a x : _ int _) => x
00:00:06 verbose #151 > >
00:00:06 verbose #152 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #153 > > //// test
00:00:06 verbose #154 > >
00:00:06 verbose #155 > > "abc"
00:00:06 verbose #156 > > |> to_char_array
00:00:06 verbose #157 > > |> _assert_eq' ;[[ 'a'; 'b'; 'c' ]]
00:00:07 verbose #158 > >
00:00:07 verbose #159 > > ╭─[ 439.51ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 verbose #160 > > │ __assert_eq' / actual: [|'a'; 'b'; 'c'|] / expected: [|'a'; 'b'; 'c'|]       │
00:00:07 verbose #161 > > │                                                                              │
00:00:07 verbose #162 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #163 > >
00:00:07 verbose #164 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 verbose #165 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 verbose #166 > > │ ### to_char_list                                                             │
00:00:07 verbose #167 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #168 > >
00:00:07 verbose #169 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #170 > > inl to_char_list (str : string) : list char =
00:00:07 verbose #171 > >     listm.init (str |> length) (fun (i : i64) => str |> index i)
00:00:07 verbose #172 > >
00:00:07 verbose #173 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #174 > > //// test
00:00:07 verbose #175 > >
00:00:07 verbose #176 > > "abc"
00:00:07 verbose #177 > > |> to_char_list
00:00:07 verbose #178 > > |> _assert_eq [[ 'a'; 'b'; 'c' ]]
00:00:07 verbose #179 > >
00:00:07 verbose #180 > > ╭─[ 200.43ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 verbose #181 > > │ __assert_eq / actual: UH0_1 ('a', UH0_1 ('b', UH0_1 ('c', UH0_0))) /         │
00:00:07 verbose #182 > > │ expected: UH0_1 ('a', UH0_1 ('b', UH0_1 ('c', UH0_0)))                       │
00:00:07 verbose #183 > > │                                                                              │
00:00:07 verbose #184 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #185 > >
00:00:07 verbose #186 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 verbose #187 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 verbose #188 > > │ ### is_empty                                                                 │
00:00:07 verbose #189 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #190 > >
00:00:07 verbose #191 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #192 > > inl is_empty (input : string) : bool =
00:00:07 verbose #193 > >     length input = 0i32
00:00:07 verbose #194 > >
00:00:07 verbose #195 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 verbose #196 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 verbose #197 > > │ ### slice                                                                    │
00:00:07 verbose #198 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #199 > >
00:00:07 verbose #200 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #201 > > inl slice from to s : string =
00:00:07 verbose #202 > >     sm.slice s { from to }
00:00:07 verbose #203 > >
00:00:07 verbose #204 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 verbose #205 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 verbose #206 > > │ ### format_debug                                                             │
00:00:07 verbose #207 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #208 > >
00:00:07 verbose #209 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #210 > > //// real
00:00:07 verbose #211 > >
00:00:07 verbose #212 > > inl format_debug forall t. (x : t) : string =
00:00:07 verbose #213 > >     backend_switch `string `({}) {
00:00:07 verbose #214 > >         Fsharp = (fun () => $'$"%A{!x}"' : string) : () -> string
00:00:07 verbose #215 > >         Python = (fun () => $'f"{!x}"' : string) : () -> string
00:00:07 verbose #216 > >     }
00:00:07 verbose #217 > >
00:00:07 verbose #218 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #219 > > inl format_debug forall t. (x : t) : string =
00:00:07 verbose #220 > >     real format_debug `t x
00:00:07 verbose #221 > >
00:00:07 verbose #222 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #223 > > //// test
00:00:07 verbose #224 > >
00:00:07 verbose #225 > > { c = "1"; a = "2"; b = "3" }
00:00:07 verbose #226 > > |> format_debug
00:00:07 verbose #227 > > |> _assert_eq "struct (\"1\", \"2\", \"3\")"
00:00:07 verbose #228 > >
00:00:07 verbose #229 > > ╭─[ 110.47ms - stdout ]────────────────────────────────────────────────────────╮
00:00:07 verbose #230 > > │ __assert_eq / actual: "struct ("1", "2", "3")" / expected: "struct ("1",     │
00:00:07 verbose #231 > > │ "2", "3")"                                                                   │
00:00:07 verbose #232 > > │                                                                              │
00:00:07 verbose #233 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #234 > >
00:00:07 verbose #235 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:07 verbose #236 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:07 verbose #237 > > │ ### format_pretty                                                            │
00:00:07 verbose #238 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:07 verbose #239 > >
00:00:07 verbose #240 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:07 verbose #241 > > //// real
00:00:07 verbose #242 > >
00:00:07 verbose #243 > > inl format_pretty forall t. (x : t) : string =
00:00:07 verbose #244 > >     run_target_args `string `t (fun () => x) function
00:00:07 verbose #245 > >         | Rust _ => fun x =>
00:00:07 verbose #246 > >             open rust
00:00:07 verbose #247 > >             inl result = rust.emit_expr `t `std_string x
00:00:07 verbose #248 > > ($'"format\!(\\\"{:#?}\\\", $0)"' : string)
00:00:07 verbose #249 > >             from_std_string result
00:00:07 verbose #250 > >         | _ => fun _ => format_debug `t x
00:00:08 verbose #251 > >
00:00:08 verbose #252 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #253 > > inl format_pretty forall t. (x : t) : string =
00:00:08 verbose #254 > >     real real_sm'.format_pretty `t x
00:00:08 verbose #255 > >
00:00:08 verbose #256 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 verbose #257 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 verbose #258 > > │ ### prim                                                                     │
00:00:08 verbose #259 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 verbose #260 > >
00:00:08 verbose #261 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #262 > > inl prim x = real
00:00:08 verbose #263 > >     match x with
00:00:08 verbose #264 > >     | (x : i8) | (x : i16) | (x : i32) | (x : i64) => "%d", x
00:00:08 verbose #265 > >     | (x : u8) | (x : u16) | (x : u32) | (x : u64) => "%u", x
00:00:08 verbose #266 > >     | (x : f32) | (x : f64) => "%f", x
00:00:08 verbose #267 > >     | (x : string) => "%s", x
00:00:08 verbose #268 > >     | (x : char) => "%c", x
00:00:08 verbose #269 > >
00:00:08 verbose #270 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 verbose #271 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 verbose #272 > > │ ### printable                                                                │
00:00:08 verbose #273 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 verbose #274 > >
00:00:08 verbose #275 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #276 > > //// real
00:00:08 verbose #277 > >
00:00:08 verbose #278 > > prototype printable t : t -> ()
00:00:08 verbose #279 > >
00:00:08 verbose #280 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 verbose #281 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 verbose #282 > > │ ### real_format                                                              │
00:00:08 verbose #283 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 verbose #284 > >
00:00:08 verbose #285 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #286 > > //// real
00:00:08 verbose #287 > >
00:00:08 verbose #288 > > inl real_format forall t. (x : t) : string =
00:00:08 verbose #289 > >     inl result = mut `string (join "")
00:00:08 verbose #290 > >     inl rec write x =
00:00:08 verbose #291 > >         inl p ((a : string), b) =
00:00:08 verbose #292 > >             inl s : string =
00:00:08 verbose #293 > >                 backend_switch `string `({}) {
00:00:08 verbose #294 > >                     Fsharp =
00:00:08 verbose #295 > >                         (fun () =>
00:00:08 verbose #296 > >                             match b with
00:00:08 verbose #297 > >                             | (_ : f32) | (_ : f64) => $'$"%+.6f{!b}"' : string
00:00:08 verbose #298 > >                             | _ => $'$"{!b}"' : string
00:00:08 verbose #299 > >                         ) : () -> string
00:00:08 verbose #300 > >                     Python =
00:00:08 verbose #301 > >                         (fun () =>
00:00:08 verbose #302 > >                             match b with
00:00:08 verbose #303 > >                             | (_ : f32) | (_ : f64) => $'"{:.6f}".format(!b)' :
00:00:08 verbose #304 > > string
00:00:08 verbose #305 > >                             | _ => $'f"{!b}"' : string
00:00:08 verbose #306 > >                         ) : () -> string
00:00:08 verbose #307 > >                 }
00:00:08 verbose #308 > >             exec_unit ((fun () => result <- (+.) `string ((~*) `string result)
00:00:08 verbose #309 > > s) : () -> ())
00:00:08 verbose #310 > >
00:00:08 verbose #311 > >         match x with // According to Bing it shouldn't matter whether these are
00:00:08 verbose #312 > > %d or %lld in printf.
00:00:08 verbose #313 > >         | () => ()
00:00:08 verbose #314 > >         | (x : i8) | (x : i16) | (x : i32) | (x : i64) => p ("%d", x)
00:00:08 verbose #315 > >         | (x : u8) | (x : u16) | (x : u32) | (x : u64) => p ("%u", x)
00:00:08 verbose #316 > >         | (x : f32) | (x : f64) => p ("%f", x)
00:00:08 verbose #317 > >         | (x : string) => p ("%s", x)
00:00:08 verbose #318 > >         | (x : char) => p ("%c", x)
00:00:08 verbose #319 > >         | (x : bool) => p ("%s", if x then "true" else "false")
00:00:08 verbose #320 > >         | (a,b) => write a . write ", " . write b
00:00:08 verbose #321 > >         | {} as x =>
00:00:08 verbose #322 > >             write "{ "
00:00:08 verbose #323 > >             inl _result =
00:00:08 verbose #324 > >                 real_core.record_fold
00:00:08 verbose #325 > >                     fun { state = separator key value } =>
00:00:08 verbose #326 > >                         write separator
00:00:08 verbose #327 > >                         write (symbol_to_string `(`key)) . write " = " . write
00:00:08 verbose #328 > > value
00:00:08 verbose #329 > >                         "; "
00:00:08 verbose #330 > >                     () x
00:00:08 verbose #331 > >             write " }"
00:00:08 verbose #332 > >         | x when real_core.symbol_is x => write (symbol_to_string `(`x))
00:00:08 verbose #333 > >         | x when real_core.function_is x => write (x ())
00:00:08 verbose #334 > >         | x when real_core.union_is x =>
00:00:08 verbose #335 > >             if real_core.prototype_has `(`x) printable then printable `(`x) x
00:00:08 verbose #336 > >             else
00:00:08 verbose #337 > >                 write (format_debug `(`x) x)
00:00:08 verbose #338 > >                 // real_core.unbox x (fun (k, v) =>
00:00:08 verbose #339 > >                 //     write k
00:00:08 verbose #340 > >                 //     match v with
00:00:08 verbose #341 > >                 //     | () => ()
00:00:08 verbose #342 > >                 //     | _ => write "(" . write v . write ")"
00:00:08 verbose #343 > >                 //     )
00:00:08 verbose #344 > >         | x when real_core.nominal_is x =>
00:00:08 verbose #345 > >             if real_core.prototype_has `(`x) printable then printable `(`x) x
00:00:08 verbose #346 > >             // elif layout_is x then write *x // TODO: Deal with all the layout
00:00:08 verbose #347 > > type cases.
00:00:08 verbose #348 > >             else write (format_pretty `(`x) x)
00:00:08 verbose #349 > >         | x => write (format_debug `(`x) x)
00:00:08 verbose #350 > >     write x
00:00:08 verbose #351 > >     (~*) `string result
00:00:08 verbose #352 > >
00:00:08 verbose #353 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 verbose #354 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 verbose #355 > > │ ### format                                                                   │
00:00:08 verbose #356 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 verbose #357 > >
00:00:08 verbose #358 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #359 > > inl format forall t. (x : t) : string =
00:00:08 verbose #360 > >     real real_format `t x
00:00:08 verbose #361 > >
00:00:08 verbose #362 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #363 > > //// test
00:00:08 verbose #364 > > ///! fsharp
00:00:08 verbose #365 > > ////! cuda
00:00:08 verbose #366 > > ////! rust
00:00:08 verbose #367 > > ////! typescript
00:00:08 verbose #368 > > ////! python
00:00:08 verbose #369 > >
00:00:08 verbose #370 > > ("1", "2", [["3"; "4"]], { b = "5"; c = "6"; a = fun () => "7" })
00:00:08 verbose #371 > > |> format
00:00:08 verbose #372 > > |> _assert_eq "1, 2, UH0_1 (\"3\", UH0_1 (\"4\", UH0_0)), { b = 5; c = 6; a = 7
00:00:08 verbose #373 > > }"
00:00:08 verbose #374 > >
00:00:08 verbose #375 > > ╭─[ 273.23ms - stdout ]────────────────────────────────────────────────────────╮
00:00:08 verbose #376 > > │ __assert_eq / actual: "1, 2, UH0_1 ("3", UH0_1 ("4", UH0_0)), { b = 5; c =   │
00:00:08 verbose #377 > > │ 6; a = 7 }" / expected: "1, 2, UH0_1 ("3", UH0_1 ("4", UH0_0)), { b = 5; c = │
00:00:08 verbose #378 > > │ 6; a = 7 }"                                                                  │
00:00:08 verbose #379 > > │                                                                              │
00:00:08 verbose #380 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 verbose #381 > >
00:00:08 verbose #382 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:08 verbose #383 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:08 verbose #384 > > │ ### concat_array_trailing                                                    │
00:00:08 verbose #385 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:08 verbose #386 > >
00:00:08 verbose #387 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #388 > > inl concat_array_trailing (separator : string) (input : a i32 string) =
00:00:08 verbose #389 > >     ("", input)
00:00:08 verbose #390 > >     ||> am.fold fun acc (x : string) =>
00:00:08 verbose #391 > >         $'!acc + !x + !separator + ""'
00:00:08 verbose #392 > >
00:00:08 verbose #393 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:08 verbose #394 > > //// test
00:00:08 verbose #395 > > ///! typescript
00:00:08 verbose #396 > >
00:00:08 verbose #397 > > ;[[
00:00:08 verbose #398 > >     "1"
00:00:08 verbose #399 > >     "2"
00:00:08 verbose #400 > >     "3"
00:00:08 verbose #401 > > ]]
00:00:08 verbose #402 > > |> fun x =>
00:00:08 verbose #403 > >     inl code = (a x : _ i32 _) |> concat_array_trailing "\n"
00:00:08 verbose #404 > >     code
00:00:08 verbose #405 > >     |> _assert_eq "1\n2\n3\n"
00:00:15 verbose #406 > >
00:00:15 verbose #407 > > ╭─[ 6.52s - return value ]─────────────────────────────────────────────────────╮
00:00:15 verbose #408 > > │ __assert_eq / actual: 1                                                      │
00:00:15 verbose #409 > > │ 2                                                                            │
00:00:15 verbose #410 > > │ 3                                                                            │
00:00:15 verbose #411 > > │  / expected: 1                                                               │
00:00:15 verbose #412 > > │ 2                                                                            │
00:00:15 verbose #413 > > │ 3                                                                            │
00:00:15 verbose #414 > > │                                                                              │
00:00:15 verbose #415 > > │                                                                              │
00:00:15 verbose #416 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 verbose #417 > >
00:00:15 verbose #418 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:15 verbose #419 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:15 verbose #420 > > │ ### concat_list_trailing                                                     │
00:00:15 verbose #421 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:15 verbose #422 > >
00:00:15 verbose #423 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 verbose #424 > > inl concat_list_trailing separator input =
00:00:15 verbose #425 > >     ("", input)
00:00:15 verbose #426 > >     ||> listm.fold fun acc (x : string) =>
00:00:15 verbose #427 > >         $'!acc + !x + !separator + ""'
00:00:15 verbose #428 > >
00:00:15 verbose #429 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:15 verbose #430 > > //// test
00:00:15 verbose #431 > > ///! rust
00:00:15 verbose #432 > >
00:00:15 verbose #433 > > [[
00:00:15 verbose #434 > >     "1"
00:00:15 verbose #435 > >     "2"
00:00:15 verbose #436 > >     "3"
00:00:15 verbose #437 > > ]]
00:00:15 verbose #438 > > |> fun x =>
00:00:15 verbose #439 > >     inl code = (x : _) |> concat_list_trailing "\n"
00:00:15 verbose #440 > >     code
00:00:15 verbose #441 > >     |> _assert_eq "1\n2\n3\n"
00:00:22 verbose #442 > >
00:00:22 verbose #443 > > ╭─[ 6.78s - return value ]─────────────────────────────────────────────────────╮
00:00:22 verbose #444 > > │ __assert_eq / actual: "1                                                     │
00:00:22 verbose #445 > > │ 2                                                                            │
00:00:22 verbose #446 > > │ 3                                                                            │
00:00:22 verbose #447 > > │ " / expected: "1                                                             │
00:00:22 verbose #448 > > │ 2                                                                            │
00:00:22 verbose #449 > > │ 3                                                                            │
00:00:22 verbose #450 > > │ "                                                                            │
00:00:22 verbose #451 > > │                                                                              │
00:00:22 verbose #452 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 verbose #453 > >
00:00:22 verbose #454 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:22 verbose #455 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:22 verbose #456 > > │ ### concat_list_heap_trailing                                                │
00:00:22 verbose #457 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:22 verbose #458 > >
00:00:22 verbose #459 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 verbose #460 > > inl concat_list_heap_trailing separator input =
00:00:22 verbose #461 > >     inl separator = join separator
00:00:22 verbose #462 > >     ("", input)
00:00:22 verbose #463 > >     ||> listm.fold fun acc (x : string) =>
00:00:22 verbose #464 > >         $'$"{!acc}{!x}{!separator}"'
00:00:22 verbose #465 > >
00:00:22 verbose #466 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:22 verbose #467 > > //// test
00:00:22 verbose #468 > > ///! rust
00:00:22 verbose #469 > >
00:00:22 verbose #470 > > [[
00:00:22 verbose #471 > >     "1"
00:00:22 verbose #472 > >     "2"
00:00:22 verbose #473 > >     "3"
00:00:22 verbose #474 > > ]]
00:00:22 verbose #475 > > |> fun x =>
00:00:22 verbose #476 > >     inl code = (x : _) |> concat_list_heap_trailing "\n"
00:00:22 verbose #477 > >     code
00:00:22 verbose #478 > >     |> _assert_eq "1\n2\n3\n"
00:00:28 verbose #479 > >
00:00:28 verbose #480 > > ╭─[ 6.65s - return value ]─────────────────────────────────────────────────────╮
00:00:28 verbose #481 > > │ __assert_eq / actual: "1                                                     │
00:00:28 verbose #482 > > │ 2                                                                            │
00:00:28 verbose #483 > > │ 3                                                                            │
00:00:28 verbose #484 > > │ " / expected: "1                                                             │
00:00:28 verbose #485 > > │ 2                                                                            │
00:00:28 verbose #486 > > │ 3                                                                            │
00:00:28 verbose #487 > > │ "                                                                            │
00:00:28 verbose #488 > > │                                                                              │
00:00:28 verbose #489 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:28 verbose #490 > >
00:00:28 verbose #491 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:28 verbose #492 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:28 verbose #493 > > │ ### ellipsis                                                                 │
00:00:28 verbose #494 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:28 verbose #495 > >
00:00:28 verbose #496 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:28 verbose #497 > > inl ellipsis (max : i32) (s : string) =
00:00:28 verbose #498 > >     if sm.length s <= max
00:00:28 verbose #499 > >     then s
00:00:28 verbose #500 > >     else s |> slice 0 (max - 1) |> fun x => $'!x + "..."'
00:00:29 verbose #501 > >
00:00:29 verbose #502 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:29 verbose #503 > > //// test
00:00:29 verbose #504 > >
00:00:29 verbose #505 > > "12345"
00:00:29 verbose #506 > > |> ellipsis 2
00:00:29 verbose #507 > > |> _assert_eq "12..."
00:00:29 verbose #508 > >
00:00:29 verbose #509 > > "12345"
00:00:29 verbose #510 > > |> ellipsis 4
00:00:29 verbose #511 > > |> _assert_eq "1234..."
00:00:29 verbose #512 > >
00:00:29 verbose #513 > > ╭─[ 101.17ms - stdout ]────────────────────────────────────────────────────────╮
00:00:29 verbose #514 > > │ __assert_eq / actual: "12..." / expected: "12..."                            │
00:00:29 verbose #515 > > │ __assert_eq / actual: "1234..." / expected: "1234..."                        │
00:00:29 verbose #516 > > │                                                                              │
00:00:29 verbose #517 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:29 verbose #518 > >
00:00:29 verbose #519 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:29 verbose #520 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:29 verbose #521 > > │ ## fsharp                                                                    │
00:00:29 verbose #522 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:29 verbose #523 > >
00:00:29 verbose #524 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:29 verbose #525 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:29 verbose #526 > > │ ### ends_with                                                                │
00:00:29 verbose #527 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:29 verbose #528 > >
00:00:29 verbose #529 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:29 verbose #530 > > inl ends_with (value : string) (s : string) : bool =
00:00:29 verbose #531 > >     $'!s.EndsWith !value '
00:00:29 verbose #532 > >
00:00:29 verbose #533 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:29 verbose #534 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:29 verbose #535 > > │ ### last_index_of                                                            │
00:00:29 verbose #536 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:29 verbose #537 > >
00:00:29 verbose #538 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:29 verbose #539 > > inl last_index_of (search : string) (s : string) : i32 =
00:00:29 verbose #540 > >     $'!s.LastIndexOf !search '
00:00:29 verbose #541 > >
00:00:29 verbose #542 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:29 verbose #543 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:29 verbose #544 > > │ ### index_of                                                                 │
00:00:29 verbose #545 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:29 verbose #546 > >
00:00:29 verbose #547 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:29 verbose #548 > > inl index_of (search : string) (s : string) : i32 =
00:00:29 verbose #549 > >     $'!s.IndexOf !search '
00:00:29 verbose #550 > >
00:00:29 verbose #551 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:29 verbose #552 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:29 verbose #553 > > │ ### replicate                                                                │
00:00:29 verbose #554 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:29 verbose #555 > >
00:00:29 verbose #556 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:29 verbose #557 > > inl replicate (n : i32) (s : string) : string =
00:00:29 verbose #558 > >     backend_switch {
00:00:29 verbose #559 > >         Fsharp = fun () => s |> $'String.replicate' n : string
00:00:29 verbose #560 > >         Python = fun () => $'!s * !n ' : string
00:00:29 verbose #561 > >     }
00:00:29 verbose #562 > >
00:00:29 verbose #563 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:29 verbose #564 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:29 verbose #565 > > │ ### obj_to_string                                                            │
00:00:29 verbose #566 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:29 verbose #567 > >
00:00:29 verbose #568 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:29 verbose #569 > > inl obj_to_string x : string =
00:00:29 verbose #570 > >     backend_switch {
00:00:29 verbose #571 > >         Fsharp = fun () => x |> $'_.ToString()' : string
00:00:29 verbose #572 > >         Python = fun () => $'str(!x)' : string
00:00:29 verbose #573 > >     }
00:00:29 verbose #574 > >
00:00:29 verbose #575 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:29 verbose #576 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:29 verbose #577 > > │ ### pad_left                                                                 │
00:00:29 verbose #578 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:29 verbose #579 > >
00:00:29 verbose #580 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:29 verbose #581 > > inl pad_left (total_width : i32) (padding_char : char) (s : string) : string =
00:00:29 verbose #582 > >     backend_switch {
00:00:29 verbose #583 > >         Fsharp = fun () => $'!s.PadLeft (!total_width, !padding_char)' : string
00:00:29 verbose #584 > >         Python = fun () =>
00:00:29 verbose #585 > >             inl padding = padding_char |> obj_to_string |> replicate
00:00:29 verbose #586 > > (total_width - length s)
00:00:29 verbose #587 > >             padding +. s
00:00:29 verbose #588 > >     }
00:00:29 verbose #589 > >
00:00:29 verbose #590 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:29 verbose #591 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:29 verbose #592 > > │ ### pad_right                                                                │
00:00:29 verbose #593 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:29 verbose #594 > >
00:00:29 verbose #595 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:29 verbose #596 > > inl pad_right (total_width : i32) (padding_char : char) (s : string) : string =
00:00:29 verbose #597 > >     $'!s.PadRight (!total_width, !padding_char)'
00:00:29 verbose #598 > >
00:00:29 verbose #599 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:29 verbose #600 > > //// test
00:00:29 verbose #601 > >
00:00:29 verbose #602 > > "123"
00:00:29 verbose #603 > > |> pad_right 6 ' '
00:00:29 verbose #604 > > |> _assert_eq "123   "
00:00:29 verbose #605 > >
00:00:29 verbose #606 > > ╭─[ 134.07ms - stdout ]────────────────────────────────────────────────────────╮
00:00:29 verbose #607 > > │ __assert_eq / actual: "123   " / expected: "123   "                          │
00:00:29 verbose #608 > > │                                                                              │
00:00:29 verbose #609 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:29 verbose #610 > >
00:00:29 verbose #611 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:29 verbose #612 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:29 verbose #613 > > │ ### starts_with                                                              │
00:00:29 verbose #614 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:29 verbose #615 > >
00:00:29 verbose #616 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:29 verbose #617 > > inl starts_with (value : string) (s : string) : bool =
00:00:29 verbose #618 > >     backend_switch {
00:00:29 verbose #619 > >         Fsharp = fun () => $'!s.StartsWith !value ' : bool
00:00:29 verbose #620 > >         Python = fun () => $'!s.startswith(!value)' : bool
00:00:29 verbose #621 > >     }
00:00:30 verbose #622 > >
00:00:30 verbose #623 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:30 verbose #624 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:30 verbose #625 > > │ ### is_white_space                                                           │
00:00:30 verbose #626 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:30 verbose #627 > >
00:00:30 verbose #628 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:30 verbose #629 > > inl is_white_space (c : char) : bool =
00:00:30 verbose #630 > >     c |> $'System.Char.IsWhiteSpace'
00:00:30 verbose #631 > >
00:00:30 verbose #632 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:30 verbose #633 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:30 verbose #634 > > │ ### substring                                                                │
00:00:30 verbose #635 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:30 verbose #636 > >
00:00:30 verbose #637 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:30 verbose #638 > > inl substring (start : i32) (len : i32) (str : string) : string =
00:00:30 verbose #639 > >     $'!str.Substring (!start, !len)'
00:00:30 verbose #640 > >
00:00:30 verbose #641 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:30 verbose #642 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:30 verbose #643 > > │ ### to_lower                                                                 │
00:00:30 verbose #644 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:30 verbose #645 > >
00:00:30 verbose #646 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:30 verbose #647 > > inl to_lower (input : string) : string =
00:00:30 verbose #648 > >     backend_switch {
00:00:30 verbose #649 > >         Fsharp = fun () => $'!input.ToLower' () : string
00:00:30 verbose #650 > >         Python = fun () => $'!input.lower()' : string
00:00:30 verbose #651 > >     }
00:00:30 verbose #652 > >
00:00:30 verbose #653 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:30 verbose #654 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:30 verbose #655 > > │ ### to_upper                                                                 │
00:00:30 verbose #656 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:30 verbose #657 > >
00:00:30 verbose #658 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:30 verbose #659 > > inl to_upper (input : string) : string =
00:00:30 verbose #660 > >     $'!input.ToUpper' ()
00:00:30 verbose #661 > >
00:00:30 verbose #662 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:30 verbose #663 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:30 verbose #664 > > │ ### char_to_upper                                                            │
00:00:30 verbose #665 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:30 verbose #666 > >
00:00:30 verbose #667 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:30 verbose #668 > > inl char_to_upper (input : char) : char =
00:00:30 verbose #669 > >     $'System.Char.ToUpper !input '
00:00:30 verbose #670 > >
00:00:30 verbose #671 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:30 verbose #672 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:30 verbose #673 > > │ ### string_builder                                                           │
00:00:30 verbose #674 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:30 verbose #675 > >
00:00:30 verbose #676 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:30 verbose #677 > > nominal string_builder = $'System.Text.StringBuilder'
00:00:30 verbose #678 > >
00:00:30 verbose #679 > > inl string_builder (initial : string) : string_builder =
00:00:30 verbose #680 > >     initial |> $'`string_builder '
00:00:30 verbose #681 > >
00:00:30 verbose #682 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:30 verbose #683 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:30 verbose #684 > > │ ### builder_append                                                           │
00:00:30 verbose #685 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:30 verbose #686 > >
00:00:30 verbose #687 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:30 verbose #688 > > inl builder_append (item : string) (sb : string_builder) : string_builder =
00:00:30 verbose #689 > >     ($'!sb.Append' item : string_builder) |> ignore
00:00:30 verbose #690 > >     sb
00:00:30 verbose #691 > >
00:00:30 verbose #692 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:30 verbose #693 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:30 verbose #694 > > │ ### builder_replace                                                          │
00:00:30 verbose #695 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:30 verbose #696 > >
00:00:30 verbose #697 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:30 verbose #698 > > inl builder_replace (old : string) (new : string) (sb : string_builder) :
00:00:30 verbose #699 > > string_builder =
00:00:30 verbose #700 > >     ($'!sb.Replace (!old, !new)' : string_builder) |> ignore
00:00:30 verbose #701 > >     sb
00:00:31 verbose #702 > >
00:00:31 verbose #703 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:31 verbose #704 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:31 verbose #705 > > │ ### builder_insert                                                           │
00:00:31 verbose #706 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:31 verbose #707 > >
00:00:31 verbose #708 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:31 verbose #709 > > inl builder_insert (n : i32) (s : string) (sb : string_builder) : string_builder
00:00:31 verbose #710 > > =
00:00:31 verbose #711 > >     ($'!sb.Insert (!n, !s)' : string_builder) |> ignore
00:00:31 verbose #712 > >     sb
00:00:31 verbose #713 > >
00:00:31 verbose #714 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:31 verbose #715 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:31 verbose #716 > > │ ### builder_clear                                                            │
00:00:31 verbose #717 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:31 verbose #718 > >
00:00:31 verbose #719 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:31 verbose #720 > > inl builder_clear (sb : string_builder) : string_builder =
00:00:31 verbose #721 > >     ($'!sb.Clear' () : string_builder) |> ignore
00:00:31 verbose #722 > >     sb
00:00:31 verbose #723 > >
00:00:31 verbose #724 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:31 verbose #725 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:31 verbose #726 > > │ ### trim                                                                     │
00:00:31 verbose #727 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:31 verbose #728 > >
00:00:31 verbose #729 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:31 verbose #730 > > inl trim (input : string) : string =
00:00:31 verbose #731 > >     $'!input.Trim' ()
00:00:31 verbose #732 > >
00:00:31 verbose #733 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:31 verbose #734 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:31 verbose #735 > > │ ### concat                                                                   │
00:00:31 verbose #736 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:31 verbose #737 > >
00:00:31 verbose #738 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:31 verbose #739 > > inl concat (a : string) (b : seq.seq' string) : string =
00:00:31 verbose #740 > >     backend_switch {
00:00:31 verbose #741 > >         Fsharp = fun () =>
00:00:31 verbose #742 > >             b |> $'String.concat' a : string
00:00:31 verbose #743 > >         Python = fun () =>
00:00:31 verbose #744 > >             $'!a.join(!b)' : string
00:00:31 verbose #745 > >     }
00:00:31 verbose #746 > >
00:00:31 verbose #747 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:31 verbose #748 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:31 verbose #749 > > │ ### trim_end                                                                 │
00:00:31 verbose #750 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:31 verbose #751 > >
00:00:31 verbose #752 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:31 verbose #753 > > inl trim_end (trim_chars : list char) (input : string) : string =
00:00:31 verbose #754 > >     inl trim_chars = trim_chars |> listm'.box
00:00:31 verbose #755 > >     backend_switch {
00:00:31 verbose #756 > >         Fsharp = fun () =>
00:00:31 verbose #757 > >             inl trim_chars = trim_chars |> listm'.to_array'
00:00:31 verbose #758 > >             $'!input.TrimEnd !trim_chars ' : string
00:00:31 verbose #759 > >         Python = fun () =>
00:00:31 verbose #760 > >             inl trim_chars = trim_chars |> listm'.map obj_to_string |>
00:00:31 verbose #761 > > seq.of_list' |> concat ""
00:00:31 verbose #762 > >             $'!input.rstrip(!trim_chars)' : string
00:00:31 verbose #763 > >     }
00:00:31 verbose #764 > >
00:00:31 verbose #765 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:31 verbose #766 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:31 verbose #767 > > │ ### trim_start                                                               │
00:00:31 verbose #768 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:31 verbose #769 > >
00:00:31 verbose #770 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:31 verbose #771 > > inl trim_start (trim_chars : list char) (input : string) : string =
00:00:31 verbose #772 > >     inl trim_chars = trim_chars |> listm'.box
00:00:31 verbose #773 > >     backend_switch {
00:00:31 verbose #774 > >         Fsharp = fun () =>
00:00:31 verbose #775 > >             inl trim_chars = trim_chars |> listm'.to_array'
00:00:31 verbose #776 > >             $'!input.TrimStart !trim_chars ' : string
00:00:31 verbose #777 > >         Python = fun () =>
00:00:31 verbose #778 > >             inl trim_chars = trim_chars |> listm'.map obj_to_string |>
00:00:31 verbose #779 > > seq.of_list' |> concat ""
00:00:31 verbose #780 > >             $'!input.lstrip(!trim_chars)' : string
00:00:31 verbose #781 > >     }
00:00:31 verbose #782 > >
00:00:31 verbose #783 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:31 verbose #784 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:31 verbose #785 > > │ ### length'                                                                  │
00:00:31 verbose #786 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:31 verbose #787 > >
00:00:31 verbose #788 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:31 verbose #789 > > inl length' forall dim. (input : string) : dim =
00:00:31 verbose #790 > >     input |> $'String.length'
00:00:31 verbose #791 > >
00:00:31 verbose #792 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:31 verbose #793 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:31 verbose #794 > > │ ### to_string any                                                            │
00:00:31 verbose #795 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:31 verbose #796 > >
00:00:31 verbose #797 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:31 verbose #798 > > instance to_string any =
00:00:31 verbose #799 > >     obj_to_string
00:00:31 verbose #800 > >
00:00:31 verbose #801 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:31 verbose #802 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:31 verbose #803 > > │ ### replace                                                                  │
00:00:31 verbose #804 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:31 verbose #805 > >
00:00:31 verbose #806 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:31 verbose #807 > > inl replace (old_value : string) (new_value : string) (s : string) : string =
00:00:31 verbose #808 > >     $'!s.Replace (!old_value, !new_value)'
00:00:32 verbose #809 > >
00:00:32 verbose #810 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:32 verbose #811 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:32 verbose #812 > > │ ### split                                                                    │
00:00:32 verbose #813 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 verbose #814 > >
00:00:32 verbose #815 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:32 verbose #816 > > inl split (separator : string) (str : string) : array_base string =
00:00:32 verbose #817 > >     backend_switch {
00:00:32 verbose #818 > >         Fsharp = fun () => $'!str.Split !separator ' : array_base string
00:00:32 verbose #819 > >         Python = fun () => $'!str.split(!separator)' : array_base string
00:00:32 verbose #820 > >     }
00:00:32 verbose #821 > >
00:00:32 verbose #822 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:32 verbose #823 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:32 verbose #824 > > │ ### split_string                                                             │
00:00:32 verbose #825 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 verbose #826 > >
00:00:32 verbose #827 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:32 verbose #828 > > inl split_string (separator : array_base string) (str : string) : array_base
00:00:32 verbose #829 > > string =
00:00:32 verbose #830 > >     run_target_args (fun () => str, separator) function
00:00:32 verbose #831 > >         | Fsharp (Native) => fun str, separator => $'!str.Split (!separator,
00:00:32 verbose #832 > > System.StringSplitOptions.None)'
00:00:32 verbose #833 > >         | _ => fun str, separator => str |> split ((a separator : _ int _) |>
00:00:32 verbose #834 > > seq.of_array |> concat (join ""))
00:00:32 verbose #835 > >
00:00:32 verbose #836 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:32 verbose #837 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:32 verbose #838 > > │ ### join'                                                                    │
00:00:32 verbose #839 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 verbose #840 > >
00:00:32 verbose #841 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:32 verbose #842 > > inl join' (concat : string) (s : a int string) : string =
00:00:32 verbose #843 > >     $'System.String.Join (!concat, !s)'
00:00:32 verbose #844 > >
00:00:32 verbose #845 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:32 verbose #846 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:32 verbose #847 > > │ ### encoding                                                                 │
00:00:32 verbose #848 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 verbose #849 > >
00:00:32 verbose #850 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:32 verbose #851 > > nominal encoding = $'System.Text.Encoding'
00:00:32 verbose #852 > >
00:00:32 verbose #853 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:32 verbose #854 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:32 verbose #855 > > │ ### encoding_utf8                                                            │
00:00:32 verbose #856 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 verbose #857 > >
00:00:32 verbose #858 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:32 verbose #859 > > inl encoding_utf8 () : encoding =
00:00:32 verbose #860 > >     $'`encoding.UTF8'
00:00:32 verbose #861 > >
00:00:32 verbose #862 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:32 verbose #863 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:32 verbose #864 > > │ ### utf8_get_bytes                                                           │
00:00:32 verbose #865 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 verbose #866 > >
00:00:32 verbose #867 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:32 verbose #868 > > inl utf8_get_bytes (s : string) : a i32 u8 =
00:00:32 verbose #869 > >     s |> (encoding_utf8 () |> $'_.GetBytes')
00:00:32 verbose #870 > >
00:00:32 verbose #871 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:32 verbose #872 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:32 verbose #873 > > │ ### byte_to_string                                                           │
00:00:32 verbose #874 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 verbose #875 > >
00:00:32 verbose #876 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:32 verbose #877 > > inl byte_to_string (format : string) (x : u8) : string =
00:00:32 verbose #878 > >     $'!x.ToString' format
00:00:32 verbose #879 > >
00:00:32 verbose #880 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:32 verbose #881 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:32 verbose #882 > > │ ## rust                                                                      │
00:00:32 verbose #883 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 verbose #884 > >
00:00:32 verbose #885 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:32 verbose #886 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:32 verbose #887 > > │ ### str                                                                      │
00:00:32 verbose #888 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 verbose #889 > >
00:00:32 verbose #890 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:32 verbose #891 > > nominal str =
00:00:32 verbose #892 > >     `(
00:00:32 verbose #893 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:32 verbose #894 > > Fable.Core.Emit(\"str\")>]]\n#endif\ntype Str = class end"
00:00:32 verbose #895 > >         $'' : $'Str'
00:00:32 verbose #896 > >     )
00:00:32 verbose #897 > >
00:00:32 verbose #898 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:32 verbose #899 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:32 verbose #900 > > │ ### chars                                                                    │
00:00:32 verbose #901 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 verbose #902 > >
00:00:32 verbose #903 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:32 verbose #904 > > inl chars (x : rust.ref str) : rust.mut' (into_iterator char) =
00:00:32 verbose #905 > >     !\\(x, $'$"$0.chars()"')
00:00:32 verbose #906 > >
00:00:32 verbose #907 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:32 verbose #908 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:32 verbose #909 > > │ ### char_is_alphanumeric                                                     │
00:00:32 verbose #910 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 verbose #911 > >
00:00:32 verbose #912 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:32 verbose #913 > > inl char_is_alphanumeric (x : char) : bool =
00:00:32 verbose #914 > >     !\\(x, $'$"$0.is_alphanumeric()"')
00:00:32 verbose #915 > >
00:00:32 verbose #916 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:32 verbose #917 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:32 verbose #918 > > │ ### byte_slice                                                               │
00:00:32 verbose #919 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 verbose #920 > >
00:00:32 verbose #921 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:32 verbose #922 > > inl byte_slice (s : string) : rust.ref (am'.slice u8) =
00:00:32 verbose #923 > >     !\($'"b\\\"" + !s + "\\\""')
00:00:33 verbose #924 > >
00:00:33 verbose #925 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:33 verbose #926 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:33 verbose #927 > > │ ### display                                                                  │
00:00:33 verbose #928 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:33 verbose #929 > >
00:00:33 verbose #930 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:33 verbose #931 > > nominal display t =
00:00:33 verbose #932 > >     `(
00:00:33 verbose #933 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:33 verbose #934 > > Fable.Core.Emit(\"std::fmt::Display<$0>\")>]]\n#endif\ntype std_fmt_Display<'T>
00:00:33 verbose #935 > > = class end"
00:00:33 verbose #936 > >         $'' : $'std_fmt_Display<`t>'
00:00:33 verbose #937 > >     )
00:00:33 verbose #938 > >
00:00:33 verbose #939 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:33 verbose #940 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:33 verbose #941 > > │ ### base64_decode_error                                                      │
00:00:33 verbose #942 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:33 verbose #943 > >
00:00:33 verbose #944 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:33 verbose #945 > > nominal base64_decode_error =
00:00:33 verbose #946 > >     `(
00:00:33 verbose #947 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:33 verbose #948 > > Fable.Core.Emit(\"base64::DecodeError\")>]]\n#endif\ntype base64_DecodeError =
00:00:33 verbose #949 > > class end"
00:00:33 verbose #950 > >         $'' : $'base64_DecodeError'
00:00:33 verbose #951 > >     )
00:00:33 verbose #952 > >
00:00:33 verbose #953 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:33 verbose #954 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:33 verbose #955 > > │ ### borsh_io_error                                                           │
00:00:33 verbose #956 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:33 verbose #957 > >
00:00:33 verbose #958 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:33 verbose #959 > > nominal borsh_io_error =
00:00:33 verbose #960 > >     `(
00:00:33 verbose #961 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:33 verbose #962 > > Fable.Core.Emit(\"borsh::io::Error\")>]]\n#endif\ntype borsh_io_Error = class
00:00:33 verbose #963 > > end"
00:00:33 verbose #964 > >         $'' : $'borsh_io_Error'
00:00:33 verbose #965 > >     )
00:00:33 verbose #966 > >
00:00:33 verbose #967 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:33 verbose #968 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:33 verbose #969 > > │ ### utf8_error                                                               │
00:00:33 verbose #970 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:33 verbose #971 > >
00:00:33 verbose #972 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:33 verbose #973 > > nominal utf8_error =
00:00:33 verbose #974 > >     `(
00:00:33 verbose #975 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:33 verbose #976 > > Fable.Core.Emit(\"std::str::Utf8Error\")>]]\n#endif\ntype std_str_Utf8Error =
00:00:33 verbose #977 > > class end"
00:00:33 verbose #978 > >         $'' : $'std_str_Utf8Error'
00:00:33 verbose #979 > >     )
00:00:33 verbose #980 > >
00:00:33 verbose #981 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:33 verbose #982 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:33 verbose #983 > > │ ### from_utf8_error                                                          │
00:00:33 verbose #984 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:33 verbose #985 > >
00:00:33 verbose #986 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:33 verbose #987 > > nominal from_utf8_error =
00:00:33 verbose #988 > >     `(
00:00:33 verbose #989 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:33 verbose #990 > > Fable.Core.Emit(\"std::string::FromUtf8Error\")>]]\n#endif\ntype
00:00:33 verbose #991 > > std_string_FromUtf8Error = class end"
00:00:33 verbose #992 > >         $'' : $'std_string_FromUtf8Error'
00:00:33 verbose #993 > >     )
00:00:33 verbose #994 > >
00:00:33 verbose #995 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:33 verbose #996 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:33 verbose #997 > > │ ### json_value                                                               │
00:00:33 verbose #998 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:33 verbose #999 > >
00:00:33 verbose #1000 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:33 verbose #1001 > > nominal json_value =
00:00:33 verbose #1002 > >     `(
00:00:33 verbose #1003 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:33 verbose #1004 > > Fable.Core.Emit(\"serde_json::Value\")>]]\n#endif\ntype serde_json_Value = class
00:00:33 verbose #1005 > > end"
00:00:33 verbose #1006 > >         $'' : $'serde_json_Value'
00:00:33 verbose #1007 > >     )
00:00:33 verbose #1008 > >
00:00:33 verbose #1009 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:33 verbose #1010 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:33 verbose #1011 > > │ ### json_error                                                               │
00:00:33 verbose #1012 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:33 verbose #1013 > >
00:00:33 verbose #1014 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:33 verbose #1015 > > nominal json_error =
00:00:33 verbose #1016 > >     `(
00:00:33 verbose #1017 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:33 verbose #1018 > > Fable.Core.Emit(\"serde_json::Error\")>]]\n#endif\ntype serde_json_Error = class
00:00:33 verbose #1019 > > end"
00:00:33 verbose #1020 > >         $'' : $'serde_json_Error'
00:00:33 verbose #1021 > >     )
00:00:33 verbose #1022 > >
00:00:33 verbose #1023 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:33 verbose #1024 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:33 verbose #1025 > > │ ### serde_wasm_bindgen_error                                                 │
00:00:33 verbose #1026 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:33 verbose #1027 > >
00:00:33 verbose #1028 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:33 verbose #1029 > > nominal serde_wasm_bindgen_error =
00:00:33 verbose #1030 > >     `(
00:00:33 verbose #1031 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:33 verbose #1032 > > Fable.Core.Emit(\"serde_wasm_bindgen::Error\")>]]\n#endif\ntype
00:00:33 verbose #1033 > > serde_wasm_bindgen_Error = class end"
00:00:33 verbose #1034 > >         $'' : $'serde_wasm_bindgen_Error'
00:00:33 verbose #1035 > >     )
00:00:33 verbose #1036 > >
00:00:33 verbose #1037 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:33 verbose #1038 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:33 verbose #1039 > > │ ### js_string                                                                │
00:00:33 verbose #1040 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:33 verbose #1041 > >
00:00:33 verbose #1042 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:33 verbose #1043 > > nominal js_string =
00:00:33 verbose #1044 > >     `(
00:00:33 verbose #1045 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:33 verbose #1046 > > Fable.Core.Emit(\"js_sys::JsString\")>]]\n#endif\ntype js_sys_JsString = class
00:00:33 verbose #1047 > > end"
00:00:33 verbose #1048 > >         $'' : $'js_sys_JsString'
00:00:33 verbose #1049 > >     )
00:00:33 verbose #1050 > >
00:00:33 verbose #1051 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:33 verbose #1052 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:33 verbose #1053 > > │ ### os_str                                                                   │
00:00:33 verbose #1054 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:33 verbose #1055 > >
00:00:33 verbose #1056 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:33 verbose #1057 > > nominal os_str =
00:00:33 verbose #1058 > >     `(
00:00:33 verbose #1059 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:33 verbose #1060 > > Fable.Core.Emit(\"std::ffi::OsStr\")>]]\n#endif\ntype std_ffi_OsStr = class end"
00:00:33 verbose #1061 > >         $'' : $'std_ffi_OsStr'
00:00:33 verbose #1062 > >     )
00:00:33 verbose #1063 > >
00:00:33 verbose #1064 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:33 verbose #1065 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:33 verbose #1066 > > │ ### os_string                                                                │
00:00:33 verbose #1067 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:33 verbose #1068 > >
00:00:33 verbose #1069 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:33 verbose #1070 > > nominal os_string =
00:00:33 verbose #1071 > >     `(
00:00:33 verbose #1072 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:33 verbose #1073 > > Fable.Core.Emit(\"std::ffi::OsString\")>]]\n#endif\ntype std_ffi_OsString =
00:00:33 verbose #1074 > > class end"
00:00:33 verbose #1075 > >         $'' : $'std_ffi_OsString'
00:00:33 verbose #1076 > >     )
00:00:34 verbose #1077 > >
00:00:34 verbose #1078 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:34 verbose #1079 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:34 verbose #1080 > > │ ### raw_string_literal                                                       │
00:00:34 verbose #1081 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:34 verbose #1082 > >
00:00:34 verbose #1083 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:34 verbose #1084 > > inl raw_string_literal (s : string) : rust.ref str =
00:00:34 verbose #1085 > >     !\($'"r#\\"" + !s + "\\"#"')
00:00:34 verbose #1086 > >
00:00:34 verbose #1087 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:34 verbose #1088 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:34 verbose #1089 > > │ ### raw_string_literal_static                                                │
00:00:34 verbose #1090 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:34 verbose #1091 > >
00:00:34 verbose #1092 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:34 verbose #1093 > > inl raw_string_literal_static (s : string) : rust.static_ref str =
00:00:34 verbose #1094 > >     !\($'"r#\\"" + !s + "\\"#"')
00:00:34 verbose #1095 > >
00:00:34 verbose #1096 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:34 verbose #1097 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:34 verbose #1098 > > │ ### (~#)                                                                     │
00:00:34 verbose #1099 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:34 verbose #1100 > >
00:00:34 verbose #1101 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:34 verbose #1102 > > inl (~#) s =
00:00:34 verbose #1103 > >     s |> raw_string_literal
00:00:34 verbose #1104 > >
00:00:34 verbose #1105 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:34 verbose #1106 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:34 verbose #1107 > > │ ### (~##)                                                                    │
00:00:34 verbose #1108 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:34 verbose #1109 > >
00:00:34 verbose #1110 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:34 verbose #1111 > > inl (~##) s =
00:00:34 verbose #1112 > >     s |> raw_string_literal_static
00:00:34 verbose #1113 > >
00:00:34 verbose #1114 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:34 verbose #1115 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:34 verbose #1116 > > │ ### include_str                                                              │
00:00:34 verbose #1117 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:34 verbose #1118 > >
00:00:34 verbose #1119 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:34 verbose #1120 > > inl include_str (path : string) : rust.ref str =
00:00:34 verbose #1121 > >     !\($'"include_str\!(\\\"" + !path + "\\\")"')
00:00:34 verbose #1122 > >
00:00:34 verbose #1123 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:34 verbose #1124 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:34 verbose #1125 > > │ ### as_str                                                                   │
00:00:34 verbose #1126 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:34 verbose #1127 > >
00:00:34 verbose #1128 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:34 verbose #1129 > > inl as_str (s : string) : rust.ref str =
00:00:34 verbose #1130 > >     // !\\(s, $'"fable_library_rust::String_::LrcStr::as_str(&$0)"')
00:00:34 verbose #1131 > >     !\\(s, $'"&*$0"')
00:00:34 verbose #1132 > >
00:00:34 verbose #1133 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:34 verbose #1134 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:34 verbose #1135 > > │ ### ref_to_std_string                                                        │
00:00:34 verbose #1136 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:34 verbose #1137 > >
00:00:34 verbose #1138 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:34 verbose #1139 > > inl ref_to_std_string (str : rust.ref str) : std_string =
00:00:34 verbose #1140 > >     !\\(str, $'"String::from($0)"')
00:00:34 verbose #1141 > >
00:00:34 verbose #1142 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:34 verbose #1143 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:34 verbose #1144 > > │ ### cow_to_std_string                                                        │
00:00:34 verbose #1145 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:34 verbose #1146 > >
00:00:34 verbose #1147 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:34 verbose #1148 > > inl cow_to_std_string (str : rust.cow str) : std_string =
00:00:34 verbose #1149 > >     !\\(str, $'"String::from($0)"')
00:00:34 verbose #1150 > >
00:00:34 verbose #1151 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:34 verbose #1152 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:34 verbose #1153 > > │ ### to_std_string                                                            │
00:00:34 verbose #1154 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:34 verbose #1155 > >
00:00:34 verbose #1156 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:34 verbose #1157 > > inl to_std_string (s : string) : std_string =
00:00:34 verbose #1158 > >     s |> as_str |> ref_to_std_string
00:00:34 verbose #1159 > >
00:00:34 verbose #1160 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:34 verbose #1161 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:34 verbose #1162 > > │ ### as_str_std                                                               │
00:00:34 verbose #1163 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:34 verbose #1164 > >
00:00:34 verbose #1165 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:34 verbose #1166 > > inl as_str_std (s : std_string) : rust.ref str =
00:00:34 verbose #1167 > >     !\\(s, $'"$0.as_str()"')
00:00:35 verbose #1168 > >
00:00:35 verbose #1169 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:35 verbose #1170 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:35 verbose #1171 > > │ ### into_boxed_str                                                           │
00:00:35 verbose #1172 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:35 verbose #1173 > >
00:00:35 verbose #1174 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:35 verbose #1175 > > inl into_boxed_str (s : std_string) : rust.box str =
00:00:35 verbose #1176 > >     !\\(s, $'"$0.into_boxed_str()"')
00:00:35 verbose #1177 > >
00:00:35 verbose #1178 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:35 verbose #1179 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:35 verbose #1180 > > │ ### os_string_as_ref                                                         │
00:00:35 verbose #1181 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:35 verbose #1182 > >
00:00:35 verbose #1183 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:35 verbose #1184 > > inl os_string_as_ref (s : os_string) : rust.ref os_str =
00:00:35 verbose #1185 > >     !\\(s, $'"$0.as_ref()"')
00:00:35 verbose #1186 > >
00:00:35 verbose #1187 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:35 verbose #1188 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:35 verbose #1189 > > │ ### to_os_string                                                             │
00:00:35 verbose #1190 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:35 verbose #1191 > >
00:00:35 verbose #1192 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:35 verbose #1193 > > inl to_os_string (s : rust.ref os_str) : os_string =
00:00:35 verbose #1194 > >     !\\(s, $'"$0.to_os_string()"')
00:00:35 verbose #1195 > >
00:00:35 verbose #1196 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:35 verbose #1197 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:35 verbose #1198 > > │ ### os_to_str                                                                │
00:00:35 verbose #1199 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:35 verbose #1200 > >
00:00:35 verbose #1201 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:35 verbose #1202 > > inl os_to_str (s : os_string) : optionm'.option' (rust.ref str) =
00:00:35 verbose #1203 > >     !\\(s, $'"$0.to_str()"')
00:00:35 verbose #1204 > >
00:00:35 verbose #1205 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:35 verbose #1206 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:35 verbose #1207 > > │ ### from_os_str_ref                                                          │
00:00:35 verbose #1208 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:35 verbose #1209 > >
00:00:35 verbose #1210 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:35 verbose #1211 > > inl from_os_str_ref s =
00:00:35 verbose #1212 > >     s
00:00:35 verbose #1213 > >     |> to_os_string
00:00:35 verbose #1214 > >     |> os_to_str
00:00:35 verbose #1215 > >     |> optionm'.unwrap
00:00:35 verbose #1216 > >     |> ref_to_std_string
00:00:35 verbose #1217 > >     |> from_std_string
00:00:35 verbose #1218 > >
00:00:35 verbose #1219 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:35 verbose #1220 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:35 verbose #1221 > > │ ### format_custom'                                                           │
00:00:35 verbose #1222 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:35 verbose #1223 > >
00:00:35 verbose #1224 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:35 verbose #1225 > > inl format_custom' (f : string) x : std_string =
00:00:35 verbose #1226 > >     run_target function
00:00:35 verbose #1227 > >         | Rust _ => fun () =>
00:00:35 verbose #1228 > >             !\\(x, $'"format\!(\\\"" + !f + "\\\", $0)"')
00:00:35 verbose #1229 > >         | _ => fun () => null ()
00:00:35 verbose #1230 > >
00:00:35 verbose #1231 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:35 verbose #1232 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:35 verbose #1233 > > │ ### format_debug'                                                            │
00:00:35 verbose #1234 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:35 verbose #1235 > >
00:00:35 verbose #1236 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:35 verbose #1237 > > inl format_debug' x : std_string =
00:00:35 verbose #1238 > >     run_target function
00:00:35 verbose #1239 > >         | Rust _ => fun () =>
00:00:35 verbose #1240 > >             !\\(x, $'"format\!(\\\"{:?}\\\", $0)"')
00:00:35 verbose #1241 > >         | _ => fun () => null ()
00:00:36 verbose #1242 > >
00:00:36 verbose #1243 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:36 verbose #1244 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:36 verbose #1245 > > │ ### format'                                                                  │
00:00:36 verbose #1246 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 verbose #1247 > >
00:00:36 verbose #1248 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:36 verbose #1249 > > inl format' x : std_string =
00:00:36 verbose #1250 > >     run_target_args (fun () => x) function
00:00:36 verbose #1251 > >         | Rust _ => fun x =>
00:00:36 verbose #1252 > >             !\\(x, $'"format\!(\\\"{}\\\", $0)"')
00:00:36 verbose #1253 > >         | _ => fun _ => null ()
00:00:36 verbose #1254 > >
00:00:36 verbose #1255 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:36 verbose #1256 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:36 verbose #1257 > > │ ### format_hex'                                                              │
00:00:36 verbose #1258 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 verbose #1259 > >
00:00:36 verbose #1260 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:36 verbose #1261 > > inl format_hex' x : std_string =
00:00:36 verbose #1262 > >     !\\(x, $'"format\!(\\\"{:02x}\\\", $0)"')
00:00:36 verbose #1263 > >
00:00:36 verbose #1264 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:36 verbose #1265 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:36 verbose #1266 > > │ ### format''                                                                 │
00:00:36 verbose #1267 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 verbose #1268 > >
00:00:36 verbose #1269 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:36 verbose #1270 > > inl format'' (format : string) : std_string =
00:00:36 verbose #1271 > >     !\($'@@$"format\!(" + !format + ")"')
00:00:36 verbose #1272 > >
00:00:36 verbose #1273 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:36 verbose #1274 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:36 verbose #1275 > > │ ### regex                                                                    │
00:00:36 verbose #1276 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 verbose #1277 > >
00:00:36 verbose #1278 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:36 verbose #1279 > > nominal regex =
00:00:36 verbose #1280 > >     `(
00:00:36 verbose #1281 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:36 verbose #1282 > > Fable.Core.Emit(\"regex::Regex\")>]]\n#endif\ntype regex_Regex = class end"
00:00:36 verbose #1283 > >         $'' : $'regex_Regex'
00:00:36 verbose #1284 > >     )
00:00:36 verbose #1285 > >
00:00:36 verbose #1286 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:36 verbose #1287 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:36 verbose #1288 > > │ ### regex_error                                                              │
00:00:36 verbose #1289 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 verbose #1290 > >
00:00:36 verbose #1291 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:36 verbose #1292 > > nominal regex_error =
00:00:36 verbose #1293 > >     `(
00:00:36 verbose #1294 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:36 verbose #1295 > > Fable.Core.Emit(\"regex::Error\")>]]\n#endif\ntype regex_Error = class end"
00:00:36 verbose #1296 > >         $'' : $'regex_Error'
00:00:36 verbose #1297 > >     )
00:00:36 verbose #1298 > >
00:00:36 verbose #1299 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:36 verbose #1300 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:36 verbose #1301 > > │ ### new_regex                                                                │
00:00:36 verbose #1302 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 verbose #1303 > >
00:00:36 verbose #1304 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:36 verbose #1305 > > inl new_regex (pattern : string) : resultm.result' regex regex_error =
00:00:36 verbose #1306 > >     !\\(pattern, $'$"regex::Regex::new(&$0)"')
00:00:36 verbose #1307 > >
00:00:36 verbose #1308 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:36 verbose #1309 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:36 verbose #1310 > > │ ### captures                                                                 │
00:00:36 verbose #1311 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 verbose #1312 > >
00:00:36 verbose #1313 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:36 verbose #1314 > > nominal regex_captures t =
00:00:36 verbose #1315 > >     `(
00:00:36 verbose #1316 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:36 verbose #1317 > > Fable.Core.Emit(\"regex::Captures<$0>\")>]]\n#endif\ntype regex_Captures<'T> =
00:00:36 verbose #1318 > > class end"
00:00:36 verbose #1319 > >         $'' : $'regex_Captures<`t>'
00:00:36 verbose #1320 > >     )
00:00:36 verbose #1321 > >
00:00:36 verbose #1322 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:36 verbose #1323 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:36 verbose #1324 > > │ ### regex_capture_matches                                                    │
00:00:36 verbose #1325 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 verbose #1326 > >
00:00:36 verbose #1327 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:36 verbose #1328 > > nominal regex_capture_matches =
00:00:36 verbose #1329 > >     `(
00:00:36 verbose #1330 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:36 verbose #1331 > > Fable.Core.Emit(\"regex::CaptureMatches\")>]]\n#endif\ntype regex_CaptureMatches
00:00:36 verbose #1332 > > = class end"
00:00:36 verbose #1333 > >         $'' : $'regex_CaptureMatches'
00:00:36 verbose #1334 > >     )
00:00:36 verbose #1335 > >
00:00:36 verbose #1336 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:36 verbose #1337 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:36 verbose #1338 > > │ ### regex_capture_names                                                      │
00:00:36 verbose #1339 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 verbose #1340 > >
00:00:36 verbose #1341 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:36 verbose #1342 > > nominal regex_capture_names =
00:00:36 verbose #1343 > >     `(
00:00:36 verbose #1344 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:36 verbose #1345 > > Fable.Core.Emit(\"regex::CaptureNames\")>]]\n#endif\ntype regex_CaptureNames =
00:00:36 verbose #1346 > > class end"
00:00:36 verbose #1347 > >         $'' : $'regex_CaptureNames'
00:00:36 verbose #1348 > >     )
00:00:36 verbose #1349 > >
00:00:36 verbose #1350 > > inl regex_capture_names (regex : regex) : regex_capture_names =
00:00:36 verbose #1351 > >     !\\(regex, $'$"$0.capture_names()"')
00:00:36 verbose #1352 > >
00:00:36 verbose #1353 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:36 verbose #1354 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:36 verbose #1355 > > │ ### match'                                                                   │
00:00:36 verbose #1356 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:36 verbose #1357 > >
00:00:36 verbose #1358 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:36 verbose #1359 > > nominal match' =
00:00:36 verbose #1360 > >     `(
00:00:36 verbose #1361 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:36 verbose #1362 > > Fable.Core.Emit(\"regex::Match\")>]]\n#endif\ntype regex_Match = class end"
00:00:36 verbose #1363 > >         $'' : $'regex_Match'
00:00:36 verbose #1364 > >     )
00:00:37 verbose #1365 > >
00:00:37 verbose #1366 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:37 verbose #1367 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:37 verbose #1368 > > │ ### regex_captures_iter                                                      │
00:00:37 verbose #1369 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:37 verbose #1370 > >
00:00:37 verbose #1371 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:37 verbose #1372 > > inl regex_captures_iter (s : rust.static_ref (rust.mut' std_string)) (regex :
00:00:37 verbose #1373 > > regex) : regex_capture_matches =
00:00:37 verbose #1374 > >     !\($'$"!regex.captures_iter(!s)"')
00:00:37 verbose #1375 > >
00:00:37 verbose #1376 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:37 verbose #1377 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:37 verbose #1378 > > │ ### regex_captures                                                           │
00:00:37 verbose #1379 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:37 verbose #1380 > >
00:00:37 verbose #1381 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:37 verbose #1382 > > inl regex_captures (s : string) (regex : regex) : am'.vec (mapm.hash_map string
00:00:37 verbose #1383 > > string) =
00:00:37 verbose #1384 > >     // inl s = join s
00:00:37 verbose #1385 > >     // !\\(regex, $'$"$0.captures_iter(&*!s).map(|caps|
00:00:37 verbose #1386 > > $0.capture_names().map(|x| x.and_then(|n| Some((n,
00:00:37 verbose #1387 > > caps.name(n)?.as_str())))).flatten().collect()).collect()"')
00:00:37 verbose #1388 > >
00:00:37 verbose #1389 > >     inl s = s |> to_std_string
00:00:37 verbose #1390 > >     fun () =>
00:00:37 verbose #1391 > >         inl matches =
00:00:37 verbose #1392 > >             inl s = s |> rust.new_box |> rust.box_leak
00:00:37 verbose #1393 > >             regex |> regex_captures_iter s
00:00:37 verbose #1394 > >
00:00:37 verbose #1395 > >         (!\($'"true; let _regex_captures : Vec<_> = !matches.map(|x| { //"') :
00:00:37 verbose #1396 > > bool) |> ignore
00:00:37 verbose #1397 > >
00:00:37 verbose #1398 > >         inl fn (match' : rust.static_ref (rust.mut' (regex_captures
00:00:37 verbose #1399 > > rust.static_lifetime))) : mapm.hash_map string string =
00:00:37 verbose #1400 > >
00:00:37 verbose #1401 > >             inl names = regex |> regex_capture_names
00:00:37 verbose #1402 > >
00:00:37 verbose #1403 > >             (!\($'"true; let _regex_captures : std::collections::HashMap<_, _> =
00:00:37 verbose #1404 > > !names.map(|x| { //"') : bool) |> ignore
00:00:37 verbose #1405 > >
00:00:37 verbose #1406 > >             inl fn (n : string) : pair string string =
00:00:37 verbose #1407 > >                 inl n' = n |> rust.clone
00:00:37 verbose #1408 > >
00:00:37 verbose #1409 > >                 new_pair n' !\\(n, $'$"!match'.name(&$0).map(|x|
00:00:37 verbose #1410 > > x.as_str()).unwrap_or(\\\"\\\").to_string().into()"')
00:00:37 verbose #1411 > >
00:00:37 verbose #1412 > >             (!\\(fn !\($'"x.unwrap_or(\\\"\\\").to_string().into()"'), $'"true;
00:00:37 verbose #1413 > > $0 }).map(|x| std::sync::Arc::try_unwrap(x).unwrap_or_else(|x|
00:00:37 verbose #1414 > > (*x).clone())).collect()"') : bool) |> ignore
00:00:37 verbose #1415 > >
00:00:37 verbose #1416 > >             !\($'"_regex_captures"')
00:00:37 verbose #1417 > >
00:00:37 verbose #1418 > >         inl x =
00:00:37 verbose #1419 > >             !\($'$"x"')
00:00:37 verbose #1420 > >             |> rust.new_box
00:00:37 verbose #1421 > >             |> rust.box_leak
00:00:37 verbose #1422 > >
00:00:37 verbose #1423 > >         (!\\(fn x, $'"true; $0 }).collect::<Vec<_>>()"') : bool) |> ignore
00:00:37 verbose #1424 > >
00:00:37 verbose #1425 > >         !\($'"_regex_captures"')
00:00:37 verbose #1426 > >
00:00:37 verbose #1427 > >     |> rust.capture_move
00:00:37 verbose #1428 > >
00:00:37 verbose #1429 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:37 verbose #1430 > > //// test
00:00:37 verbose #1431 > > ///! rust -d regex
00:00:37 verbose #1432 > >
00:00:37 verbose #1433 > > "fable-library-ts\\.(?<a>[[\\d.]]+)$"
00:00:37 verbose #1434 > > |> new_regex
00:00:37 verbose #1435 > > |> resultm.unwrap'
00:00:37 verbose #1436 > > |> regex_captures "fable_modules/fable-library-ts.4.17.0"
00:00:37 verbose #1437 > > |> am'.vec_map (mapm.to_vec >> am'.vec_sort_by_key id)
00:00:37 verbose #1438 > > |> sm'.format_debug
00:00:37 verbose #1439 > > |> _assert_eq (
00:00:37 verbose #1440 > >     ;[[
00:00:37 verbose #1441 > >         ;[[ "", ""; "a", "4.17.0" ]]
00:00:37 verbose #1442 > >         |> am'.to_vec
00:00:37 verbose #1443 > >     ]]
00:00:37 verbose #1444 > >     |> am'.to_vec
00:00:37 verbose #1445 > >     |> sm'.format_debug
00:00:37 verbose #1446 > > )
00:00:44 verbose #1447 > >
00:00:44 verbose #1448 > > ╭─[ 7.35s - return value ]─────────────────────────────────────────────────────╮
00:00:44 verbose #1449 > > │ __assert_eq / actual: "[[("", ""), ("a", "4.17.0")]]" / expected: "[[("",    │
00:00:44 verbose #1450 > > │ ""), ("a", "4.17.0")]]"                                                      │
00:00:44 verbose #1451 > > │                                                                              │
00:00:44 verbose #1452 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:44 verbose #1453 > >
00:00:44 verbose #1454 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:44 verbose #1455 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:44 verbose #1456 > > │ ### replace_regex'                                                           │
00:00:44 verbose #1457 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:44 verbose #1458 > >
00:00:44 verbose #1459 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:44 verbose #1460 > > inl replace_regex' (pattern : string) (replacement : a i32 string) (s : string)
00:00:44 verbose #1461 > > : string =
00:00:44 verbose #1462 > >     run_target_args (fun () => s, pattern, replacement) function
00:00:44 verbose #1463 > >         | Rust (Native) => fun s, pattern, replacement =>
00:00:44 verbose #1464 > >             inl regex = pattern |> new_regex |> resultm.unwrap'
00:00:44 verbose #1465 > >             !\\((regex, #s, replacement), $'$"$0.replace_all($1, &*$2)"')
00:00:44 verbose #1466 > >             |> cow_to_std_string
00:00:44 verbose #1467 > >             |> from_std_string
00:00:44 verbose #1468 > >         | _ => fun _ => null ()
00:00:44 verbose #1469 > >
00:00:44 verbose #1470 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:44 verbose #1471 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:44 verbose #1472 > > │ ### serialize                                                                │
00:00:44 verbose #1473 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:44 verbose #1474 > >
00:00:44 verbose #1475 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:44 verbose #1476 > > inl serialize forall t. (x : t) : resultm.result' std_string json_error =
00:00:44 verbose #1477 > >     !\($'"serde_json::to_string(&!x)"')
00:00:44 verbose #1478 > >
00:00:44 verbose #1479 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:44 verbose #1480 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:44 verbose #1481 > > │ ### deserialize                                                              │
00:00:44 verbose #1482 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:44 verbose #1483 > >
00:00:44 verbose #1484 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:44 verbose #1485 > > inl deserialize forall t. (json : string) : resultm.result' t std_string =
00:00:44 verbose #1486 > >     inl json = join json
00:00:44 verbose #1487 > >     inl json = json |> as_str
00:00:44 verbose #1488 > >     !\($'"serde_json::from_str(&!json)"')
00:00:44 verbose #1489 > >     |> resultm.map_error' fun (x : json_error) => x |> format'
00:00:44 verbose #1490 > >
00:00:44 verbose #1491 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:44 verbose #1492 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:44 verbose #1493 > > │ ### borsh_deserialize                                                        │
00:00:44 verbose #1494 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:44 verbose #1495 > >
00:00:44 verbose #1496 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:44 verbose #1497 > > inl borsh_deserialize forall t. (data : array_base u8) : resultm.result' t
00:00:44 verbose #1498 > > std_string =
00:00:44 verbose #1499 > >     inl data = data |> am'.as_slice
00:00:44 verbose #1500 > >     (!\($'"true; let mut !data = !data"') : bool) |> ignore
00:00:44 verbose #1501 > >     inl result = !\($'"borsh::BorshDeserialize::deserialize(&mut !data)"')
00:00:44 verbose #1502 > >     result
00:00:44 verbose #1503 > >     |> resultm.map_error' fun (x : borsh_io_error) => x |> format'
00:00:44 verbose #1504 > >
00:00:44 verbose #1505 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:44 verbose #1506 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:44 verbose #1507 > > │ ### deserialize_vec                                                          │
00:00:44 verbose #1508 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:44 verbose #1509 > >
00:00:44 verbose #1510 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:44 verbose #1511 > > inl deserialize_vec (value : json_value) : resultm.result' (am'.vec u8)
00:00:44 verbose #1512 > > std_string =
00:00:44 verbose #1513 > >     inl value = join value
00:00:44 verbose #1514 > >     !\($'"serde_json::from_value(!value)"')
00:00:44 verbose #1515 > >     |> resultm.map_error' fun (x : json_error) => x |> format'
00:00:45 verbose #1516 > >
00:00:45 verbose #1517 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:45 verbose #1518 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:45 verbose #1519 > > │ ### encode_uri_component                                                     │
00:00:45 verbose #1520 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:45 verbose #1521 > >
00:00:45 verbose #1522 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:45 verbose #1523 > > inl encode_uri_component (s : std_string) : js_string =
00:00:45 verbose #1524 > >     !\($'"js_sys::encode_uri_component(&!s)"')
00:00:45 verbose #1525 > >
00:00:45 verbose #1526 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:45 verbose #1527 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:45 verbose #1528 > > │ ### strip_prefix                                                             │
00:00:45 verbose #1529 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:45 verbose #1530 > >
00:00:45 verbose #1531 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:45 verbose #1532 > > inl strip_prefix (prefix : char) (s : std_string) : optionm'.option' (rust.ref
00:00:45 verbose #1533 > > str) =
00:00:45 verbose #1534 > >     inl s = join s
00:00:45 verbose #1535 > >     !\($'"!s.strip_prefix(!prefix)"')
00:00:45 verbose #1536 > >
00:00:45 verbose #1537 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:45 verbose #1538 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:45 verbose #1539 > > │ ### str_from_utf8                                                            │
00:00:45 verbose #1540 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:45 verbose #1541 > >
00:00:45 verbose #1542 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:45 verbose #1543 > > inl str_from_utf8 (bytes : rust.ref (am'.slice u8)) : resultm.result' (rust.ref
00:00:45 verbose #1544 > > str) utf8_error =
00:00:45 verbose #1545 > >     !\\(bytes, $'"std::str::from_utf8($0)"')
00:00:45 verbose #1546 > >
00:00:45 verbose #1547 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:45 verbose #1548 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:45 verbose #1549 > > │ ### string_from_utf8                                                         │
00:00:45 verbose #1550 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:45 verbose #1551 > >
00:00:45 verbose #1552 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:45 verbose #1553 > > inl string_from_utf8 (bytes : am'.vec u8) : resultm.result' std_string
00:00:45 verbose #1554 > > from_utf8_error =
00:00:45 verbose #1555 > >     inl bytes = join bytes
00:00:45 verbose #1556 > >     !\\(bytes, $'"std::string::String::from_utf8($0)"')
00:00:45 verbose #1557 > >
00:00:45 verbose #1558 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:45 verbose #1559 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:45 verbose #1560 > > │ ### base64_decode                                                            │
00:00:45 verbose #1561 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:45 verbose #1562 > >
00:00:45 verbose #1563 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:45 verbose #1564 > > inl base64_decode (s : std_string) : result std_string std_string =
00:00:45 verbose #1565 > >     fun () =>
00:00:45 verbose #1566 > >         inl s = join s
00:00:45 verbose #1567 > >         inl bytes : resultm.result' (am'.vec u8) base64_decode_error =
00:00:45 verbose #1568 > >
00:00:45 verbose #1569 > > !\($'"base64::Engine::decode(&base64::engine::general_purpose::STANDARD, !s)"')
00:00:45 verbose #1570 > >         bytes
00:00:45 verbose #1571 > >         |> resultm.map_error' format'
00:00:45 verbose #1572 > >         |> resultm.try'
00:00:45 verbose #1573 > >         |> string_from_utf8
00:00:45 verbose #1574 > >         |> resultm.map_error' format'
00:00:45 verbose #1575 > >     |> fun x =>
00:00:45 verbose #1576 > >         join x ()
00:00:45 verbose #1577 > >         |> resultm.unbox
00:00:45 verbose #1578 > >
00:00:45 verbose #1579 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:45 verbose #1580 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:45 verbose #1581 > > │ ### encoding'                                                                │
00:00:45 verbose #1582 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:45 verbose #1583 > >
00:00:45 verbose #1584 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:45 verbose #1585 > > nominal encoding' =
00:00:45 verbose #1586 > >     `(
00:00:45 verbose #1587 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:45 verbose #1588 > > Fable.Core.Emit(\"encoding_rs::Encoding\")>]]\n#endif\ntype encoding_rs_Encoding
00:00:45 verbose #1589 > > = class end"
00:00:45 verbose #1590 > >         $'' : $'encoding_rs_Encoding'
00:00:45 verbose #1591 > >     )
00:00:45 verbose #1592 > >
00:00:45 verbose #1593 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:45 verbose #1594 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:45 verbose #1595 > > │ ### encoding_utf8'                                                           │
00:00:45 verbose #1596 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:45 verbose #1597 > >
00:00:45 verbose #1598 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:45 verbose #1599 > > inl encoding_utf8' () : rust.ref encoding' =
00:00:45 verbose #1600 > >     !\($'"encoding_rs::UTF_8"')
00:00:45 verbose #1601 > >
00:00:45 verbose #1602 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:45 verbose #1603 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:45 verbose #1604 > > │ ### encoding_1252                                                            │
00:00:45 verbose #1605 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:45 verbose #1606 > >
00:00:45 verbose #1607 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:45 verbose #1608 > > inl encoding_1252' () : rust.ref encoding' =
00:00:45 verbose #1609 > >     !\($'"encoding_rs::WINDOWS_1252"')
00:00:46 verbose #1610 > >
00:00:46 verbose #1611 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:46 verbose #1612 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:46 verbose #1613 > > │ ### encoding_encode                                                          │
00:00:46 verbose #1614 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:46 verbose #1615 > >
00:00:46 verbose #1616 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:46 verbose #1617 > > inl encoding_encode' (encoding : rust.ref encoding') (text : string) : rust.cow
00:00:46 verbose #1618 > > (am'.slice u8) =
00:00:46 verbose #1619 > >     !\\((encoding, text), $'"$0.encode(&*$1).0"')
00:00:46 verbose #1620 > >
00:00:46 verbose #1621 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:46 verbose #1622 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:46 verbose #1623 > > │ ### utf8_decode                                                              │
00:00:46 verbose #1624 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:46 verbose #1625 > >
00:00:46 verbose #1626 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:46 verbose #1627 > > inl utf8_decode (data : am'.vec u8) : resultm.result' std_string (rust.cow str)
00:00:46 verbose #1628 > > =
00:00:46 verbose #1629 > >     !\($'$"encoding::Encoding::decode(encoding::all::UTF_8, &!data,
00:00:46 verbose #1630 > > encoding::DecoderTrap::Replace)"')
00:00:46 verbose #1631 > >
00:00:46 verbose #1632 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:46 verbose #1633 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:46 verbose #1634 > > │ ### windows                                                                  │
00:00:46 verbose #1635 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:46 verbose #1636 > >
00:00:46 verbose #1637 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:46 verbose #1638 > > nominal windows t =
00:00:46 verbose #1639 > >     `(
00:00:46 verbose #1640 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:00:46 verbose #1641 > > Fable.Core.Emit(\"std::slice::Windows<$0>\")>]]\n#endif\ntype
00:00:46 verbose #1642 > > std_slice_Windows<'T> = class end"
00:00:46 verbose #1643 > >         $'' : $'std_slice_Windows<`t>'
00:00:46 verbose #1644 > >     )
00:00:46 verbose #1645 > >
00:00:46 verbose #1646 > > inl windows (len : unativeint) (source : am'.vec u8) : windows u8 =
00:00:46 verbose #1647 > >     inl source = source |> rust.new_box |> rust.box_leak
00:00:46 verbose #1648 > >     // inl source' = source |> rust.clone
00:00:46 verbose #1649 > >     inl result = !\\(len, $'"<[[_]]>::windows(!source, $0)"')
00:00:46 verbose #1650 > >     // source |> rust.drop
00:00:46 verbose #1651 > >     result
00:00:46 verbose #1652 > >
00:00:46 verbose #1653 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:46 verbose #1654 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:46 verbose #1655 > > │ ### any                                                                      │
00:00:46 verbose #1656 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:46 verbose #1657 > >
00:00:46 verbose #1658 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:46 verbose #1659 > > inl any forall t. (fn : string -> bool) (source : windows t) : bool =
00:00:46 verbose #1660 > >     (!\($'"true; let mut !source = !source"') : bool) |> ignore
00:00:46 verbose #1661 > >     inl fn' x =
00:00:46 verbose #1662 > >         x
00:00:46 verbose #1663 > >         |> str_from_utf8
00:00:46 verbose #1664 > >         |> resultm.unwrap_or' #""
00:00:46 verbose #1665 > >         |> ref_to_std_string
00:00:46 verbose #1666 > >         |> from_std_string
00:00:46 verbose #1667 > >         |> fn
00:00:46 verbose #1668 > >     !\\(fn', $'"!source.any(move |x| $0(x))"')
00:00:46 verbose #1669 > >
00:00:46 verbose #1670 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:46 verbose #1671 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:46 verbose #1672 > > │ ### slice_contains                                                           │
00:00:46 verbose #1673 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:46 verbose #1674 > >
00:00:46 verbose #1675 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:46 verbose #1676 > > inl slice_contains (text : string) (source : am'.vec u8) : bool =
00:00:46 verbose #1677 > >     fun () =>
00:00:46 verbose #1678 > >         inl source = join source
00:00:46 verbose #1679 > >         source
00:00:46 verbose #1680 > >         |> windows (text |> length |> (fun x => x : i32) |> convert)
00:00:46 verbose #1681 > >         |> any ((=.) text)
00:00:46 verbose #1682 > >     |> fun x => join x ()
00:00:46 verbose #1683 > >
00:00:46 verbose #1684 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:46 verbose #1685 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:46 verbose #1686 > > │ ### as_bytes                                                                 │
00:00:46 verbose #1687 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:46 verbose #1688 > >
00:00:46 verbose #1689 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:46 verbose #1690 > > inl as_bytes (text : string) : rust.ref (am'.slice u8) =
00:00:46 verbose #1691 > >     inl text = join text
00:00:46 verbose #1692 > >     !\($'"!text.as_bytes()"')
00:00:46 verbose #1693 > >
00:00:46 verbose #1694 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:46 verbose #1695 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:46 verbose #1696 > > │ ## python                                                                    │
00:00:46 verbose #1697 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:46 verbose #1698 > >
00:00:46 verbose #1699 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:46 verbose #1700 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:46 verbose #1701 > > │ ### encode_utf8                                                              │
00:00:46 verbose #1702 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:46 verbose #1703 > >
00:00:46 verbose #1704 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:46 verbose #1705 > > inl encode_utf8 (s : string) : string =
00:00:46 verbose #1706 > >     inl encoding = "utf-8"
00:00:46 verbose #1707 > >     backend_switch {
00:00:46 verbose #1708 > >         Fsharp = fun () =>
00:00:46 verbose #1709 > >             open python_operators
00:00:46 verbose #1710 > >             !\\((s, encoding), $'"$0.encode($1)"') : string
00:00:46 verbose #1711 > >         Python = fun () =>
00:00:46 verbose #1712 > >             $'!s.encode(!encoding)' : string
00:00:46 verbose #1713 > >     }
00:00:46 verbose #1714 > >
00:00:46 verbose #1715 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:46 verbose #1716 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:46 verbose #1717 > > │ ## sm'                                                                       │
00:00:46 verbose #1718 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:46 verbose #1719 > >
00:00:46 verbose #1720 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:46 verbose #1721 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:46 verbose #1722 > > │ ### contains                                                                 │
00:00:46 verbose #1723 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:46 verbose #1724 > >
00:00:46 verbose #1725 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:46 verbose #1726 > > inl contains (value : string) (s : string) : bool =
00:00:46 verbose #1727 > >     backend_switch {
00:00:46 verbose #1728 > >         Fsharp = fun () => $'!s.Contains !value ' : bool
00:00:46 verbose #1729 > >         Python = fun () => $'!value in !s ' : bool
00:00:46 verbose #1730 > >     }
00:00:47 verbose #1731 > >
00:00:47 verbose #1732 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:47 verbose #1733 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:47 verbose #1734 > > │ ### to_string result t u                                                     │
00:00:47 verbose #1735 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:47 verbose #1736 > >
00:00:47 verbose #1737 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:47 verbose #1738 > > instance to_string result t u = fun x =>
00:00:47 verbose #1739 > >     real
00:00:47 verbose #1740 > >         open rust
00:00:47 verbose #1741 > >         typecase (t * u) with
00:00:47 verbose #1742 > >         | string * string =>
00:00:47 verbose #1743 > >             match x with
00:00:47 verbose #1744 > >             | Ok x => x
00:00:47 verbose #1745 > >             | Error x => $'"sm\'.to_string result / Error: " + !x + ""' : string
00:00:47 verbose #1746 > >         | std_string * std_string =>
00:00:47 verbose #1747 > >             match x with
00:00:47 verbose #1748 > >             | Ok x => from_std_string x
00:00:47 verbose #1749 > >             | Error x => $'"sm\'.to_string result / Error: " + string !x + ""' :
00:00:47 verbose #1750 > > string
00:00:47 verbose #1751 > >         | _ => obj_to_string `u x
00:00:47 verbose #1752 > >
00:00:47 verbose #1753 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:47 verbose #1754 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:47 verbose #1755 > > │ ### format_exception                                                         │
00:00:47 verbose #1756 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:47 verbose #1757 > >
00:00:47 verbose #1758 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:47 verbose #1759 > > inl format_exception (ex : exn) : string =
00:00:47 verbose #1760 > >     run_target function
00:00:47 verbose #1761 > >         | Fsharp (Native) => fun () => $'$"{!ex.GetType ()}: {!ex.Message}"'
00:00:47 verbose #1762 > >         | _ => fun () => ex |> format_debug
00:00:47 verbose #1763 > >
00:00:47 verbose #1764 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:47 verbose #1765 > > //// test
00:00:47 verbose #1766 > > ///! fsharp
00:00:47 verbose #1767 > > ///! rust
00:00:47 verbose #1768 > > ///! typescript
00:00:47 verbose #1769 > > ///! python
00:00:47 verbose #1770 > >
00:00:47 verbose #1771 > > fun () => failwith "test"
00:00:47 verbose #1772 > > |> _throws
00:00:47 verbose #1773 > > |> optionm.value
00:00:47 verbose #1774 > > |> sm'.format_exception
00:00:47 verbose #1775 > > |> _assert_eq (run_target function
00:00:47 verbose #1776 > >     | Fsharp _ => fun () => "System.Exception: test"
00:00:47 verbose #1777 > >     | Rust _ => fun () => "Exception { message: \"test\" }"
00:00:47 verbose #1778 > >     | TypeScript _ => fun () => "Error: test"
00:00:47 verbose #1779 > >     | Python _ => fun () => "test"
00:00:47 verbose #1780 > >     | _ => fun () => null ()
00:00:47 verbose #1781 > > )
00:00:58 verbose #1782 > >
00:00:58 verbose #1783 > > ╭─[ 11.40s - return value ]────────────────────────────────────────────────────╮
00:00:58 verbose #1784 > > │ .rs output:                                                                  │
00:00:58 verbose #1785 > > │ __assert_eq / actual: "Exception { message: "test" }" / expected: "Exception │
00:00:58 verbose #1786 > > │ { message: "test" }"                                                         │
00:00:58 verbose #1787 > > │                                                                              │
00:00:58 verbose #1788 > > │ .ts output:                                                                  │
00:00:58 verbose #1789 > > │ __assert_eq / actual: Error: test / expected: Error: test                    │
00:00:58 verbose #1790 > > │                                                                              │
00:00:58 verbose #1791 > > │ .py output:                                                                  │
00:00:58 verbose #1792 > > │ __assert_eq / actual: test / expected: test                                  │
00:00:58 verbose #1793 > > │                                                                              │
00:00:58 verbose #1794 > > │                                                                              │
00:00:58 verbose #1795 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:58 verbose #1796 > >
00:00:58 verbose #1797 > > ╭─[ 11.40s - stdout ]──────────────────────────────────────────────────────────╮
00:00:58 verbose #1798 > > │ .fsx output:                                                                 │
00:00:58 verbose #1799 > > │ __assert_eq / actual: "System.Exception: test" / expected:                   │
00:00:58 verbose #1800 > > │ "System.Exception: test"                                                     │
00:00:58 verbose #1801 > > │                                                                              │
00:00:58 verbose #1802 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:58 verbose #1803 > >
00:00:58 verbose #1804 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:58 verbose #1805 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:58 verbose #1806 > > │ ### range                                                                    │
00:00:58 verbose #1807 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:58 verbose #1808 > >
00:00:58 verbose #1809 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:58 verbose #1810 > > inl range forall t. (start : am'.range t) (end : am'.range t) s =
00:00:58 verbose #1811 > >     inl start, end =
00:00:58 verbose #1812 > >         match start, end with
00:00:58 verbose #1813 > >         | Start start, End fn =>
00:00:58 verbose #1814 > >             start, s |> length' |> fn
00:00:58 verbose #1815 > >         | End start_fn, End end_fn =>
00:00:58 verbose #1816 > >             inl len = s |> length'
00:00:58 verbose #1817 > >             start_fn len, end_fn len
00:00:58 verbose #1818 > >     s |> slice (start |> i32) (end |> i32)
00:00:58 verbose #1819 > >
00:00:58 verbose #1820 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:58 verbose #1821 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:58 verbose #1822 > > │ ### concat_list                                                              │
00:00:58 verbose #1823 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:58 verbose #1824 > >
00:00:58 verbose #1825 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:58 verbose #1826 > > inl concat_list s list =
00:00:58 verbose #1827 > >     list
00:00:58 verbose #1828 > >     |> listm'.box
00:00:58 verbose #1829 > >     |> seq.of_list'
00:00:58 verbose #1830 > >     |> concat s
00:00:59 verbose #1831 > >
00:00:59 verbose #1832 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:59 verbose #1833 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:59 verbose #1834 > > │ ### ellipsis_end                                                             │
00:00:59 verbose #1835 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:59 verbose #1836 > >
00:00:59 verbose #1837 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:59 verbose #1838 > > let ellipsis_end (max : i64) (s : string) =
00:00:59 verbose #1839 > >     inl len = sm.length s
00:00:59 verbose #1840 > >     if len <= max
00:00:59 verbose #1841 > >     then s
00:00:59 verbose #1842 > >     else
00:00:59 verbose #1843 > >         inl half = f64 max / 2
00:00:59 verbose #1844 > >         inl start_half = half |> math.ceil |> i64
00:00:59 verbose #1845 > >         inl end_half = half |> math.floor |> i64
00:00:59 verbose #1846 > >         inl start = s |> slice 0 (start_half - 1)
00:00:59 verbose #1847 > >         inl end = s |> slice (len - end_half) (len - 1)
00:00:59 verbose #1848 > >         (a ;[[start; "..."; end]] : _ i32 _)
00:00:59 verbose #1849 > >         |> seq.of_array
00:00:59 verbose #1850 > >         |> concat ""
00:00:59 verbose #1851 > >
00:00:59 verbose #1852 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:59 verbose #1853 > > //// test
00:00:59 verbose #1854 > >
00:00:59 verbose #1855 > > "12345"
00:00:59 verbose #1856 > > |> ellipsis_end 2
00:00:59 verbose #1857 > > |> _assert_eq "1...5"
00:00:59 verbose #1858 > >
00:00:59 verbose #1859 > > "12345"
00:00:59 verbose #1860 > > |> ellipsis_end 3
00:00:59 verbose #1861 > > |> _assert_eq "12...5"
00:00:59 verbose #1862 > >
00:00:59 verbose #1863 > > "1234567"
00:00:59 verbose #1864 > > |> ellipsis_end 4
00:00:59 verbose #1865 > > |> _assert_eq "12...67"
00:00:59 verbose #1866 > >
00:00:59 verbose #1867 > > ╭─[ 214.22ms - stdout ]────────────────────────────────────────────────────────╮
00:00:59 verbose #1868 > > │ __assert_eq / actual: "1...5" / expected: "1...5"                            │
00:00:59 verbose #1869 > > │ __assert_eq / actual: "12...5" / expected: "12...5"                          │
00:00:59 verbose #1870 > > │ __assert_eq / actual: "12...67" / expected: "12...67"                        │
00:00:59 verbose #1871 > > │                                                                              │
00:00:59 verbose #1872 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:59 verbose #1873 > >
00:00:59 verbose #1874 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:59 verbose #1875 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:59 verbose #1876 > > │ ### format_ellipsis                                                          │
00:00:59 verbose #1877 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:59 verbose #1878 > >
00:00:59 verbose #1879 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:59 verbose #1880 > > inl format_ellipsis s =
00:00:59 verbose #1881 > >     s
00:00:59 verbose #1882 > >     |> format_debug
00:00:59 verbose #1883 > >     |> ellipsis_end 400
00:00:59 verbose #1884 > >
00:00:59 verbose #1885 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:59 verbose #1886 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:59 verbose #1887 > > │ ### replace_regex                                                            │
00:00:59 verbose #1888 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:59 verbose #1889 > >
00:00:59 verbose #1890 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:59 verbose #1891 > > inl replace_regex (pattern : string) (replacement : string) (s : string) :
00:00:59 verbose #1892 > > string =
00:00:59 verbose #1893 > >     run_target_args (fun () => s, pattern, replacement) function
00:00:59 verbose #1894 > >         | Fsharp (Native) => fun s, pattern, replacement =>
00:00:59 verbose #1895 > >             $'System.Text.RegularExpressions.Regex.Replace (!s, !pattern,
00:00:59 verbose #1896 > > !replacement)'
00:00:59 verbose #1897 > >         | Rust (Native) => fun s, pattern, replacement =>
00:00:59 verbose #1898 > >             inl regex = pattern |> new_regex |> resultm.unwrap'
00:00:59 verbose #1899 > >             inl s = join s
00:00:59 verbose #1900 > >             !\\((regex, s, replacement), $'$"$0.replace_all(&*$1, &*$2)"')
00:00:59 verbose #1901 > >             |> cow_to_std_string
00:00:59 verbose #1902 > >             |> from_std_string
00:00:59 verbose #1903 > >         | _ => fun _ => null ()
00:00:59 verbose #1904 > >
00:00:59 verbose #1905 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:59 verbose #1906 > > //// test
00:00:59 verbose #1907 > > ///! fsharp
00:00:59 verbose #1908 > > ///! rust -d regex
00:00:59 verbose #1909 > >
00:00:59 verbose #1910 > > " 123"
00:00:59 verbose #1911 > > |> replace_regex "\\s\\w2" ""
00:00:59 verbose #1912 > > |> _assert_eq "3"
00:01:06 verbose #1913 > >
00:01:06 verbose #1914 > > ╭─[ 7.05s - return value ]─────────────────────────────────────────────────────╮
00:01:06 verbose #1915 > > │ .rs output (rust -d regex):                                                  │
00:01:06 verbose #1916 > > │ __assert_eq / actual: "3" / expected: "3"                                    │
00:01:06 verbose #1917 > > │                                                                              │
00:01:06 verbose #1918 > > │                                                                              │
00:01:06 verbose #1919 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:06 verbose #1920 > >
00:01:06 verbose #1921 > > ╭─[ 7.05s - stdout ]───────────────────────────────────────────────────────────╮
00:01:06 verbose #1922 > > │ .fsx output:                                                                 │
00:01:06 verbose #1923 > > │ __assert_eq / actual: "3" / expected: "3"                                    │
00:01:06 verbose #1924 > > │                                                                              │
00:01:06 verbose #1925 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:06 verbose #1926 > >
00:01:06 verbose #1927 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:06 verbose #1928 > > //// test
00:01:06 verbose #1929 > > ///! rust -d regex
00:01:06 verbose #1930 > >
00:01:06 verbose #1931 > > "    let main args =\n        ()\n"
00:01:06 verbose #1932 > > |> replace_regex $'@@"(?P<a> *)(?P<b>let\\s+main\\s+.*?\\s*=)"'
00:01:06 verbose #1933 > > "$a[[<EntryPoint>]]\n$a$b"
00:01:06 verbose #1934 > > |> _assert_eq "    [[<EntryPoint>]]\n    let main args =\n        ()\n"
00:01:13 verbose #1935 > >
00:01:13 verbose #1936 > > ╭─[ 6.94s - return value ]─────────────────────────────────────────────────────╮
00:01:13 verbose #1937 > > │ __assert_eq / actual: "    [<EntryPoint>]                                    │
00:01:13 verbose #1938 > > │     let main args =                                                          │
00:01:13 verbose #1939 > > │         ()                                                                   │
00:01:13 verbose #1940 > > │ " / expected: "    [<EntryPoint>]                                            │
00:01:13 verbose #1941 > > │     let main args =                                                          │
00:01:13 verbose #1942 > > │         ()                                                                   │
00:01:13 verbose #1943 > > │ "                                                                            │
00:01:13 verbose #1944 > > │                                                                              │
00:01:13 verbose #1945 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:13 verbose #1946 > >
00:01:13 verbose #1947 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:13 verbose #1948 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:13 verbose #1949 > > │ ## main                                                                      │
00:01:13 verbose #1950 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:13 verbose #1951 > >
00:01:13 verbose #1952 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:13 verbose #1953 > > inl main () =
00:01:13 verbose #1954 > >     $'let contains x = !contains x' : ()
00:01:13 verbose #1955 > >     $'let ends_with x = !ends_with x' : ()
00:01:13 verbose #1956 > >     $'let pad_left x = !pad_left x' : ()
00:01:13 verbose #1957 > >     $'let pad_right x = !pad_right x' : ()
00:01:13 verbose #1958 > >     $'let replace x = !replace x' : ()
00:01:13 verbose #1959 > >     $'let replace_regex x = !replace_regex x' : ()
00:01:13 verbose #1960 > >     inl slice (a : i32) (b : i32) c = slice a b c
00:01:13 verbose #1961 > >     $'let slice x = !slice x' : ()
00:01:13 verbose #1962 > >     $'let split x = !split x' : ()
00:01:13 verbose #1963 > >     $'let split_string x = !split_string x' : ()
00:01:13 verbose #1964 > >     $'let starts_with x = !starts_with x' : ()
00:01:13 verbose #1965 > >     $'let substring x = !substring x' : ()
00:01:13 verbose #1966 > >     $'let to_lower x = !to_lower x' : ()
00:01:13 verbose #1967 > >     $'let to_upper x = !to_upper x' : ()
00:01:13 verbose #1968 > >     $'let trim x = !trim x' : ()
00:01:13 verbose #1969 > >     inl trim_end x = (a x : _ int _) |> am'.to_list' |> listm'.unbox |> trim_end
00:01:13 verbose #1970 > >     $'let trim_end x = !trim_end x' : ()
00:01:13 verbose #1971 > >     inl trim_start x = (a x : _ int _) |> am'.to_list' |> listm'.unbox |>
00:01:13 verbose #1972 > > trim_start
00:01:13 verbose #1973 > >     $'let trim_start x = !trim_start x' : ()
00:01:13 verbose #1974 > >     $'let ellipsis x = !ellipsis x' : ()
00:01:13 verbose #1975 > >     $'let ellipsis_end x = !ellipsis_end x' : ()
00:01:13 verbose #1976 > >     $'let format_exception x = !format_exception x' : ()
00:01:13 verbose #1977 > >     $'let concat_array_trailing x = !concat_array_trailing x' : ()
00:01:13 verbose #1978 > >     inl concat a (b : seq.seq' string) = concat a b
00:01:13 verbose #1979 > >     $'let concat x = !concat x' : ()
00:01:13 verbose #1980 > >     $'let join\' x = !join' x' : ()
00:01:13 verbose #1981 > >     $'let to_char_array x = !to_char_array x' : ()
00:01:13 verbose #1982 > >
00:01:13 verbose #1983 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:13 verbose #1984 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:13 verbose #1985 > > │ ## rust                                                                      │
00:01:13 verbose #1986 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:13 verbose #1987 > >
00:01:13 verbose #1988 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:13 verbose #1989 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:13 verbose #1990 > > │ ### to_string std_string                                                     │
00:01:13 verbose #1991 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:13 verbose #1992 > >
00:01:13 verbose #1993 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:13 verbose #1994 > > open rust
00:01:13 verbose #1995 > > instance to_string std_string = from_std_string
00:01:14 verbose #1996 > 00:01:13 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 109595 }
00:01:14 verbose #1997 > 00:01:13   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:01:14 verbose #1998 >     "nbconvert",
00:01:14 verbose #1999 >     "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb",
00:01:14 verbose #2000 >     "--to",
00:01:14 verbose #2001 >     "html",
00:01:14 verbose #2002 >     "--HTMLExporter.theme=dark",
00:01:14 verbose #2003 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:14 verbose #2004 > 00:01:14 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb to html
00:01:14 verbose #2005 > 00:01:14 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:14 verbose #2006 > 00:01:14 verbose #7 !   validate(nb)
00:01:15 verbose #2007 > 00:01:14 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:15 verbose #2008 > 00:01:14 verbose #9 !   return _pygments_highlight(
00:01:16 verbose #2009 > 00:01:15 verbose #10 ! [NbConvertApp] Writing 575293 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.html
00:01:16 verbose #2010 > 00:01:15 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 }
00:01:16 verbose #2011 > 00:01:15   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 }
00:01:16 verbose #2012 > 00:01:15   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:01:16 verbose #2013 >     "-c",
00:01:16 verbose #2014 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/sm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:01:16 verbose #2015 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/sm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:16 verbose #2016 > 00:01:16 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:16 verbose #2017 > 00:01:16   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:16 verbose #2018 > 00:01:16   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 110544 }
00:01:16   debug #2019 runtime.execute_with_options_async / { exit_code = 0; output_length = 117335 }
00:01:16   debug #1 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path sm'.dib --retries 3
00:01:16   debug #2020 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path rust/rust.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:16 verbose #2021 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "rust/rust.dib", "--retries", "3"])) }
00:01:16 verbose #2022 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:01:16 verbose #2023 >     "repl",
00:01:16 verbose #2024 >     "--exit-after-run",
00:01:16 verbose #2025 >     "--run",
00:01:16 verbose #2026 >     "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib",
00:01:16 verbose #2027 >     "--output-path",
00:01:16 verbose #2028 >     "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb",
00:01:16 verbose #2029 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:01:18 verbose #2030 > >
00:01:18 verbose #2031 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:18 verbose #2032 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:18 verbose #2033 > > │ # rust                                                                       │
00:01:18 verbose #2034 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:20 verbose #2035 > >
00:01:20 verbose #2036 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:20 verbose #2037 > > //// test
00:01:20 verbose #2038 > >
00:01:20 verbose #2039 > > open testing
00:01:21 verbose #2040 > >
00:01:21 verbose #2041 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:21 verbose #2042 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:21 verbose #2043 > > │ ## rust                                                                      │
00:01:21 verbose #2044 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:21 verbose #2045 > >
00:01:21 verbose #2046 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:21 verbose #2047 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:21 verbose #2048 > > │ ### any                                                                      │
00:01:21 verbose #2049 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:21 verbose #2050 > >
00:01:21 verbose #2051 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:21 verbose #2052 > > nominal any =
00:01:21 verbose #2053 > >     `(
00:01:21 verbose #2054 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:21 verbose #2055 > > Fable.Core.Emit(\"core::any::Any\")>]]\n#endif\ntype core_any_Any = class end"
00:01:21 verbose #2056 > >         $'' : $'core_any_Any'
00:01:21 verbose #2057 > >     )
00:01:21 verbose #2058 > >
00:01:21 verbose #2059 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:21 verbose #2060 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:21 verbose #2061 > > │ ### try                                                                      │
00:01:21 verbose #2062 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:21 verbose #2063 > >
00:01:21 verbose #2064 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:21 verbose #2065 > > nominal try t =
00:01:21 verbose #2066 > >     `(
00:01:21 verbose #2067 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:21 verbose #2068 > > Fable.Core.Emit(\"_\")>]]\n#endif\ntype core_ops_Try<'T> = class end"
00:01:21 verbose #2069 > >         $'' : $'core_ops_Try<`t>'
00:01:21 verbose #2070 > >     )
00:01:21 verbose #2071 > >
00:01:21 verbose #2072 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:21 verbose #2073 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:21 verbose #2074 > > │ ### cow                                                                      │
00:01:21 verbose #2075 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:21 verbose #2076 > >
00:01:21 verbose #2077 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:21 verbose #2078 > > nominal cow t =
00:01:21 verbose #2079 > >     `(
00:01:21 verbose #2080 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:21 verbose #2081 > > Fable.Core.Emit(\"std::borrow::Cow<$0>\")>]]\n#endif\ntype std_borrow_Cow<'T> =
00:01:21 verbose #2082 > > class end"
00:01:21 verbose #2083 > >         $'' : $'std_borrow_Cow<`t>'
00:01:21 verbose #2084 > >     )
00:01:21 verbose #2085 > >
00:01:21 verbose #2086 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:21 verbose #2087 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:21 verbose #2088 > > │ ### ref_cell                                                                 │
00:01:21 verbose #2089 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:21 verbose #2090 > >
00:01:21 verbose #2091 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:21 verbose #2092 > > nominal ref_cell t =
00:01:21 verbose #2093 > >     `(
00:01:21 verbose #2094 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:21 verbose #2095 > > Fable.Core.Emit(\"std::cell::RefCell<$0>\")>]]\n#endif\ntype
00:01:21 verbose #2096 > > std_cell_RefCell<'T> = class end"
00:01:21 verbose #2097 > >         $'' : $'std_cell_RefCell<`t>'
00:01:21 verbose #2098 > >     )
00:01:21 verbose #2099 > >
00:01:21 verbose #2100 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:21 verbose #2101 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:21 verbose #2102 > > │ ### rc                                                                       │
00:01:21 verbose #2103 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:21 verbose #2104 > >
00:01:21 verbose #2105 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:21 verbose #2106 > > nominal rc t =
00:01:21 verbose #2107 > >     `(
00:01:21 verbose #2108 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:21 verbose #2109 > > Fable.Core.Emit(\"std::rc::Rc<$0>\")>]]\n#endif\ntype std_rc_Rc<'T> = class end"
00:01:21 verbose #2110 > >         $'' : $'std_rc_Rc<`t>'
00:01:21 verbose #2111 > >     )
00:01:21 verbose #2112 > >
00:01:21 verbose #2113 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:21 verbose #2114 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:21 verbose #2115 > > │ ### lifetime_ref                                                             │
00:01:21 verbose #2116 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:21 verbose #2117 > >
00:01:21 verbose #2118 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:21 verbose #2119 > > nominal lifetime_ref (t : * -> *) u =
00:01:21 verbose #2120 > >     `(
00:01:21 verbose #2121 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:21 verbose #2122 > > Fable.Core.Emit(\"$0\")>]]\n#endif\ntype LifetimeRef<'T> = class end"
00:01:21 verbose #2123 > >         $'' : $'LifetimeRef<`(t u)>'
00:01:21 verbose #2124 > >     )
00:01:22 verbose #2125 > >
00:01:22 verbose #2126 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:22 verbose #2127 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:22 verbose #2128 > > │ ### lifetime_join                                                            │
00:01:22 verbose #2129 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:22 verbose #2130 > >
00:01:22 verbose #2131 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:22 verbose #2132 > > nominal lifetime_join t u =
00:01:22 verbose #2133 > >     `(
00:01:22 verbose #2134 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"$0 +
00:01:22 verbose #2135 > > $1\")>]]\n#endif\ntype LifetimeJoin<'T, 'U> = class end"
00:01:22 verbose #2136 > >         $'' : $'LifetimeJoin<`t, `u>'
00:01:22 verbose #2137 > >     )
00:01:22 verbose #2138 > >
00:01:22 verbose #2139 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:22 verbose #2140 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:22 verbose #2141 > > │ ### lifetime                                                                 │
00:01:22 verbose #2142 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:22 verbose #2143 > >
00:01:22 verbose #2144 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:22 verbose #2145 > > nominal lifetime t u =
00:01:22 verbose #2146 > >     `(
00:01:22 verbose #2147 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"$0
00:01:22 verbose #2148 > > $1\")>]]\n#endif\ntype Lifetime<'T, 'U> = class end"
00:01:22 verbose #2149 > >         $'' : $'Lifetime<`t, `u>'
00:01:22 verbose #2150 > >     )
00:01:22 verbose #2151 > >
00:01:22 verbose #2152 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:22 verbose #2153 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:22 verbose #2154 > > │ ### static_lifetime                                                          │
00:01:22 verbose #2155 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:22 verbose #2156 > >
00:01:22 verbose #2157 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:22 verbose #2158 > > nominal static_lifetime =
00:01:22 verbose #2159 > >     `(
00:01:22 verbose #2160 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:22 verbose #2161 > > Fable.Core.Emit(\"'static\")>]]\n#endif\ntype StaticLifetime = class end"
00:01:22 verbose #2162 > >         $'' : $'StaticLifetime'
00:01:22 verbose #2163 > >     )
00:01:22 verbose #2164 > >
00:01:22 verbose #2165 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:22 verbose #2166 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:22 verbose #2167 > > │ ### ref                                                                      │
00:01:22 verbose #2168 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:22 verbose #2169 > >
00:01:22 verbose #2170 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:22 verbose #2171 > > nominal ref t =
00:01:22 verbose #2172 > >     `(
00:01:22 verbose #2173 > >         backend_switch `(()) `({}) {
00:01:22 verbose #2174 > >             Fsharp =
00:01:22 verbose #2175 > >                 (fun () =>
00:01:22 verbose #2176 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:22 verbose #2177 > > Fable.Core.Emit(\"&$0\")>]]\n#endif\ntype Ref<'T> = class end"
00:01:22 verbose #2178 > >                 ) : () -> ()
00:01:22 verbose #2179 > >         }
00:01:22 verbose #2180 > >         $'' : $'Ref<`t>'
00:01:22 verbose #2181 > >     )
00:01:22 verbose #2182 > >
00:01:22 verbose #2183 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:22 verbose #2184 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:22 verbose #2185 > > │ ### static_ref                                                               │
00:01:22 verbose #2186 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:22 verbose #2187 > >
00:01:22 verbose #2188 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:22 verbose #2189 > > nominal static_ref t = ref (lifetime static_lifetime t)
00:01:22 verbose #2190 > >
00:01:22 verbose #2191 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:22 verbose #2192 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:22 verbose #2193 > > │ ### weak_rc                                                                  │
00:01:22 verbose #2194 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:22 verbose #2195 > >
00:01:22 verbose #2196 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:22 verbose #2197 > > nominal weak_rc t =
00:01:22 verbose #2198 > >     `(
00:01:22 verbose #2199 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:22 verbose #2200 > > Fable.Core.Emit(\"std::rc::Weak<$0>\")>]]\n#endif\ntype std_rc_Weak<'T> = class
00:01:22 verbose #2201 > > end"
00:01:22 verbose #2202 > >         $'' : $'std_rc_Weak<`t>'
00:01:22 verbose #2203 > >     )
00:01:22 verbose #2204 > >
00:01:22 verbose #2205 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:22 verbose #2206 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:22 verbose #2207 > > │ ### box                                                                      │
00:01:22 verbose #2208 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:22 verbose #2209 > >
00:01:22 verbose #2210 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:22 verbose #2211 > > nominal box t =
00:01:22 verbose #2212 > >     `(
00:01:22 verbose #2213 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:22 verbose #2214 > > Fable.Core.Emit(\"Box<$0>\")>]]\n#endif\ntype Box<'T> = class end"
00:01:22 verbose #2215 > >         $'' : $'Box<`t>'
00:01:22 verbose #2216 > >     )
00:01:22 verbose #2217 > >
00:01:22 verbose #2218 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:22 verbose #2219 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:22 verbose #2220 > > │ ### mut_cell                                                                 │
00:01:22 verbose #2221 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:22 verbose #2222 > >
00:01:22 verbose #2223 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:22 verbose #2224 > > nominal mut_cell t =
00:01:22 verbose #2225 > >     `(
00:01:22 verbose #2226 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:22 verbose #2227 > > Fable.Core.Emit(\"MutCell<$0>\")>]]\n#endif\ntype MutCell<'T> = class end"
00:01:22 verbose #2228 > >         $'' : $'MutCell<`t>'
00:01:22 verbose #2229 > >     )
00:01:22 verbose #2230 > >
00:01:22 verbose #2231 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:22 verbose #2232 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:22 verbose #2233 > > │ ### pin                                                                      │
00:01:22 verbose #2234 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:22 verbose #2235 > >
00:01:22 verbose #2236 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:22 verbose #2237 > > nominal pin t =
00:01:22 verbose #2238 > >     `(
00:01:22 verbose #2239 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:22 verbose #2240 > > Fable.Core.Emit(\"std::pin::Pin<$0>\")>]]\n#endif\ntype std_pin_Pin<'T> = class
00:01:22 verbose #2241 > > end"
00:01:22 verbose #2242 > >         $'' : $'std_pin_Pin<`t>'
00:01:22 verbose #2243 > >     )
00:01:22 verbose #2244 > >
00:01:22 verbose #2245 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:22 verbose #2246 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:22 verbose #2247 > > │ ### dyn'                                                                     │
00:01:22 verbose #2248 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:22 verbose #2249 > >
00:01:22 verbose #2250 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:22 verbose #2251 > > nominal dyn' t =
00:01:22 verbose #2252 > >     `(
00:01:22 verbose #2253 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"dyn
00:01:22 verbose #2254 > > $0\")>]]\n#endif\ntype Dyn<'T> = class end"
00:01:22 verbose #2255 > >         $'' : $'Dyn<`t>'
00:01:22 verbose #2256 > >     )
00:01:22 verbose #2257 > >
00:01:22 verbose #2258 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:22 verbose #2259 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:22 verbose #2260 > > │ ### fn'                                                                      │
00:01:22 verbose #2261 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:22 verbose #2262 > >
00:01:22 verbose #2263 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:22 verbose #2264 > > nominal fn' t =
00:01:22 verbose #2265 > >     `(
00:01:22 verbose #2266 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"Fn()
00:01:22 verbose #2267 > > -> $0\")>]]\n#endif\ntype Fn<'T> = class end"
00:01:22 verbose #2268 > >         $'' : $'Fn<`t>'
00:01:22 verbose #2269 > >     )
00:01:22 verbose #2270 > >
00:01:22 verbose #2271 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:22 verbose #2272 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:22 verbose #2273 > > │ ### action_fn                                                                │
00:01:22 verbose #2274 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:22 verbose #2275 > >
00:01:22 verbose #2276 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:22 verbose #2277 > > nominal action_fn t =
00:01:22 verbose #2278 > >     `(
00:01:22 verbose #2279 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:22 verbose #2280 > > Fable.Core.Emit(\"Fn($0)\")>]]\n#endif\ntype ActionFn<'T> = class end"
00:01:22 verbose #2281 > >         $'' : $'ActionFn<`t>'
00:01:22 verbose #2282 > >     )
00:01:23 verbose #2283 > >
00:01:23 verbose #2284 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:23 verbose #2285 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:23 verbose #2286 > > │ ### action_fn2                                                               │
00:01:23 verbose #2287 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:23 verbose #2288 > >
00:01:23 verbose #2289 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:23 verbose #2290 > > nominal action_fn2 t u =
00:01:23 verbose #2291 > >     `(
00:01:23 verbose #2292 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:23 verbose #2293 > > Fable.Core.Emit(\"Fn($0, $1)\")>]]\n#endif\ntype ActionFn2<'T, 'U> = class end"
00:01:23 verbose #2294 > >         $'' : $'ActionFn2<`t, `u>'
00:01:23 verbose #2295 > >     )
00:01:23 verbose #2296 > >
00:01:23 verbose #2297 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:23 verbose #2298 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:23 verbose #2299 > > │ ### fn_once                                                                  │
00:01:23 verbose #2300 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:23 verbose #2301 > >
00:01:23 verbose #2302 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:23 verbose #2303 > > nominal fn_once t =
00:01:23 verbose #2304 > >     `(
00:01:23 verbose #2305 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:23 verbose #2306 > > Fable.Core.Emit(\"FnOnce() -> $0\")>]]\n#endif\ntype FnOnce<'T> = class end"
00:01:23 verbose #2307 > >         $'' : $'FnOnce<`t>'
00:01:23 verbose #2308 > >     )
00:01:23 verbose #2309 > >
00:01:23 verbose #2310 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:23 verbose #2311 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:23 verbose #2312 > > │ ### fn_unit                                                                  │
00:01:23 verbose #2313 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:23 verbose #2314 > >
00:01:23 verbose #2315 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:23 verbose #2316 > > nominal fn_unit =
00:01:23 verbose #2317 > >     `(
00:01:23 verbose #2318 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:23 verbose #2319 > > Fable.Core.Emit(\"Fn()\")>]]\n#endif\ntype FnUnit = class end"
00:01:23 verbose #2320 > >         $'' : $'FnUnit'
00:01:23 verbose #2321 > >     )
00:01:23 verbose #2322 > >
00:01:23 verbose #2323 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:23 verbose #2324 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:23 verbose #2325 > > │ ### func0                                                                    │
00:01:23 verbose #2326 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:23 verbose #2327 > >
00:01:23 verbose #2328 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:23 verbose #2329 > > nominal func0 t =
00:01:23 verbose #2330 > >     `(
00:01:23 verbose #2331 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:23 verbose #2332 > > Fable.Core.Emit(\"Func0<$0>\")>]]\n#endif\ntype Func0<'T> = class end"
00:01:23 verbose #2333 > >         $'' : $'Func0<`t>'
00:01:23 verbose #2334 > >     )
00:01:23 verbose #2335 > >
00:01:23 verbose #2336 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:23 verbose #2337 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:23 verbose #2338 > > │ ### func1                                                                    │
00:01:23 verbose #2339 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:23 verbose #2340 > >
00:01:23 verbose #2341 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:23 verbose #2342 > > nominal func1 t u =
00:01:23 verbose #2343 > >     `(
00:01:23 verbose #2344 > >         typecase t with
00:01:23 verbose #2345 > >         | () => `func0 `u
00:01:23 verbose #2346 > >         | _ =>
00:01:23 verbose #2347 > >             global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:23 verbose #2348 > > Fable.Core.Emit(\"Func1<$0, $1>\")>]]\n#endif\ntype Func0<'T, 'U> = class end"
00:01:23 verbose #2349 > >             $'' : $'Func0<`t, `u>'
00:01:23 verbose #2350 > >     )
00:01:23 verbose #2351 > >
00:01:23 verbose #2352 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:23 verbose #2353 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:23 verbose #2354 > > │ ### impl                                                                     │
00:01:23 verbose #2355 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:23 verbose #2356 > >
00:01:23 verbose #2357 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:23 verbose #2358 > > nominal impl t =
00:01:23 verbose #2359 > >     `(
00:01:23 verbose #2360 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"impl
00:01:23 verbose #2361 > > $0\")>]]\n#endif\ntype Impl<'T> = class end"
00:01:23 verbose #2362 > >         $'' : $'Impl<`t>'
00:01:23 verbose #2363 > >     )
00:01:23 verbose #2364 > >
00:01:23 verbose #2365 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:23 verbose #2366 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:23 verbose #2367 > > │ ### mut'                                                                     │
00:01:23 verbose #2368 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:23 verbose #2369 > >
00:01:23 verbose #2370 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:23 verbose #2371 > > nominal mut' t =
00:01:23 verbose #2372 > >     `(
00:01:23 verbose #2373 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"mut
00:01:23 verbose #2374 > > $0\")>]]\n#endif\ntype Mut<'T> = class end"
00:01:23 verbose #2375 > >         $'' : $'Mut<`t>'
00:01:23 verbose #2376 > >     )
00:01:23 verbose #2377 > >
00:01:23 verbose #2378 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:23 verbose #2379 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:23 verbose #2380 > > │ ### send                                                                     │
00:01:23 verbose #2381 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:23 verbose #2382 > >
00:01:23 verbose #2383 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:23 verbose #2384 > > nominal send t =
00:01:23 verbose #2385 > >     `(
00:01:23 verbose #2386 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:23 verbose #2387 > > Fable.Core.Emit(\"Send\")>]]\n#endif\ntype Send<'T> = class end"
00:01:23 verbose #2388 > >         $'' : lifetime_join t $'Send<`t>'
00:01:23 verbose #2389 > >     )
00:01:23 verbose #2390 > >
00:01:23 verbose #2391 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:23 verbose #2392 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:23 verbose #2393 > > │ ### emit_expr                                                                │
00:01:23 verbose #2394 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:23 verbose #2395 > >
00:01:23 verbose #2396 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:23 verbose #2397 > > inl emit_expr forall a t. (args : a) (code : string) : t =
00:01:23 verbose #2398 > >     $'Fable.Core.RustInterop.emitRustExpr !args !code '
00:01:23 verbose #2399 > >
00:01:23 verbose #2400 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:23 verbose #2401 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:23 verbose #2402 > > │ ### (~!\\)                                                                   │
00:01:23 verbose #2403 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:23 verbose #2404 > >
00:01:23 verbose #2405 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:23 verbose #2406 > > inl (~!\) forall t. (code : string) : t =
00:01:23 verbose #2407 > >     emit_expr () code
00:01:23 verbose #2408 > >
00:01:23 verbose #2409 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:23 verbose #2410 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:23 verbose #2411 > > │ ### (~!\\\\)                                                                 │
00:01:23 verbose #2412 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:23 verbose #2413 > >
00:01:23 verbose #2414 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:23 verbose #2415 > > inl (~!\\) forall t u. ((args : t), (code : string)) : u =
00:01:23 verbose #2416 > >     emit_expr args code
00:01:23 verbose #2417 > >
00:01:23 verbose #2418 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:23 verbose #2419 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:23 verbose #2420 > > │ ### ptr                                                                      │
00:01:23 verbose #2421 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:23 verbose #2422 > >
00:01:23 verbose #2423 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:23 verbose #2424 > > nominal ptr t =
00:01:23 verbose #2425 > >     `(
00:01:23 verbose #2426 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:23 verbose #2427 > > Fable.Core.Emit(\"*const $0\")>]]\n#endif\ntype Ptr<'T> = class end"
00:01:23 verbose #2428 > >         $'' : $'Ptr<`t>'
00:01:23 verbose #2429 > >     )
00:01:24 verbose #2430 > >
00:01:24 verbose #2431 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:24 verbose #2432 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:24 verbose #2433 > > │ ### ptr_read                                                                 │
00:01:24 verbose #2434 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:24 verbose #2435 > >
00:01:24 verbose #2436 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:24 verbose #2437 > > inl ptr_read forall t. (x : ptr t) : t =
00:01:24 verbose #2438 > >     !\\(x, $'"std::ptr::read($0)"')
00:01:24 verbose #2439 > >
00:01:24 verbose #2440 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:24 verbose #2441 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:24 verbose #2442 > > │ ### u128                                                                     │
00:01:24 verbose #2443 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:24 verbose #2444 > >
00:01:24 verbose #2445 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:24 verbose #2446 > > nominal u128 =
00:01:24 verbose #2447 > >     `(
00:01:24 verbose #2448 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:24 verbose #2449 > > Fable.Core.Emit(\"u128\")>]]\n#endif\ntype u128 = class end"
00:01:24 verbose #2450 > >         $'' : $'u128'
00:01:24 verbose #2451 > >     )
00:01:24 verbose #2452 > >
00:01:24 verbose #2453 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:24 verbose #2454 > > inl u128 forall t. (x : t) : u128 =
00:01:24 verbose #2455 > >     !\\(x, $'"$0 as u128"')
00:01:24 verbose #2456 > >
00:01:24 verbose #2457 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:24 verbose #2458 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:24 verbose #2459 > > │ ### f64                                                                      │
00:01:24 verbose #2460 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:24 verbose #2461 > >
00:01:24 verbose #2462 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:24 verbose #2463 > > inl f64 forall t. (x : t) : f64 =
00:01:24 verbose #2464 > >     !\\(x, $'"$0 as f64"')
00:01:24 verbose #2465 > >
00:01:24 verbose #2466 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:24 verbose #2467 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:24 verbose #2468 > > │ ### unwrap_0                                                                 │
00:01:24 verbose #2469 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:24 verbose #2470 > >
00:01:24 verbose #2471 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:24 verbose #2472 > > inl unwrap_0 forall (t : * -> *) u. (x : t u) : u =
00:01:24 verbose #2473 > >     !\\(x, $'"$0.0"')
00:01:24 verbose #2474 > >
00:01:24 verbose #2475 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:24 verbose #2476 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:24 verbose #2477 > > │ ### unwrap_0_ref                                                             │
00:01:24 verbose #2478 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:24 verbose #2479 > >
00:01:24 verbose #2480 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:24 verbose #2481 > > inl unwrap_0_ref forall (t : * -> *) u. (x : ref (t u)) : ref u =
00:01:24 verbose #2482 > >     !\\(x, $'"&$0.0"')
00:01:25 verbose #2483 > >
00:01:25 verbose #2484 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:25 verbose #2485 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:25 verbose #2486 > > │ ### emit                                                                     │
00:01:25 verbose #2487 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:25 verbose #2488 > >
00:01:25 verbose #2489 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:25 verbose #2490 > > inl emit forall t. (x : t) : t =
00:01:25 verbose #2491 > >     !\\(x, $'"$0"')
00:01:25 verbose #2492 > >
00:01:25 verbose #2493 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:25 verbose #2494 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:25 verbose #2495 > > │ ### emit'                                                                    │
00:01:25 verbose #2496 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:25 verbose #2497 > >
00:01:25 verbose #2498 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:25 verbose #2499 > > inl emit' forall t. (x : t) : t =
00:01:25 verbose #2500 > >     !\\(x, $'"let !x = $0"')
00:01:25 verbose #2501 > >     x
00:01:25 verbose #2502 > >
00:01:25 verbose #2503 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:25 verbose #2504 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:25 verbose #2505 > > │ ### clone                                                                    │
00:01:25 verbose #2506 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:25 verbose #2507 > >
00:01:25 verbose #2508 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:25 verbose #2509 > > inl clone forall t. (x : t) : t =
00:01:25 verbose #2510 > >     !\\(x, $'"$0.clone()"')
00:01:25 verbose #2511 > >
00:01:25 verbose #2512 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:25 verbose #2513 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:25 verbose #2514 > > │ ### dbg                                                                      │
00:01:25 verbose #2515 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:25 verbose #2516 > >
00:01:25 verbose #2517 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:25 verbose #2518 > > inl dbg forall t. (x : t) : t =
00:01:25 verbose #2519 > >     !\\(x, $'"dbg\!($0)"')
00:01:25 verbose #2520 > >
00:01:25 verbose #2521 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:25 verbose #2522 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:25 verbose #2523 > > │ ### new_box                                                                  │
00:01:25 verbose #2524 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:25 verbose #2525 > >
00:01:25 verbose #2526 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:25 verbose #2527 > > inl new_box forall t. (x : t) : box t =
00:01:25 verbose #2528 > >     !\\(x, $'"Box::new($0)"')
00:01:25 verbose #2529 > >
00:01:25 verbose #2530 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:25 verbose #2531 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:25 verbose #2532 > > │ ### new_rc                                                                   │
00:01:25 verbose #2533 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:25 verbose #2534 > >
00:01:25 verbose #2535 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:25 verbose #2536 > > inl new_rc forall t. (x : t) : rc t =
00:01:25 verbose #2537 > >     !\\(x, $'"std::rc::Rc::new($0)"')
00:01:25 verbose #2538 > >
00:01:25 verbose #2539 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:25 verbose #2540 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:25 verbose #2541 > > │ ### rc_clone                                                                 │
00:01:25 verbose #2542 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:25 verbose #2543 > >
00:01:25 verbose #2544 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:25 verbose #2545 > > inl rc_clone forall t. (x : rc t) : rc t =
00:01:25 verbose #2546 > >     !\\(x, $'"std::rc::Rc::clone(&$0)"')
00:01:25 verbose #2547 > >
00:01:25 verbose #2548 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:25 verbose #2549 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:25 verbose #2550 > > │ ### rc_unwrap_or_clone                                                       │
00:01:25 verbose #2551 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:25 verbose #2552 > >
00:01:25 verbose #2553 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:25 verbose #2554 > > inl rc_unwrap_or_clone forall t. (x : rc t) : t =
00:01:25 verbose #2555 > >     !\\(x, $'"std::rc::Rc::unwrap_or_clone($0)"')
00:01:25 verbose #2556 > >
00:01:25 verbose #2557 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:25 verbose #2558 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:25 verbose #2559 > > │ ### rc_downgrade                                                             │
00:01:25 verbose #2560 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:25 verbose #2561 > >
00:01:25 verbose #2562 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:25 verbose #2563 > > inl rc_downgrade forall t. (x : rc t) : weak_rc t =
00:01:25 verbose #2564 > >     !\\(x, $'"std::rc::Rc::downgrade(&$0)"')
00:01:25 verbose #2565 > >
00:01:25 verbose #2566 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:25 verbose #2567 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:25 verbose #2568 > > │ ### new_ref_cell                                                             │
00:01:25 verbose #2569 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:25 verbose #2570 > >
00:01:25 verbose #2571 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:25 verbose #2572 > > inl new_ref_cell forall t. (x : t) : ref_cell t =
00:01:25 verbose #2573 > >     !\\(x, $'"std::cell::RefCell::new($0)"')
00:01:25 verbose #2574 > >
00:01:25 verbose #2575 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:25 verbose #2576 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:25 verbose #2577 > > │ ### ref_cell_borrow                                                          │
00:01:25 verbose #2578 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:25 verbose #2579 > >
00:01:25 verbose #2580 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:25 verbose #2581 > > inl ref_cell_borrow forall t. (x : rc (ref_cell t)) : t =
00:01:25 verbose #2582 > >     !\\(x, $'"*std::cell::RefCell::borrow(&std::rc::Rc::clone(&$0))"')
00:01:26 verbose #2583 > >
00:01:26 verbose #2584 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:26 verbose #2585 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:26 verbose #2586 > > │ ### ref_cell_borrow_mut                                                      │
00:01:26 verbose #2587 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:26 verbose #2588 > >
00:01:26 verbose #2589 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:26 verbose #2590 > > inl ref_cell_borrow_mut forall t. (x : rc (ref_cell t)) : mut' t =
00:01:26 verbose #2591 > >     !\\(x, $'"*std::cell::RefCell::borrow_mut(&std::rc::Rc::clone(&$0))"')
00:01:26 verbose #2592 > >
00:01:26 verbose #2593 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:26 verbose #2594 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:26 verbose #2595 > > │ ### to_mut                                                                   │
00:01:26 verbose #2596 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:26 verbose #2597 > >
00:01:26 verbose #2598 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:26 verbose #2599 > > inl to_mut forall t. (x : t) : () =
00:01:26 verbose #2600 > >     (!\($'"true; // 1"') : bool) |> ignore
00:01:26 verbose #2601 > >     !\($'"let mut !x = !x"') : ()
00:01:26 verbose #2602 > >     // (!\($'"true; !x"') : bool) |> ignore
00:01:26 verbose #2603 > >     // !\($'"!x"')
00:01:26 verbose #2604 > >     // inl result = !\($'"!x"') : mut' t
00:01:26 verbose #2605 > >     // !\($'"!result"')
00:01:26 verbose #2606 > >     // inl result = !\($'"*/ // a"') : mut' t
00:01:26 verbose #2607 > >     // inl result = !\($'"!x"') : mut' t
00:01:26 verbose #2608 > >     // result |> fun x => $'!x |> unbox // b'
00:01:26 verbose #2609 > >
00:01:26 verbose #2610 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:26 verbose #2611 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:26 verbose #2612 > > │ ### ref_map                                                                  │
00:01:26 verbose #2613 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:26 verbose #2614 > >
00:01:26 verbose #2615 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:26 verbose #2616 > > inl ref_map forall t u. (fn : t -> u) (x : ref t) : ref u =
00:01:26 verbose #2617 > >     !\($'"!fn(!x)"')
00:01:26 verbose #2618 > >
00:01:26 verbose #2619 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:26 verbose #2620 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:26 verbose #2621 > > │ ### ref_eval                                                                 │
00:01:26 verbose #2622 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:26 verbose #2623 > >
00:01:26 verbose #2624 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:26 verbose #2625 > > inl ref_eval forall t u. (fn : t -> u) (ref : ref t) : u =
00:01:26 verbose #2626 > >     !\\(fn, $'"$0(!ref.clone())"')
00:01:26 verbose #2627 > >
00:01:26 verbose #2628 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:26 verbose #2629 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:26 verbose #2630 > > │ ### cow_as_ref                                                               │
00:01:26 verbose #2631 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:26 verbose #2632 > >
00:01:26 verbose #2633 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:26 verbose #2634 > > inl cow_as_ref forall t. (s : cow t) : ref t =
00:01:26 verbose #2635 > >     !\\(s, $'"$0.as_ref()"')
00:01:26 verbose #2636 > >
00:01:26 verbose #2637 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:26 verbose #2638 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:26 verbose #2639 > > │ ### from_mut                                                                 │
00:01:26 verbose #2640 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:26 verbose #2641 > >
00:01:26 verbose #2642 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:26 verbose #2643 > > inl from_mut forall t. (x : mut' t) : t =
00:01:26 verbose #2644 > >     !\($'"!x"')
00:01:26 verbose #2645 > >
00:01:26 verbose #2646 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:26 verbose #2647 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:26 verbose #2648 > > │ ### box_fn                                                                   │
00:01:26 verbose #2649 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:26 verbose #2650 > >
00:01:26 verbose #2651 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:26 verbose #2652 > > inl box_fn forall t. (x : () -> ()) : box t =
00:01:26 verbose #2653 > >     inl x = join x
00:01:26 verbose #2654 > >     !\($'"Box::new(move || !x())"')
00:01:26 verbose #2655 > >
00:01:26 verbose #2656 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:26 verbose #2657 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:26 verbose #2658 > > │ ### box_pin                                                                  │
00:01:26 verbose #2659 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:26 verbose #2660 > >
00:01:26 verbose #2661 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:26 verbose #2662 > > inl box_pin forall t. (x : t) : pin (box t) =
00:01:26 verbose #2663 > >     !\\(x, $'"Box::pin($0)"')
00:01:26 verbose #2664 > >
00:01:26 verbose #2665 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:26 verbose #2666 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:26 verbose #2667 > > │ ### to_ref                                                                   │
00:01:26 verbose #2668 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:26 verbose #2669 > >
00:01:26 verbose #2670 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:26 verbose #2671 > > inl to_ref forall t. (x : t) : ref t =
00:01:26 verbose #2672 > >     !\\(x, $'"&$0"')
00:01:26 verbose #2673 > >
00:01:26 verbose #2674 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:26 verbose #2675 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:26 verbose #2676 > > │ ### to_ref_mut                                                               │
00:01:26 verbose #2677 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:26 verbose #2678 > >
00:01:26 verbose #2679 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:26 verbose #2680 > > inl to_ref_mut forall t. (x : t) : ref (mut' t) =
00:01:26 verbose #2681 > >     !\\(x, $'"&mut $0"')
00:01:26 verbose #2682 > >
00:01:26 verbose #2683 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:26 verbose #2684 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:26 verbose #2685 > > │ ### deref                                                                    │
00:01:26 verbose #2686 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:26 verbose #2687 > >
00:01:26 verbose #2688 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:26 verbose #2689 > > inl deref forall t. (ref : ref t) : t =
00:01:26 verbose #2690 > >     !\\(ref, $'"*$0"')
00:01:27 verbose #2691 > >
00:01:27 verbose #2692 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:27 verbose #2693 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:27 verbose #2694 > > │ ### from_ref                                                                 │
00:01:27 verbose #2695 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:27 verbose #2696 > >
00:01:27 verbose #2697 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 verbose #2698 > > inl from_ref forall t. (ref : ref t) : t =
00:01:27 verbose #2699 > >     !\($'"!ref"')
00:01:27 verbose #2700 > >
00:01:27 verbose #2701 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:27 verbose #2702 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:27 verbose #2703 > > │ ### into                                                                     │
00:01:27 verbose #2704 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:27 verbose #2705 > >
00:01:27 verbose #2706 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 verbose #2707 > > inl into forall t u. (x : t) : u =
00:01:27 verbose #2708 > >     !\($'"!x.into()"')
00:01:27 verbose #2709 > >
00:01:27 verbose #2710 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:27 verbose #2711 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:27 verbose #2712 > > │ ### ops_deref                                                                │
00:01:27 verbose #2713 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:27 verbose #2714 > >
00:01:27 verbose #2715 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 verbose #2716 > > inl ops_deref forall t. (ref : t) : t =
00:01:27 verbose #2717 > >     !\\(ref, $'"core::ops::Deref::deref(&$0)"')
00:01:27 verbose #2718 > >
00:01:27 verbose #2719 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:27 verbose #2720 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:27 verbose #2721 > > │ ### func0_eval                                                               │
00:01:27 verbose #2722 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:27 verbose #2723 > >
00:01:27 verbose #2724 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 verbose #2725 > > inl func0_eval forall t. (x : func0 t) : t =
00:01:27 verbose #2726 > >     !\\(x, $'"$0()"')
00:01:27 verbose #2727 > >
00:01:27 verbose #2728 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:27 verbose #2729 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:27 verbose #2730 > > │ ### func0_move                                                               │
00:01:27 verbose #2731 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:27 verbose #2732 > >
00:01:27 verbose #2733 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 verbose #2734 > > inl func0_move forall t. (fn : func0 t) : t =
00:01:27 verbose #2735 > >     inl fn = join fn
00:01:27 verbose #2736 > >     !\($'"(move || !fn())()"')
00:01:27 verbose #2737 > >
00:01:27 verbose #2738 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:27 verbose #2739 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:27 verbose #2740 > > │ ### move                                                                     │
00:01:27 verbose #2741 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:27 verbose #2742 > >
00:01:27 verbose #2743 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 verbose #2744 > > inl move forall t. (fn : () -> t) : func0 t =
00:01:27 verbose #2745 > >     !\\(fn, $'"Func0::new(move || $0())"')
00:01:27 verbose #2746 > >
00:01:27 verbose #2747 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:27 verbose #2748 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:27 verbose #2749 > > │ ### to_static_ref_unbox                                                      │
00:01:27 verbose #2750 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:27 verbose #2751 > >
00:01:27 verbose #2752 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 verbose #2753 > > inl to_static_ref_unbox forall t. (x : ref t) : static_ref t =
00:01:27 verbose #2754 > >     x |> unbox
00:01:27 verbose #2755 > >
00:01:27 verbose #2756 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:27 verbose #2757 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:27 verbose #2758 > > │ ### from_static_ref_unbox                                                    │
00:01:27 verbose #2759 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:27 verbose #2760 > >
00:01:27 verbose #2761 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 verbose #2762 > > inl from_static_ref_unbox forall t. (x : static_ref t) : ref t =
00:01:27 verbose #2763 > >     x |> unbox
00:01:27 verbose #2764 > >
00:01:27 verbose #2765 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:27 verbose #2766 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:27 verbose #2767 > > │ ### box_leak                                                                 │
00:01:27 verbose #2768 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:27 verbose #2769 > >
00:01:27 verbose #2770 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 verbose #2771 > > inl box_leak forall t. (x : box t) : static_ref (mut' t) =
00:01:27 verbose #2772 > >     !\\(x, $'"Box::leak($0)"')
00:01:27 verbose #2773 > >
00:01:27 verbose #2774 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:27 verbose #2775 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:27 verbose #2776 > > │ ### drop                                                                     │
00:01:27 verbose #2777 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:27 verbose #2778 > >
00:01:27 verbose #2779 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 verbose #2780 > > inl drop forall t. (x : t) : () =
00:01:27 verbose #2781 > >     (!\\(x, $'"true; drop($0)"') : bool) |> ignore
00:01:27 verbose #2782 > >
00:01:27 verbose #2783 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:27 verbose #2784 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:27 verbose #2785 > > │ ### break                                                                    │
00:01:27 verbose #2786 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:27 verbose #2787 > >
00:01:27 verbose #2788 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:27 verbose #2789 > > inl break () : () =
00:01:27 verbose #2790 > >     (!\($'"true; break"') : bool) |> ignore
00:01:28 verbose #2791 > >
00:01:28 verbose #2792 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:28 verbose #2793 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:28 verbose #2794 > > │ ### fix_closure'                                                             │
00:01:28 verbose #2795 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:28 verbose #2796 > >
00:01:28 verbose #2797 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:28 verbose #2798 > > inl fix_closure' (depth : u8 * u8) x =
00:01:28 verbose #2799 > >     inl rec loop text (acc : string) n : string =
00:01:28 verbose #2800 > >         if n <= 0
00:01:28 verbose #2801 > >         then acc
00:01:28 verbose #2802 > >         else loop text (acc +. text) (n - 1)
00:01:28 verbose #2803 > >     inl a = depth |> fst |> loop "}" ""
00:01:28 verbose #2804 > >     inl b = depth |> snd |> loop "{" ""
00:01:28 verbose #2805 > >     $'"true; !x " + !a + "); " + !b + " // rust.fix_closure\'"' : string
00:01:28 verbose #2806 > >
00:01:28 verbose #2807 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:28 verbose #2808 > > //// test
00:01:28 verbose #2809 > >
00:01:28 verbose #2810 > > fix_closure' (3, 2) 0i32
00:01:28 verbose #2811 > > |> _assert_eq "true; 0 }}}); {{ // rust.fix_closure'"
00:01:28 verbose #2812 > >
00:01:28 verbose #2813 > > ╭─[ 604.64ms - stdout ]────────────────────────────────────────────────────────╮
00:01:28 verbose #2814 > > │ __assert_eq / actual: "true; 0 }}}); {{ // rust.fix_closure'" / expected:    │
00:01:28 verbose #2815 > > │ "true; 0 }}}); {{ // rust.fix_closure'"                                      │
00:01:28 verbose #2816 > > │                                                                              │
00:01:28 verbose #2817 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:28 verbose #2818 > >
00:01:28 verbose #2819 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:28 verbose #2820 > > //// test
00:01:28 verbose #2821 > >
00:01:28 verbose #2822 > > fix_closure' (0, 0) ()
00:01:28 verbose #2823 > > |> _assert_eq "true; () );  // rust.fix_closure\'"
00:01:28 verbose #2824 > >
00:01:28 verbose #2825 > > ╭─[ 112.71ms - stdout ]────────────────────────────────────────────────────────╮
00:01:28 verbose #2826 > > │ __assert_eq / actual: "true; () );  // rust.fix_closure'" / expected: "true; │
00:01:28 verbose #2827 > > │ () );  // rust.fix_closure'"                                                 │
00:01:28 verbose #2828 > > │                                                                              │
00:01:28 verbose #2829 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:28 verbose #2830 > >
00:01:28 verbose #2831 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:28 verbose #2832 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:28 verbose #2833 > > │ ### fix_closure                                                              │
00:01:28 verbose #2834 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:28 verbose #2835 > >
00:01:28 verbose #2836 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:28 verbose #2837 > > inl fix_closure depth x =
00:01:28 verbose #2838 > >     inl code = fix_closure' depth x
00:01:28 verbose #2839 > >     (!\code : bool) |> ignore
00:01:28 verbose #2840 > >
00:01:28 verbose #2841 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:28 verbose #2842 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:28 verbose #2843 > > │ ### loop                                                                     │
00:01:28 verbose #2844 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:28 verbose #2845 > >
00:01:28 verbose #2846 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:28 verbose #2847 > > inl loop (depth : i32) (fn : () -> ()) : () =
00:01:28 verbose #2848 > >     (!\($'"true; loop { // rust.loop"') : bool) |> ignore
00:01:28 verbose #2849 > >     fn ()
00:01:28 verbose #2850 > >
00:01:28 verbose #2851 > >     listm.init depth id
00:01:28 verbose #2852 > >     |> listm.iter fun n =>
00:01:28 verbose #2853 > >         (!\($'"true; } // rust.loop"') : bool) |> ignore
00:01:28 verbose #2854 > >
00:01:28 verbose #2855 > >     (!\($'"true; } // rust.loop"') : bool) |> ignore
00:01:28 verbose #2856 > >
00:01:28 verbose #2857 > >     listm.init depth id
00:01:28 verbose #2858 > >     |> listm.iter fun n =>
00:01:28 verbose #2859 > >         (!\($'"true; { // rust.loop"') : bool) |> ignore
00:01:29 verbose #2860 > >
00:01:29 verbose #2861 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:29 verbose #2862 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:29 verbose #2863 > > │ ### capture                                                                  │
00:01:29 verbose #2864 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:29 verbose #2865 > >
00:01:29 verbose #2866 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:29 verbose #2867 > > inl capture forall t. (fn : () -> t) : t =
00:01:29 verbose #2868 > >     (!\($'"true; let _capture = (|| { //"') : bool) |> ignore
00:01:29 verbose #2869 > >     (!\\(fn (), $'"true; $0 })()"') : bool) |> ignore
00:01:29 verbose #2870 > >     !\($'"_capture"')
00:01:29 verbose #2871 > >
00:01:29 verbose #2872 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:29 verbose #2873 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:29 verbose #2874 > > │ ### capture_move                                                             │
00:01:29 verbose #2875 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:29 verbose #2876 > >
00:01:29 verbose #2877 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:29 verbose #2878 > > inl capture_move forall t. (fn : () -> t) : t =
00:01:29 verbose #2879 > >     (!\($'"true; let _capture_move = (move || { //"') : bool) |> ignore
00:01:29 verbose #2880 > >     (!\\(fn (), $'"true; $0 })()"') : bool) |> ignore
00:01:29 verbose #2881 > >     !\($'"_capture_move"')
00:01:29 verbose #2882 > >
00:01:29 verbose #2883 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:29 verbose #2884 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:29 verbose #2885 > > │ ### type_emit                                                                │
00:01:29 verbose #2886 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:29 verbose #2887 > >
00:01:29 verbose #2888 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:29 verbose #2889 > > nominal type_emit t =
00:01:29 verbose #2890 > >     `(
00:01:29 verbose #2891 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"*/ $0
00:01:29 verbose #2892 > > /*\")>]]\n#endif\ntype TypeEmit<'T> = class end"
00:01:29 verbose #2893 > >         $'' : $'TypeEmit<`t>'
00:01:29 verbose #2894 > >     )
00:01:29 verbose #2895 > >
00:01:29 verbose #2896 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:29 verbose #2897 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:29 verbose #2898 > > │ ### partial_eq_wrapper                                                       │
00:01:29 verbose #2899 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:29 verbose #2900 > >
00:01:29 verbose #2901 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:29 verbose #2902 > > nominal partial_eq_wrapper t =
00:01:29 verbose #2903 > >     `(
00:01:29 verbose #2904 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:29 verbose #2905 > > Fable.Core.Emit(\"PartialEqWrapper<$0>\")>]]\n#endif\ntype PartialEqWrapper<'T>
00:01:29 verbose #2906 > > = class end"
00:01:29 verbose #2907 > >         $'' : $'PartialEqWrapper<`t>'
00:01:29 verbose #2908 > >     )
00:01:29 verbose #2909 > >
00:01:29 verbose #2910 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:29 verbose #2911 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:29 verbose #2912 > > │ ### new_partial_eq_wrapper                                                   │
00:01:29 verbose #2913 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:29 verbose #2914 > >
00:01:29 verbose #2915 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:29 verbose #2916 > > inl new_partial_eq_wrapper forall t.
00:01:29 verbose #2917 > >     (eq_fn : ref (partial_eq_wrapper t) -> ref (partial_eq_wrapper t) -> bool)
00:01:29 verbose #2918 > >     (x : t)
00:01:29 verbose #2919 > >     : partial_eq_wrapper t
00:01:29 verbose #2920 > >     =
00:01:29 verbose #2921 > >     inl struct () =
00:01:29 verbose #2922 > >         !\($'"} //"') : ()
00:01:29 verbose #2923 > >
00:01:29 verbose #2924 > >         !\($'"#[[derive( //"') : ()
00:01:29 verbose #2925 > >         !\($'"  Debug, //"') : ()
00:01:29 verbose #2926 > >         !\($'"  Clone, //"') : ()
00:01:29 verbose #2927 > >         !\($'")]] //"') : ()
00:01:29 verbose #2928 > >         !\($'"pub struct PartialEqWrapper<T>(T); /*"') : ()
00:01:29 verbose #2929 > >
00:01:29 verbose #2930 > >         !\($'"*/ impl PartialEq for PartialEqWrapper< /*"') : ()
00:01:29 verbose #2931 > >         (null () : type_emit t) |> ignore
00:01:29 verbose #2932 > >         !\($'"*/ > { //"') : ()
00:01:29 verbose #2933 > >
00:01:29 verbose #2934 > >         !\($'"fn eq(&self, other: &Self) -> bool { //"') : ()
00:01:29 verbose #2935 > >
00:01:29 verbose #2936 > >         inl self : ref (partial_eq_wrapper t) = !\($'$"self"')
00:01:29 verbose #2937 > >         inl other : ref (partial_eq_wrapper t) = !\($'$"other"')
00:01:29 verbose #2938 > >
00:01:29 verbose #2939 > >         self
00:01:29 verbose #2940 > >         |> eq_fn other
00:01:29 verbose #2941 > >         |> fun x => !\($'$"!x //"')
00:01:29 verbose #2942 > >
00:01:29 verbose #2943 > >         !\($'"} } } fn _main() { { { //"') : ()
00:01:29 verbose #2944 > >
00:01:29 verbose #2945 > >     $'let _!struct = true' : ()
00:01:29 verbose #2946 > >
00:01:29 verbose #2947 > >     !\\(x, $'"PartialEqWrapper($0)"')
00:01:29 verbose #2948 > >
00:01:29 verbose #2949 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:29 verbose #2950 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:29 verbose #2951 > > │ ### clone_wrapper                                                            │
00:01:29 verbose #2952 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:29 verbose #2953 > >
00:01:29 verbose #2954 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:29 verbose #2955 > > nominal clone_wrapper t =
00:01:29 verbose #2956 > >     `(
00:01:29 verbose #2957 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:01:29 verbose #2958 > > Fable.Core.Emit(\"CloneWrapper<$0>\")>]]\n#endif\ntype CloneWrapper<'T> = class
00:01:29 verbose #2959 > > end"
00:01:29 verbose #2960 > >         $'' : $'CloneWrapper<`t>'
00:01:29 verbose #2961 > >     )
00:01:29 verbose #2962 > >
00:01:29 verbose #2963 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:29 verbose #2964 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:29 verbose #2965 > > │ ### new_clone_wrapper                                                        │
00:01:29 verbose #2966 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:29 verbose #2967 > >
00:01:29 verbose #2968 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:29 verbose #2969 > > inl new_clone_wrapper forall t.
00:01:29 verbose #2970 > >     (clone_fn : ref (clone_wrapper t) -> ref (clone_wrapper t))
00:01:29 verbose #2971 > >     (x : t)
00:01:29 verbose #2972 > >     : clone_wrapper t
00:01:29 verbose #2973 > >     =
00:01:29 verbose #2974 > >     inl struct () =
00:01:29 verbose #2975 > >         !\($'"} //"') : ()
00:01:29 verbose #2976 > >
00:01:29 verbose #2977 > >         !\($'"#[[derive( //"') : ()
00:01:29 verbose #2978 > >         !\($'"  Debug, //"') : ()
00:01:29 verbose #2979 > >         !\($'")]] //"') : ()
00:01:29 verbose #2980 > >         !\($'"pub struct CloneWrapper<T>(T); /*"') : ()
00:01:29 verbose #2981 > >
00:01:29 verbose #2982 > >         !\($'"*/ impl Clone for CloneWrapper< /*"') : ()
00:01:29 verbose #2983 > >         (null () : type_emit t) |> ignore
00:01:29 verbose #2984 > >         !\($'"*/ > { //"') : ()
00:01:29 verbose #2985 > >
00:01:29 verbose #2986 > >         !\($'"fn clone(&self) -> Self { //"') : ()
00:01:29 verbose #2987 > >
00:01:29 verbose #2988 > >         inl self : ref (clone_wrapper t) = !\($'$"self"')
00:01:29 verbose #2989 > >
00:01:29 verbose #2990 > >         self
00:01:29 verbose #2991 > >         |> clone_fn
00:01:29 verbose #2992 > >         |> fun x => !\($'$"!x.clone() //"')
00:01:29 verbose #2993 > >
00:01:29 verbose #2994 > >         !\($'"} } } fn _main() { { { //"') : ()
00:01:29 verbose #2995 > >
00:01:29 verbose #2996 > >     $'let _!struct = true' : ()
00:01:29 verbose #2997 > >
00:01:29 verbose #2998 > >     !\\(x, $'"CloneWrapper($0)"')
00:01:29 verbose #2999 > 00:00:13 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 53807 }
00:01:29 verbose #3000 > 00:00:13   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:01:29 verbose #3001 >     "nbconvert",
00:01:29 verbose #3002 >     "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb",
00:01:29 verbose #3003 >     "--to",
00:01:29 verbose #3004 >     "html",
00:01:29 verbose #3005 >     "--HTMLExporter.theme=dark",
00:01:29 verbose #3006 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:30 verbose #3007 > 00:00:13 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb to html
00:01:30 verbose #3008 > 00:00:13 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:01:30 verbose #3009 > 00:00:13 verbose #7 !   validate(nb)
00:01:30 verbose #3010 > 00:00:14 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:01:30 verbose #3011 > 00:00:14 verbose #9 !   return _pygments_highlight(
00:01:31 verbose #3012 > 00:00:14 verbose #10 ! [NbConvertApp] Writing 423643 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.html
00:01:31 verbose #3013 > 00:00:14 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 }
00:01:31 verbose #3014 > 00:00:14   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 }
00:01:31 verbose #3015 > 00:00:14   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:01:31 verbose #3016 >     "-c",
00:01:31 verbose #3017 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:01:31 verbose #3018 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:31 verbose #3019 > 00:00:15 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:01:31 verbose #3020 > 00:00:15   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:01:31 verbose #3021 > 00:00:15   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 54768 }
00:01:31   debug #3022 runtime.execute_with_options_async / { exit_code = 0; output_length = 59577 }
00:01:31   debug #2 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path rust/rust.dib --retries 3
00:01:31   debug #3023 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path rust/testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:01:31 verbose #3024 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "rust/testing.dib", "--retries", "3"])) }
00:01:31 verbose #3025 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:01:31 verbose #3026 >     "repl",
00:01:31 verbose #3027 >     "--exit-after-run",
00:01:31 verbose #3028 >     "--run",
00:01:31 verbose #3029 >     "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib",
00:01:31 verbose #3030 >     "--output-path",
00:01:31 verbose #3031 >     "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb",
00:01:31 verbose #3032 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:01:33 verbose #3033 > >
00:01:33 verbose #3034 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:33 verbose #3035 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:33 verbose #3036 > > │ # rust/testing                                                               │
00:01:33 verbose #3037 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:35 verbose #3038 > >
00:01:35 verbose #3039 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:35 verbose #3040 > > open rust.rust_operators
00:01:36 verbose #3041 > >
00:01:36 verbose #3042 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:36 verbose #3043 > > //// test
00:01:36 verbose #3044 > >
00:01:36 verbose #3045 > > open testing
00:01:36 verbose #3046 > >
00:01:36 verbose #3047 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:36 verbose #3048 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:36 verbose #3049 > > │ ### run_tests'                                                               │
00:01:36 verbose #3050 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:36 verbose #3051 > >
00:01:36 verbose #3052 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:36 verbose #3053 > > inl run_tests' tests =
00:01:36 verbose #3054 > >     (!\($'"true; () //"') : bool) |> ignore
00:01:36 verbose #3055 > >
00:01:36 verbose #3056 > >     inl fields = reflection.get_record_fields tests
00:01:36 verbose #3057 > >
00:01:36 verbose #3058 > >     fields
00:01:36 verbose #3059 > >     |> listm.iter fun name, (fn : string -> ()) =>
00:01:36 verbose #3060 > >         !\($'"} /* /*"')
00:01:36 verbose #3061 > >         (!\($'$"*/ #[[test]] fn " + !name + "() { //"') : bool) |> ignore
00:01:36 verbose #3062 > >         fn name
00:01:36 verbose #3063 > >
00:01:36 verbose #3064 > >     fields
00:01:36 verbose #3065 > >     |> listm.iter fun _ =>
00:01:36 verbose #3066 > >         !\($'"{ //"') : ()
00:01:36 verbose #3067 > >
00:01:36 verbose #3068 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:36 verbose #3069 > > //// test
00:01:36 verbose #3070 > >
00:01:36 verbose #3071 > > inl run test =
00:01:36 verbose #3072 > >     if env.get_environment_variable "TEST" = "1"
00:01:36 verbose #3073 > >     then ()
00:01:36 verbose #3074 > >     else
00:01:36 verbose #3075 > >         runtime.execution_options fun x => { x with
00:01:36 verbose #3076 > >             command = "cargo test -- --show-output"
00:01:36 verbose #3077 > >             working_directory = file_system.get_source_directory () |> Some |>
00:01:36 verbose #3078 > > optionm'.box
00:01:36 verbose #3079 > >             environment_variables = ;[[ "TEST", "1" ]]
00:01:36 verbose #3080 > >         }
00:01:36 verbose #3081 > >         |> runtime.execute_with_options
00:01:36 verbose #3082 > >         |> fun exit_code, result =>
00:01:36 verbose #3083 > >             exit_code |> _assert_eq 0i32
00:01:36 verbose #3084 > >             result |> _assert_string_contains "test result: ok. 1 passed; 0
00:01:36 verbose #3085 > > failed; 0 ignored;"
00:01:36 verbose #3086 > >
00:01:36 verbose #3087 > >     $'let tests () = !test ()' : ()
00:01:36 verbose #3088 > >
00:01:36 verbose #3089 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:36 verbose #3090 > > //// test
00:01:36 verbose #3091 > > ///! rust -d encoding_rs encoding_rs_io
00:01:36 verbose #3092 > >
00:01:36 verbose #3093 > > fun () =>
00:01:36 verbose #3094 > >     run_tests' {
00:01:36 verbose #3095 > >         a = _assert_eq "a"
00:01:36 verbose #3096 > >     }
00:01:36 verbose #3097 > > |> run
00:01:53 verbose #3098 > >
00:01:53 verbose #3099 > > ╭─[ 16.63s - return value ]────────────────────────────────────────────────────╮
00:01:53 verbose #3100 > > │ 00:00:00   debug #1 runtime.execute_with_options / { file_name =       │
00:01:53 verbose #3101 > > │ cargo; arguments = [                                                         │
00:01:53 verbose #3102 > > │     "test",                                                                  │
00:01:53 verbose #3103 > > │     "--",                                                                    │
00:01:53 verbose #3104 > > │     "--show-output",                                                         │
00:01:53 verbose #3105 > > │ ]; options = { command = cargo test -- --show-output; cancellation_token =   │
00:01:53 verbose #3106 > > │ None; environment_variables = Array(MutCell([("TEST", "1")])); on_line =     │
00:01:53 verbose #3107 > > │ None; stdin = None; trace = true; working_directory = Some(                  │
00:01:53 verbose #3108 > > │                                                                              │
00:01:53 verbose #3109 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:01:53 verbose #3110 > > │ ckages/Rust/66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767bb6d │
00:01:53 verbose #3111 > > │ ",                                                                           │
00:01:53 verbose #3112 > > │ ) } }                                                                        │
00:01:53 verbose #3113 > > │ 00:00:00 verbose #2 !    Compiling                              │
00:01:53 verbose #3114 > > │ spiral_builder_66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767b │
00:01:53 verbose #3115 > > │ b6d v0.0.1                                                                   │
00:01:53 verbose #3116 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:01:53 verbose #3117 > > │ ckages/Rust/66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767bb6d │
00:01:53 verbose #3118 > > │ )                                                                            │
00:01:53 verbose #3119 > > │ 00:00:01 verbose #3 !     Finished `test` profile [unoptimized  │
00:01:53 verbose #3120 > > │ + debuginfo] target(s) in 1.33s                                              │
00:01:53 verbose #3121 > > │ 00:00:01 verbose #4 !      Running unittests spiral_builder.rs  │
00:01:53 verbose #3122 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/ta │
00:01:53 verbose #3123 > > │ rget/debug/deps/spiral_builder_66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2 │
00:01:53 verbose #3124 > > │ e27d2d05bc91767bb6d-eee90a269654ed30)                                        │
00:01:53 verbose #3125 > > │ 00:00:01 verbose #5 >                                                  │
00:01:53 verbose #3126 > > │ 00:00:01 verbose #6 > running 1 test                                   │
00:01:53 verbose #3127 > > │ 00:00:01 verbose #7 > test module_7e2cd9e0::Spiral_builder::a ... ok   │
00:01:53 verbose #3128 > > │ 00:00:01 verbose #8 >                                                  │
00:01:53 verbose #3129 > > │ 00:00:01 verbose #9 > successes:                                       │
00:01:53 verbose #3130 > > │ 00:00:01 verbose #10 >                                                 │
00:01:53 verbose #3131 > > │ 00:00:01 verbose #...0:01 verbose #15 > successes:               │
00:01:53 verbose #3132 > > │ 00:00:01 verbose #16 >     module_7e2cd9e0::Spiral_builder::a          │
00:01:53 verbose #3133 > > │ 00:00:01 verbose #17 >                                                 │
00:01:53 verbose #3134 > > │ 00:00:01 verbose #18 > test result: ok. 1 passed; 0 failed; 0 ignored; │
00:01:53 verbose #3135 > > │ 0 measured; 0 filtered out; finished in 0.00s                                │
00:01:53 verbose #3136 > > │ 00:00:01 verbose #19 >                                                 │
00:01:53 verbose #3137 > > │ 00:00:01 verbose #20 runtime.execute_with_options / result / {         │
00:01:53 verbose #3138 > > │ exit_code = 0; std_trace_length = 944 }                                      │
00:01:53 verbose #3139 > > │ __assert_eq / actual: 0 / expected: 0                                        │
00:01:53 verbose #3140 > > │ __assert_string_contains / actual: "test result: ok. 1 passed; 0 failed; 0   │
00:01:53 verbose #3141 > > │ ignored;" / expected: "   Compiling                               │
00:01:53 verbose #3142 > > │ spiral_builder_66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767b │
00:01:53 verbose #3143 > > │ b6d v0.0.1                                                                   │
00:01:53 verbose #3144 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:01:53 verbose #3145 > > │ ckages/Rust/66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767bb6d) │
00:01:53 verbose #3146 > > │ [0m                                                                          │
00:01:53 verbose #3147 > > │     Finished `test` profile [unoptimized + debuginfo] target(s)   │
00:01:53 verbose #3148 > > │ in 1.33s                                                                   │
00:01:53 verbose #3149 > > │      Running unittests spiral_builder.rs                          │
00:01:53 verbose #3150 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/ta │
00:01:53 verbose #3151 > > │ rget/debug/deps/spiral_builder_66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2 │
00:01:53 verbose #3152 > > │ e27d2d05bc91767bb6d-eee90a269654ed30)                                      │
00:01:53 verbose #3153 > > │                                                                              │
00:01:53 verbose #3154 > > │ running 1 test                                                               │
00:01:53 verbose #3155 > > │ test module_7e2cd9e0::Spiral_builder::a ... ok                               │
00:01:53 verbose #3156 > > │                                                                              │
00:01:53 verbose #3157 > > │ successes:                                                                   │
00:01:53 verbose #3158 > > │                                                                              │
00:01:53 verbose #3159 > > │ ---- module_7e2cd9e0::Spiral_builder::a stdout ----                          │
00:01:53 verbose #3160 > > │ __assert_eq / actual: "a" / expected: "a"                                    │
00:01:53 verbose #3161 > > │                                                                              │
00:01:53 verbose #3162 > > │                                                                              │
00:01:53 verbose #3163 > > │ successes:                                                                   │
00:01:53 verbose #3164 > > │     module_7e2cd9e0::Spiral_builder::a                                       │
00:01:53 verbose #3165 > > │                                                                              │
00:01:53 verbose #3166 > > │ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out;  │
00:01:53 verbose #3167 > > │ finished in 0.00s                                                            │
00:01:53 verbose #3168 > > │ "                                                                            │
00:01:53 verbose #3169 > > │                                                                              │
00:01:53 verbose #3170 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:53 verbose #3171 > >
00:01:53 verbose #3172 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:53 verbose #3173 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:53 verbose #3174 > > │ ### run_tests                                                                │
00:01:53 verbose #3175 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:53 verbose #3176 > >
00:01:53 verbose #3177 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:53 verbose #3178 > > inl run_tests tests : () =
00:01:53 verbose #3179 > >     real
00:01:53 verbose #3180 > >         inl tests =
00:01:53 verbose #3181 > >             real_core.record_map
00:01:53 verbose #3182 > >                 fun { key value } =>
00:01:53 verbose #3183 > >                     (fun _ => value ()) : string -> ()
00:01:53 verbose #3184 > >                 tests
00:01:53 verbose #3185 > >         run_tests' `(`tests) tests
00:01:53 verbose #3186 > >
00:01:53 verbose #3187 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:53 verbose #3188 > > //// test
00:01:53 verbose #3189 > > ///! rust -d encoding_rs encoding_rs_io
00:01:53 verbose #3190 > >
00:01:53 verbose #3191 > > fun () =>
00:01:53 verbose #3192 > >     run_tests {
00:01:53 verbose #3193 > >         a = fun () => "a" |> _assert_eq "a"
00:01:53 verbose #3194 > >     }
00:01:53 verbose #3195 > > |> run
00:01:58 verbose #3196 > >
00:01:58 verbose #3197 > > ╭─[ 5.17s - return value ]─────────────────────────────────────────────────────╮
00:01:58 verbose #3198 > > │ 00:00:00   debug #1 runtime.execute_with_options / { file_name =       │
00:01:58 verbose #3199 > > │ cargo; arguments = [                                                         │
00:01:58 verbose #3200 > > │     "test",                                                                  │
00:01:58 verbose #3201 > > │     "--",                                                                    │
00:01:58 verbose #3202 > > │     "--show-output",                                                         │
00:01:58 verbose #3203 > > │ ]; options = { command = cargo test -- --show-output; cancellation_token =   │
00:01:58 verbose #3204 > > │ None; environment_variables = Array(MutCell([("TEST", "1")])); on_line =     │
00:01:58 verbose #3205 > > │ None; stdin = None; trace = true; working_directory = Some(                  │
00:01:58 verbose #3206 > > │                                                                              │
00:01:58 verbose #3207 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:01:58 verbose #3208 > > │ ckages/Rust/66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767bb6d │
00:01:58 verbose #3209 > > │ ",                                                                           │
00:01:58 verbose #3210 > > │ ) } }                                                                        │
00:01:58 verbose #3211 > > │ 00:00:00 verbose #2 !    Compiling                              │
00:01:58 verbose #3212 > > │ spiral_builder_66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767b │
00:01:58 verbose #3213 > > │ b6d v0.0.1                                                                   │
00:01:58 verbose #3214 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:01:58 verbose #3215 > > │ ckages/Rust/66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767bb6d │
00:01:58 verbose #3216 > > │ )                                                                            │
00:01:58 verbose #3217 > > │ 00:00:01 verbose #3 !     Finished `test` profile [unoptimized  │
00:01:58 verbose #3218 > > │ + debuginfo] target(s) in 1.27s                                              │
00:01:58 verbose #3219 > > │ 00:00:01 verbose #4 !      Running unittests spiral_builder.rs  │
00:01:58 verbose #3220 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/ta │
00:01:58 verbose #3221 > > │ rget/debug/deps/spiral_builder_66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2 │
00:01:58 verbose #3222 > > │ e27d2d05bc91767bb6d-eee90a269654ed30)                                        │
00:01:58 verbose #3223 > > │ 00:00:01 verbose #5 >                                                  │
00:01:58 verbose #3224 > > │ 00:00:01 verbose #6 > running 1 test                                   │
00:01:58 verbose #3225 > > │ 00:00:01 verbose #7 > test module_7e2cd9e0::Spiral_builder::a ... ok   │
00:01:58 verbose #3226 > > │ 00:00:01 verbose #8 >                                                  │
00:01:58 verbose #3227 > > │ 00:00:01 verbose #9 > successes:                                       │
00:01:58 verbose #3228 > > │ 00:00:01 verbose #10 >                                                 │
00:01:58 verbose #3229 > > │ 00:00:01 verbose #...0:01 verbose #15 > successes:               │
00:01:58 verbose #3230 > > │ 00:00:01 verbose #16 >     module_7e2cd9e0::Spiral_builder::a          │
00:01:58 verbose #3231 > > │ 00:00:01 verbose #17 >                                                 │
00:01:58 verbose #3232 > > │ 00:00:01 verbose #18 > test result: ok. 1 passed; 0 failed; 0 ignored; │
00:01:58 verbose #3233 > > │ 0 measured; 0 filtered out; finished in 0.00s                                │
00:01:58 verbose #3234 > > │ 00:00:01 verbose #19 >                                                 │
00:01:58 verbose #3235 > > │ 00:00:01 verbose #20 runtime.execute_with_options / result / {         │
00:01:58 verbose #3236 > > │ exit_code = 0; std_trace_length = 944 }                                      │
00:01:58 verbose #3237 > > │ __assert_eq / actual: 0 / expected: 0                                        │
00:01:58 verbose #3238 > > │ __assert_string_contains / actual: "test result: ok. 1 passed; 0 failed; 0   │
00:01:58 verbose #3239 > > │ ignored;" / expected: "   Compiling                               │
00:01:58 verbose #3240 > > │ spiral_builder_66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767b │
00:01:58 verbose #3241 > > │ b6d v0.0.1                                                                   │
00:01:58 verbose #3242 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:01:58 verbose #3243 > > │ ckages/Rust/66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767bb6d) │
00:01:58 verbose #3244 > > │ [0m                                                                          │
00:01:58 verbose #3245 > > │     Finished `test` profile [unoptimized + debuginfo] target(s)   │
00:01:58 verbose #3246 > > │ in 1.27s                                                                   │
00:01:58 verbose #3247 > > │      Running unittests spiral_builder.rs                          │
00:01:58 verbose #3248 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/ta │
00:01:58 verbose #3249 > > │ rget/debug/deps/spiral_builder_66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2 │
00:01:58 verbose #3250 > > │ e27d2d05bc91767bb6d-eee90a269654ed30)                                      │
00:01:58 verbose #3251 > > │                                                                              │
00:01:58 verbose #3252 > > │ running 1 test                                                               │
00:01:58 verbose #3253 > > │ test module_7e2cd9e0::Spiral_builder::a ... ok                               │
00:01:58 verbose #3254 > > │                                                                              │
00:01:58 verbose #3255 > > │ successes:                                                                   │
00:01:58 verbose #3256 > > │                                                                              │
00:01:58 verbose #3257 > > │ ---- module_7e2cd9e0::Spiral_builder::a stdout ----                          │
00:01:58 verbose #3258 > > │ __assert_eq / actual: "a" / expected: "a"                                    │
00:01:58 verbose #3259 > > │                                                                              │
00:01:58 verbose #3260 > > │                                                                              │
00:01:58 verbose #3261 > > │ successes:                                                                   │
00:01:58 verbose #3262 > > │     module_7e2cd9e0::Spiral_builder::a                                       │
00:01:58 verbose #3263 > > │                                                                              │
00:01:58 verbose #3264 > > │ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out;  │
00:01:58 verbose #3265 > > │ finished in 0.00s                                                            │
00:01:58 verbose #3266 > > │ "                                                                            │
00:01:58 verbose #3267 > > │                                                                              │
00:01:58 verbose #3268 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:58 verbose #3269 > >
00:01:58 verbose #3270 > > ── markdown ────────────────────────────────────────────────────────────────────
00:01:58 verbose #3271 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:01:58 verbose #3272 > > │ ### run_tests_log                                                            │
00:01:58 verbose #3273 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:01:58 verbose #3274 > >
00:01:58 verbose #3275 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:58 verbose #3276 > > inl run_tests_log tests : () =
00:01:58 verbose #3277 > >     real
00:01:58 verbose #3278 > >         inl tests =
00:01:58 verbose #3279 > >             real_core.record_map
00:01:58 verbose #3280 > >                 fun { key value } =>
00:01:58 verbose #3281 > >                     (fun _ => value false) : () -> ()
00:01:58 verbose #3282 > >                 tests
00:01:58 verbose #3283 > >         run_tests `(`tests) tests
00:01:58 verbose #3284 > >
00:01:58 verbose #3285 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:01:58 verbose #3286 > > //// test
00:01:58 verbose #3287 > > ///! rust -d encoding_rs encoding_rs_io
00:01:58 verbose #3288 > >
00:01:58 verbose #3289 > > fun () =>
00:01:58 verbose #3290 > >     run_tests_log {
00:01:58 verbose #3291 > >         a = _assert_eq false
00:01:58 verbose #3292 > >     }
00:01:58 verbose #3293 > > |> run
00:02:14 verbose #3294 > >
00:02:14 verbose #3295 > > ╭─[ 15.63s - return value ]────────────────────────────────────────────────────╮
00:02:14 verbose #3296 > > │ 00:00:00   debug #1 runtime.execute_with_options / { file_name =       │
00:02:14 verbose #3297 > > │ cargo; arguments = [                                                         │
00:02:14 verbose #3298 > > │     "test",                                                                  │
00:02:14 verbose #3299 > > │     "--",                                                                    │
00:02:14 verbose #3300 > > │     "--show-output",                                                         │
00:02:14 verbose #3301 > > │ ]; options = { command = cargo test -- --show-output; cancellation_token =   │
00:02:14 verbose #3302 > > │ None; environment_variables = Array(MutCell([("TEST", "1")])); on_line =     │
00:02:14 verbose #3303 > > │ None; stdin = None; trace = true; working_directory = Some(                  │
00:02:14 verbose #3304 > > │                                                                              │
00:02:14 verbose #3305 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:02:14 verbose #3306 > > │ ckages/Rust/024d5e7bebc76817695f42e0cb6c6b2efeed8a08c0c7c3bccf53eaff79c97fe8 │
00:02:14 verbose #3307 > > │ ",                                                                           │
00:02:14 verbose #3308 > > │ ) } }                                                                        │
00:02:14 verbose #3309 > > │ 00:00:00 verbose #2 !    Compiling                              │
00:02:14 verbose #3310 > > │ spiral_builder_024d5e7bebc76817695f42e0cb6c6b2efeed8a08c0c7c3bccf53eaff79c97 │
00:02:14 verbose #3311 > > │ fe8 v0.0.1                                                                   │
00:02:14 verbose #3312 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:02:14 verbose #3313 > > │ ckages/Rust/024d5e7bebc76817695f42e0cb6c6b2efeed8a08c0c7c3bccf53eaff79c97fe8 │
00:02:14 verbose #3314 > > │ )                                                                            │
00:02:14 verbose #3315 > > │ 00:00:01 verbose #3 !     Finished `test` profile [unoptimized  │
00:02:14 verbose #3316 > > │ + debuginfo] target(s) in 1.30s                                              │
00:02:14 verbose #3317 > > │ 00:00:01 verbose #4 !      Running unittests spiral_builder.rs  │
00:02:14 verbose #3318 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/ta │
00:02:14 verbose #3319 > > │ rget/debug/deps/spiral_builder_024d5e7bebc76817695f42e0cb6c6b2efeed8a08c0c7c │
00:02:14 verbose #3320 > > │ 3bccf53eaff79c97fe8-49e36eed56b8402d)                                        │
00:02:14 verbose #3321 > > │ 00:00:01 verbose #5 >                                                  │
00:02:14 verbose #3322 > > │ 00:00:01 verbose #6 > running 1 test                                   │
00:02:14 verbose #3323 > > │ 00:00:01 verbose #7 > test module_7e2cd9e0::Spiral_builder::a ... ok   │
00:02:14 verbose #3324 > > │ 00:00:01 verbose #8 >                                                  │
00:02:14 verbose #3325 > > │ 00:00:01 verbose #9 > successes:                                       │
00:02:14 verbose #3326 > > │ 00:00:01 verbose #10 >                                                 │
00:02:14 verbose #3327 > > │ 00:00:01 verbose #... verbose #15 > successes:                   │
00:02:14 verbose #3328 > > │ 00:00:01 verbose #16 >     module_7e2cd9e0::Spiral_builder::a          │
00:02:14 verbose #3329 > > │ 00:00:01 verbose #17 >                                                 │
00:02:14 verbose #3330 > > │ 00:00:01 verbose #18 > test result: ok. 1 passed; 0 failed; 0 ignored; │
00:02:14 verbose #3331 > > │ 0 measured; 0 filtered out; finished in 0.00s                                │
00:02:14 verbose #3332 > > │ 00:00:01 verbose #19 >                                                 │
00:02:14 verbose #3333 > > │ 00:00:01 verbose #20 runtime.execute_with_options / result / {         │
00:02:14 verbose #3334 > > │ exit_code = 0; std_trace_length = 948 }                                      │
00:02:14 verbose #3335 > > │ __assert_eq / actual: 0 / expected: 0                                        │
00:02:14 verbose #3336 > > │ __assert_string_contains / actual: "test result: ok. 1 passed; 0 failed; 0   │
00:02:14 verbose #3337 > > │ ignored;" / expected: "   Compiling                               │
00:02:14 verbose #3338 > > │ spiral_builder_024d5e7bebc76817695f42e0cb6c6b2efeed8a08c0c7c3bccf53eaff79c97 │
00:02:14 verbose #3339 > > │ fe8 v0.0.1                                                                   │
00:02:14 verbose #3340 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │
00:02:14 verbose #3341 > > │ ckages/Rust/024d5e7bebc76817695f42e0cb6c6b2efeed8a08c0c7c3bccf53eaff79c97fe8) │
00:02:14 verbose #3342 > > │ [0m                                                                          │
00:02:14 verbose #3343 > > │     Finished `test` profile [unoptimized + debuginfo] target(s)   │
00:02:14 verbose #3344 > > │ in 1.30s                                                                   │
00:02:14 verbose #3345 > > │      Running unittests spiral_builder.rs                          │
00:02:14 verbose #3346 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/ta │
00:02:14 verbose #3347 > > │ rget/debug/deps/spiral_builder_024d5e7bebc76817695f42e0cb6c6b2efeed8a08c0c7c │
00:02:14 verbose #3348 > > │ 3bccf53eaff79c97fe8-49e36eed56b8402d)                                      │
00:02:14 verbose #3349 > > │                                                                              │
00:02:14 verbose #3350 > > │ running 1 test                                                               │
00:02:14 verbose #3351 > > │ test module_7e2cd9e0::Spiral_builder::a ... ok                               │
00:02:14 verbose #3352 > > │                                                                              │
00:02:14 verbose #3353 > > │ successes:                                                                   │
00:02:14 verbose #3354 > > │                                                                              │
00:02:14 verbose #3355 > > │ ---- module_7e2cd9e0::Spiral_builder::a stdout ----                          │
00:02:14 verbose #3356 > > │ __assert_eq / actual: false / expected: false                                │
00:02:14 verbose #3357 > > │                                                                              │
00:02:14 verbose #3358 > > │                                                                              │
00:02:14 verbose #3359 > > │ successes:                                                                   │
00:02:14 verbose #3360 > > │     module_7e2cd9e0::Spiral_builder::a                                       │
00:02:14 verbose #3361 > > │                                                                              │
00:02:14 verbose #3362 > > │ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out;  │
00:02:14 verbose #3363 > > │ finished in 0.00s                                                            │
00:02:14 verbose #3364 > > │ "                                                                            │
00:02:14 verbose #3365 > > │                                                                              │
00:02:14 verbose #3366 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:14 verbose #3367 > 00:00:42 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 27732 }
00:02:14 verbose #3368 > 00:00:42   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:02:14 verbose #3369 >     "nbconvert",
00:02:14 verbose #3370 >     "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb",
00:02:14 verbose #3371 >     "--to",
00:02:14 verbose #3372 >     "html",
00:02:14 verbose #3373 >     "--HTMLExporter.theme=dark",
00:02:14 verbose #3374 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:14 verbose #3375 > 00:00:43 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb to html
00:02:14 verbose #3376 > 00:00:43 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:02:14 verbose #3377 > 00:00:43 verbose #7 !   validate(nb)
00:02:15 verbose #3378 > 00:00:43 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:02:15 verbose #3379 > 00:00:43 verbose #9 !   return _pygments_highlight(
00:02:15 verbose #3380 > 00:00:43 verbose #10 ! [NbConvertApp] Writing 299226 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.html
00:02:15 verbose #3381 > 00:00:43 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 908 }
00:02:15 verbose #3382 > 00:00:43   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 908 }
00:02:15 verbose #3383 > 00:00:43   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:02:15 verbose #3384 >     "-c",
00:02:15 verbose #3385 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:02:15 verbose #3386 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:15 verbose #3387 > 00:00:43 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:02:15 verbose #3388 > 00:00:43   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:02:15 verbose #3389 > 00:00:43   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 28699 }
00:02:15   debug #3390 runtime.execute_with_options_async / { exit_code = 0; output_length = 32265 }
00:02:15   debug #3 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path rust/testing.dib --retries 3
00:02:15   debug #3391 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path rust/near.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:15 verbose #3392 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "rust/near.dib", "--retries", "3"])) }
00:02:15 verbose #3393 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:02:15 verbose #3394 >     "repl",
00:02:15 verbose #3395 >     "--exit-after-run",
00:02:15 verbose #3396 >     "--run",
00:02:15 verbose #3397 >     "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib",
00:02:15 verbose #3398 >     "--output-path",
00:02:15 verbose #3399 >     "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb",
00:02:15 verbose #3400 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:02:17 verbose #3401 > >
00:02:17 verbose #3402 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:17 verbose #3403 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:17 verbose #3404 > > │ # near                                                                       │
00:02:17 verbose #3405 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:19 verbose #3406 > >
00:02:19 verbose #3407 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:19 verbose #3408 > > open rust
00:02:19 verbose #3409 > > open rust.rust_operators
00:02:20 verbose #3410 > >
00:02:20 verbose #3411 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:20 verbose #3412 > > //// test
00:02:20 verbose #3413 > >
00:02:20 verbose #3414 > > open testing
00:02:20 verbose #3415 > >
00:02:20 verbose #3416 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:20 verbose #3417 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:20 verbose #3418 > > │ ## near                                                                      │
00:02:20 verbose #3419 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:20 verbose #3420 > >
00:02:20 verbose #3421 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:20 verbose #3422 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:20 verbose #3423 > > │ ### vector                                                                   │
00:02:20 verbose #3424 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:20 verbose #3425 > >
00:02:20 verbose #3426 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:20 verbose #3427 > > nominal vector t =
00:02:20 verbose #3428 > >     `(
00:02:20 verbose #3429 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:20 verbose #3430 > > Fable.Core.Emit(\"near_sdk::store::vec::Vector<$0>\")>]]\n#endif\ntype
00:02:20 verbose #3431 > > near_sdk_store_vec_Vector<'T> = class end"
00:02:20 verbose #3432 > >         $'' : $'near_sdk_store_vec_Vector<`t>'
00:02:20 verbose #3433 > >     )
00:02:20 verbose #3434 > >
00:02:20 verbose #3435 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:20 verbose #3436 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:20 verbose #3437 > > │ ### lookup_map                                                               │
00:02:20 verbose #3438 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:20 verbose #3439 > >
00:02:20 verbose #3440 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:20 verbose #3441 > > nominal lookup_map k v =
00:02:20 verbose #3442 > >     `(
00:02:20 verbose #3443 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:20 verbose #3444 > > Fable.Core.Emit(\"near_sdk::store::LookupMap<$0, $1>\")>]]\n#endif\ntype
00:02:20 verbose #3445 > > near_sdk_store_LookupMap<'K, 'V> = class end"
00:02:20 verbose #3446 > >         $'' : $'near_sdk_store_LookupMap<`k, `v>'
00:02:20 verbose #3447 > >     )
00:02:20 verbose #3448 > >
00:02:20 verbose #3449 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:20 verbose #3450 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:20 verbose #3451 > > │ ### account_id                                                               │
00:02:20 verbose #3452 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:20 verbose #3453 > >
00:02:20 verbose #3454 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:20 verbose #3455 > > nominal account_id =
00:02:20 verbose #3456 > >     `(
00:02:20 verbose #3457 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:02:20 verbose #3458 > > Fable.Core.Emit(\"near_sdk::AccountId\")>]]\n#endif\ntype near_sdk_AccountId =
00:02:20 verbose #3459 > > class end"
00:02:20 verbose #3460 > >         $'' : $'near_sdk_AccountId'
00:02:20 verbose #3461 > >     )
00:02:20 verbose #3462 > >
00:02:20 verbose #3463 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:20 verbose #3464 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:20 verbose #3465 > > │ ### new_lookup_map                                                           │
00:02:20 verbose #3466 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:20 verbose #3467 > >
00:02:20 verbose #3468 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:20 verbose #3469 > > inl new_lookup_map prefix =
00:02:20 verbose #3470 > >     !\($'"near_sdk::store::LookupMap::new(!prefix)"')
00:02:20 verbose #3471 > >
00:02:20 verbose #3472 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:20 verbose #3473 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:20 verbose #3474 > > │ ### new_vector                                                               │
00:02:20 verbose #3475 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:20 verbose #3476 > >
00:02:20 verbose #3477 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:20 verbose #3478 > > inl new_vector prefix =
00:02:20 verbose #3479 > >     !\($'"near_sdk::store::vec::Vector::new(!prefix)"')
00:02:21 verbose #3480 > 00:00:05 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 4436 }
00:02:21 verbose #3481 > 00:00:05   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:02:21 verbose #3482 >     "nbconvert",
00:02:21 verbose #3483 >     "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb",
00:02:21 verbose #3484 >     "--to",
00:02:21 verbose #3485 >     "html",
00:02:21 verbose #3486 >     "--HTMLExporter.theme=dark",
00:02:21 verbose #3487 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:21 verbose #3488 > 00:00:05 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb to html
00:02:21 verbose #3489 > 00:00:05 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:02:21 verbose #3490 > 00:00:05 verbose #7 !   validate(nb)
00:02:22 verbose #3491 > 00:00:06 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:02:22 verbose #3492 > 00:00:06 verbose #9 !   return _pygments_highlight(
00:02:22 verbose #3493 > 00:00:06 verbose #10 ! [NbConvertApp] Writing 280646 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.html
00:02:22 verbose #3494 > 00:00:06 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 }
00:02:22 verbose #3495 > 00:00:06   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 }
00:02:22 verbose #3496 > 00:00:06   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:02:22 verbose #3497 >     "-c",
00:02:22 verbose #3498 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:02:22 verbose #3499 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:22 verbose #3500 > 00:00:06 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:02:22 verbose #3501 > 00:00:06   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:02:22 verbose #3502 > 00:00:06   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 5397 }
00:02:22   debug #3503 runtime.execute_with_options_async / { exit_code = 0; output_length = 8424 }
00:02:22   debug #4 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path rust/near.dib --retries 3
00:02:22   debug #3504 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:22 verbose #3505 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "testing.dib", "--retries", "3"])) }
00:02:22 verbose #3506 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:02:22 verbose #3507 >     "repl",
00:02:22 verbose #3508 >     "--exit-after-run",
00:02:22 verbose #3509 >     "--run",
00:02:22 verbose #3510 >     "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib",
00:02:22 verbose #3511 >     "--output-path",
00:02:22 verbose #3512 >     "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb",
00:02:22 verbose #3513 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:02:23 verbose #3514 > >
00:02:23 verbose #3515 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:23 verbose #3516 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:23 verbose #3517 > > │ # testing                                                                    │
00:02:23 verbose #3518 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:23 verbose #3519 > >
00:02:23 verbose #3520 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:23 verbose #3521 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:23 verbose #3522 > > │ ## testing                                                                   │
00:02:23 verbose #3523 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:23 verbose #3524 > >
00:02:23 verbose #3525 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:23 verbose #3526 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:23 verbose #3527 > > │ ### testing_trace                                                            │
00:02:23 verbose #3528 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:26 verbose #3529 > >
00:02:26 verbose #3530 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:26 verbose #3531 > > union testing_trace =
00:02:26 verbose #3532 > >     | Console
00:02:26 verbose #3533 > >     | Trace
00:02:26 verbose #3534 > >     | TraceRaw
00:02:26 verbose #3535 > >     | Silent
00:02:26 verbose #3536 > >
00:02:26 verbose #3537 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:26 verbose #3538 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:26 verbose #3539 > > │ ### __expect                                                                 │
00:02:26 verbose #3540 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:26 verbose #3541 > >
00:02:26 verbose #3542 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:26 verbose #3543 > > inl rec __expect fn trace' name b a =
00:02:26 verbose #3544 > >     inl result = fn a b
00:02:26 verbose #3545 > >     inl result =
00:02:26 verbose #3546 > >         result || join result
00:02:26 verbose #3547 > >     inl get_raw_text () =
00:02:26 verbose #3548 > >         backend_switch {
00:02:26 verbose #3549 > >             Fsharp = fun () => $'$"{!name} / actual: %A{!a} / expected: %A{!b}"'
00:02:26 verbose #3550 > > : string
00:02:26 verbose #3551 > >             Python = fun () => $'f"{!name} / actual: {!a} / expected: {!b}"' :
00:02:26 verbose #3552 > > string
00:02:26 verbose #3553 > >         }
00:02:26 verbose #3554 > >     match trace' with
00:02:26 verbose #3555 > >     | Console =>
00:02:26 verbose #3556 > >         inl text = get_raw_text ()
00:02:26 verbose #3557 > >         text |> console.write_line
00:02:26 verbose #3558 > >         text
00:02:26 verbose #3559 > >     | Trace =>
00:02:26 verbose #3560 > >         trace Info (fun () => name) fun () => { actual = a; expected = b }
00:02:26 verbose #3561 > >         get_raw_text ()
00:02:26 verbose #3562 > >     | TraceRaw =>
00:02:26 verbose #3563 > >         inl text = get_raw_text ()
00:02:26 verbose #3564 > >         trace_raw Info fun () => text
00:02:26 verbose #3565 > >         text
00:02:26 verbose #3566 > >     | Silent => reflection.nameof { __expect }
00:02:26 verbose #3567 > >     |> assert result
00:02:27 verbose #3568 > >
00:02:27 verbose #3569 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:27 verbose #3570 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:27 verbose #3571 > > │ ### __assert_approx_eq                                                       │
00:02:27 verbose #3572 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:27 verbose #3573 > >
00:02:27 verbose #3574 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:27 verbose #3575 > > inl rec __assert_approx_eq trace e b a =
00:02:27 verbose #3576 > >     __expect
00:02:27 verbose #3577 > >         (fun a b => abs (b - a) < (e |> optionm.defaultWith 0.00000001))
00:02:27 verbose #3578 > >         trace
00:02:27 verbose #3579 > >         (reflection.nameof { __assert_approx_eq })
00:02:27 verbose #3580 > >         b
00:02:27 verbose #3581 > >         a
00:02:27 verbose #3582 > >
00:02:27 verbose #3583 > > inl _assert_approx_eq e b a =
00:02:27 verbose #3584 > >     __assert_approx_eq Console e b a
00:02:27 verbose #3585 > >
00:02:27 verbose #3586 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:27 verbose #3587 > > //// test
00:02:27 verbose #3588 > > ///! fsharp
00:02:27 verbose #3589 > > ///! cuda
00:02:27 verbose #3590 > > ///! rust
00:02:27 verbose #3591 > > ///! typescript
00:02:27 verbose #3592 > > ///! python
00:02:27 verbose #3593 > >
00:02:27 verbose #3594 > > 12.345f64
00:02:27 verbose #3595 > > |> _assert_approx_eq (Some 0.0001f64) 12.345f64
00:02:38 verbose #3596 > >
00:02:38 verbose #3597 > > ╭─[ 11.80s - return value ]────────────────────────────────────────────────────╮
00:02:38 verbose #3598 > > │ .py output (Cuda):                                                           │
00:02:38 verbose #3599 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345                       │
00:02:38 verbose #3600 > > │                                                                              │
00:02:38 verbose #3601 > > │ .rs output:                                                                  │
00:02:38 verbose #3602 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345                       │
00:02:38 verbose #3603 > > │                                                                              │
00:02:38 verbose #3604 > > │ .ts output:                                                                  │
00:02:38 verbose #3605 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345                       │
00:02:38 verbose #3606 > > │                                                                              │
00:02:38 verbose #3607 > > │ .py output:                                                                  │
00:02:38 verbose #3608 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345                       │
00:02:38 verbose #3609 > > │                                                                              │
00:02:38 verbose #3610 > > │                                                                              │
00:02:38 verbose #3611 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:38 verbose #3612 > >
00:02:38 verbose #3613 > > ╭─[ 11.81s - stdout ]──────────────────────────────────────────────────────────╮
00:02:38 verbose #3614 > > │ .fsx output:                                                                 │
00:02:38 verbose #3615 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345                       │
00:02:38 verbose #3616 > > │                                                                              │
00:02:38 verbose #3617 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:38 verbose #3618 > >
00:02:38 verbose #3619 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:38 verbose #3620 > > //// test
00:02:38 verbose #3621 > > //// print_code
00:02:38 verbose #3622 > >
00:02:38 verbose #3623 > > 1f64
00:02:38 verbose #3624 > > |> __assert_approx_eq Console (Some 3) 2
00:02:39 verbose #3625 > >
00:02:39 verbose #3626 > > ╭─[ 100.23ms - stdout ]────────────────────────────────────────────────────────╮
00:02:39 verbose #3627 > > │ let rec closure0 (v0 : string) () : unit =                                   │
00:02:39 verbose #3628 > > │     let v1 : (string -> unit) = System.Console.WriteLine                     │
00:02:39 verbose #3629 > > │     v1 v0                                                                    │
00:02:39 verbose #3630 > > │ and method0 () : unit =                                                      │
00:02:39 verbose #3631 > > │     let v0 : string = "__assert_approx_eq"                                   │
00:02:39 verbose #3632 > > │     let v1 : string = $"{v0} / actual: %A{1.0} / expected: %A{2.0}"          │
00:02:39 verbose #3633 > > │     let v4 : unit = ()                                                       │
00:02:39 verbose #3634 > > │     let v5 : (unit -> unit) = closure0(v1)                                   │
00:02:39 verbose #3635 > > │     let v6 : unit = (fun () -> v5 (); v4) ()                                 │
00:02:39 verbose #3636 > > │     ()                                                                       │
00:02:39 verbose #3637 > > │ method0()                                                                    │
00:02:39 verbose #3638 > > │                                                                              │
00:02:39 verbose #3639 > > │ __assert_approx_eq / actual: 1.0 / expected: 2.0                             │
00:02:39 verbose #3640 > > │                                                                              │
00:02:39 verbose #3641 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:39 verbose #3642 > >
00:02:39 verbose #3643 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:39 verbose #3644 > > //// test
00:02:39 verbose #3645 > > //// print_code
00:02:39 verbose #3646 > >
00:02:39 verbose #3647 > > (dyn 1f64)
00:02:39 verbose #3648 > > |> _assert_approx_eq (Some 3) 2
00:02:39 verbose #3649 > >
00:02:39 verbose #3650 > > ╭─[ 192.05ms - stdout ]────────────────────────────────────────────────────────╮
00:02:39 verbose #3651 > > │ let rec method1 (v0 : bool) : bool =                                         │
00:02:39 verbose #3652 > > │     v0                                                                       │
00:02:39 verbose #3653 > > │ and closure0 (v0 : string) () : unit =                                       │
00:02:39 verbose #3654 > > │     let v1 : (string -> unit) = System.Console.WriteLine                     │
00:02:39 verbose #3655 > > │     v1 v0                                                                    │
00:02:39 verbose #3656 > > │ and method0 () : unit =                                                      │
00:02:39 verbose #3657 > > │     let v0 : float = 1.0                                                     │
00:02:39 verbose #3658 > > │     let v1 : float = 2.0 - v0                                                │
00:02:39 verbose #3659 > > │     let v2 : float =  -v1                                                    │
00:02:39 verbose #3660 > > │     let v3 : bool = v1 >= v2                                                 │
00:02:39 verbose #3661 > > │     let v4 : float =                                                         │
00:02:39 verbose #3662 > > │         if v3 then                                                           │
00:02:39 verbose #3663 > > │             v1                                                               │
00:02:39 verbose #3664 > > │         else                                                                 │
00:02:39 verbose #3665 > > │             v2                                                               │
00:02:39 verbose #3666 > > │     let v5 : bool = v4 < 3.0                                                 │
00:02:39 verbose #3667 > > │     let v7 : bool =                                                          │
00:02:39 verbose #3668 > > │         if v5 then                                                           │
00:02:39 verbose #3669 > > │             true                                                             │
00:02:39 verbose #3670 > > │         else                                                                 │
00:02:39 verbose #3671 > > │             method1(v5)                                                      │
00:02:39 verbose #3672 > > │     let v8 : string = "__assert_approx_eq"                                   │
00:02:39 verbose #3673 > > │     let v9 : string = $"{v8} / actual: %A{v0} / expected: %A{2.0}"           │
00:02:39 verbose #3674 > > │     let v12 : unit = ()                                                      │
00:02:39 verbose #3675 > > │     let v13 : (unit -> unit) = closure0(v9)                                  │
00:02:39 verbose #3676 > > │     let v14 : unit = (fun () -> v13 (); v12) ()                              │
00:02:39 verbose #3677 > > │     let v16 : bool = v7 = false                                              │
00:02:39 verbose #3678 > > │     if v16 then                                                              │
00:02:39 verbose #3679 > > │         failwith<unit> v9                                                    │
00:02:39 verbose #3680 > > │ method0()                                                                    │
00:02:39 verbose #3681 > > │                                                                              │
00:02:39 verbose #3682 > > │ __assert_approx_eq / actual: 1.0 / expected: 2.0                             │
00:02:39 verbose #3683 > > │                                                                              │
00:02:39 verbose #3684 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:39 verbose #3685 > >
00:02:39 verbose #3686 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:39 verbose #3687 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:39 verbose #3688 > > │ ### __assert_eq                                                              │
00:02:39 verbose #3689 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:39 verbose #3690 > >
00:02:39 verbose #3691 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:39 verbose #3692 > > inl rec __assert_eq trace b a =
00:02:39 verbose #3693 > >     __expect (=) trace (reflection.nameof { __assert_eq }) b a
00:02:39 verbose #3694 > >
00:02:39 verbose #3695 > > inl _assert_eq b a =
00:02:39 verbose #3696 > >     __assert_eq Console b a
00:02:39 verbose #3697 > >
00:02:39 verbose #3698 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:39 verbose #3699 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:39 verbose #3700 > > │ ### __assert_eq'                                                             │
00:02:39 verbose #3701 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:39 verbose #3702 > >
00:02:39 verbose #3703 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:39 verbose #3704 > > inl rec __assert_eq' trace b a =
00:02:39 verbose #3705 > >     __expect (=.) trace (reflection.nameof { __assert_eq' }) b a
00:02:39 verbose #3706 > >
00:02:39 verbose #3707 > > inl _assert_eq' b a =
00:02:39 verbose #3708 > >     __assert_eq' Console b a
00:02:39 verbose #3709 > >
00:02:39 verbose #3710 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:39 verbose #3711 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:39 verbose #3712 > > │ ### __assert_ne                                                              │
00:02:39 verbose #3713 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:39 verbose #3714 > >
00:02:39 verbose #3715 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:39 verbose #3716 > > inl rec __assert_ne trace b a =
00:02:39 verbose #3717 > >     __expect (<>.) trace (reflection.nameof { __assert_ne }) b a
00:02:39 verbose #3718 > >
00:02:39 verbose #3719 > > inl _assert_ne b a =
00:02:39 verbose #3720 > >     __assert_ne Console b a
00:02:39 verbose #3721 > >
00:02:39 verbose #3722 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:39 verbose #3723 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:39 verbose #3724 > > │ ### __assert_gt                                                              │
00:02:39 verbose #3725 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:39 verbose #3726 > >
00:02:39 verbose #3727 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:39 verbose #3728 > > inl rec __assert_gt trace b a =
00:02:39 verbose #3729 > >     __expect (>) trace (reflection.nameof { __assert_gt }) b a
00:02:39 verbose #3730 > >
00:02:39 verbose #3731 > > inl _assert_gt b a =
00:02:39 verbose #3732 > >     __assert_gt Console b a
00:02:39 verbose #3733 > >
00:02:39 verbose #3734 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:39 verbose #3735 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:39 verbose #3736 > > │ ### __assert_ge                                                              │
00:02:39 verbose #3737 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:39 verbose #3738 > >
00:02:39 verbose #3739 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:39 verbose #3740 > > inl rec __assert_ge trace b a =
00:02:39 verbose #3741 > >     __expect (>=) trace (reflection.nameof { __assert_ge }) b a
00:02:39 verbose #3742 > >
00:02:39 verbose #3743 > > inl _assert_ge b a =
00:02:39 verbose #3744 > >     __assert_ge Console b a
00:02:39 verbose #3745 > >
00:02:39 verbose #3746 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:39 verbose #3747 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:39 verbose #3748 > > │ ### __assert_lt                                                              │
00:02:39 verbose #3749 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:39 verbose #3750 > >
00:02:39 verbose #3751 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:39 verbose #3752 > > inl rec __assert_lt trace b a =
00:02:39 verbose #3753 > >     __expect (<) trace (reflection.nameof { __assert_lt }) b a
00:02:39 verbose #3754 > >
00:02:39 verbose #3755 > > inl _assert_lt b a =
00:02:39 verbose #3756 > >     __assert_lt Console b a
00:02:39 verbose #3757 > >
00:02:39 verbose #3758 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:39 verbose #3759 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:39 verbose #3760 > > │ ### __assert_le                                                              │
00:02:39 verbose #3761 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:39 verbose #3762 > >
00:02:39 verbose #3763 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:39 verbose #3764 > > inl rec __assert_le trace b a =
00:02:39 verbose #3765 > >     __expect (<=) trace (reflection.nameof { __assert_le }) b a
00:02:39 verbose #3766 > >
00:02:39 verbose #3767 > > inl _assert_le b a =
00:02:39 verbose #3768 > >     __assert_le Console b a
00:02:39 verbose #3769 > >
00:02:39 verbose #3770 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:39 verbose #3771 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:39 verbose #3772 > > │ ### __assert_string_contains                                                 │
00:02:39 verbose #3773 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:39 verbose #3774 > >
00:02:39 verbose #3775 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:39 verbose #3776 > > inl rec __assert_string_contains trace b a =
00:02:39 verbose #3777 > >     __expect sm'.contains trace (reflection.nameof { __assert_string_contains })
00:02:39 verbose #3778 > > a b
00:02:39 verbose #3779 > >
00:02:39 verbose #3780 > > inl _assert_string_contains b a =
00:02:39 verbose #3781 > >     __assert_string_contains Console b a
00:02:39 verbose #3782 > >
00:02:39 verbose #3783 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:39 verbose #3784 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:39 verbose #3785 > > │ ### __assert_between                                                         │
00:02:39 verbose #3786 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:39 verbose #3787 > >
00:02:39 verbose #3788 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:39 verbose #3789 > > inl rec __assert_between trace a b actual =
00:02:39 verbose #3790 > >     inl assert_between actual (a, b) =
00:02:39 verbose #3791 > >         __assert_ge Silent a actual
00:02:39 verbose #3792 > >         __assert_le Silent b actual
00:02:39 verbose #3793 > >         true
00:02:39 verbose #3794 > >     __expect assert_between trace (reflection.nameof { __assert_between }) (a,
00:02:39 verbose #3795 > > b) actual
00:02:39 verbose #3796 > >
00:02:39 verbose #3797 > > inl _assert_between a b actual =
00:02:39 verbose #3798 > >     __assert_between Console a b actual
00:02:39 verbose #3799 > >
00:02:39 verbose #3800 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:39 verbose #3801 > > inl rec _assert_fn fn list =
00:02:39 verbose #3802 > >     list
00:02:39 verbose #3803 > >     |> listm.rev
00:02:39 verbose #3804 > >     |> listm.map fun input, expected => join
00:02:39 verbose #3805 > >         input
00:02:39 verbose #3806 > >         |> fn
00:02:39 verbose #3807 > >         |> resultm.get
00:02:39 verbose #3808 > >         |> fun x =>
00:02:39 verbose #3809 > >             inl expected' = join expected
00:02:39 verbose #3810 > >             inl name = reflection.nameof { _assert_fn }
00:02:39 verbose #3811 > >             try
00:02:39 verbose #3812 > >                 fun () =>
00:02:39 verbose #3813 > >                     console.write_line ""
00:02:39 verbose #3814 > >                     trace Verbose
00:02:39 verbose #3815 > >                         fun () => name
00:02:39 verbose #3816 > >                         fun () => { input }
00:02:39 verbose #3817 > >                     x
00:02:39 verbose #3818 > >                     |> _assert_eq' expected'
00:02:39 verbose #3819 > >                     true
00:02:39 verbose #3820 > >                 fun ex =>
00:02:39 verbose #3821 > >                     trace Critical
00:02:39 verbose #3822 > >                         fun () =>
00:02:39 verbose #3823 > >                             $'$"{!name} / error"'
00:02:39 verbose #3824 > >                         fun () => { ex expected }
00:02:39 verbose #3825 > >                     Some false
00:02:39 verbose #3826 > >             |> optionm.value
00:02:39 verbose #3827 > >     |> listm'.filter not
00:02:39 verbose #3828 > >     |> function
00:02:39 verbose #3829 > >         | [[]] => ()
00:02:39 verbose #3830 > >         | x => failwith $'$"{!x}"'
00:02:40 verbose #3831 > >
00:02:40 verbose #3832 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:40 verbose #3833 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:40 verbose #3834 > > │ ## fsharp                                                                    │
00:02:40 verbose #3835 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:40 verbose #3836 > >
00:02:40 verbose #3837 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:40 verbose #3838 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:40 verbose #3839 > > │ ### __assert_contains                                                        │
00:02:40 verbose #3840 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:40 verbose #3841 > >
00:02:40 verbose #3842 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:40 verbose #3843 > > inl rec __assert_contains forall t u. (trace : testing_trace) (b : t) (a : u) :
00:02:40 verbose #3844 > > () =
00:02:40 verbose #3845 > >     __expect
00:02:40 verbose #3846 > >         fun a b =>
00:02:40 verbose #3847 > >             a
00:02:40 verbose #3848 > >             |> $'List.ofSeq'
00:02:40 verbose #3849 > >             |> fun x => x : listm'.list' t
00:02:40 verbose #3850 > >             |> $'List.tryFind' ((=) b)
00:02:40 verbose #3851 > >             |> optionm'.unbox
00:02:40 verbose #3852 > >             |> fun (x : option t) => x <> None
00:02:40 verbose #3853 > >         trace
00:02:40 verbose #3854 > >         // TODO: forall nameof (Cannot dyn a forall into a runtime var.)
00:02:40 verbose #3855 > >         // Metavars that are not part of the enclosing function's signature are
00:02:40 verbose #3856 > > not allowed. They need to be values.
00:02:40 verbose #3857 > >         // Got: {__assert_contains : testing_trace -> _ -> _ -> ()} -> string
00:02:40 verbose #3858 > >         // (reflection.nameof { __assert_contains })
00:02:40 verbose #3859 > >         "__assert_contains"
00:02:40 verbose #3860 > >         b
00:02:40 verbose #3861 > >         a
00:02:40 verbose #3862 > >
00:02:40 verbose #3863 > > inl _assert_contains b a =
00:02:40 verbose #3864 > >     __assert_contains Console b a
00:02:40 verbose #3865 > >
00:02:40 verbose #3866 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:40 verbose #3867 > > //// test
00:02:40 verbose #3868 > >
00:02:40 verbose #3869 > > ;[[ "a"; "b"; "c" ]]
00:02:40 verbose #3870 > > |> _assert_contains "b"
00:02:40 verbose #3871 > >
00:02:40 verbose #3872 > > ╭─[ 718.17ms - stdout ]────────────────────────────────────────────────────────╮
00:02:40 verbose #3873 > > │ __assert_contains / actual: [|"a"; "b"; "c"|] / expected: "b"                │
00:02:40 verbose #3874 > > │                                                                              │
00:02:40 verbose #3875 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:40 verbose #3876 > >
00:02:40 verbose #3877 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:40 verbose #3878 > > //// test
00:02:40 verbose #3879 > >
00:02:40 verbose #3880 > > "abcd"
00:02:40 verbose #3881 > > |> _assert_contains 'b'
00:02:41 verbose #3882 > >
00:02:41 verbose #3883 > > ╭─[ 131.13ms - stdout ]────────────────────────────────────────────────────────╮
00:02:41 verbose #3884 > > │ __assert_contains / actual: "abcd" / expected: 'b'                           │
00:02:41 verbose #3885 > > │                                                                              │
00:02:41 verbose #3886 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:41 verbose #3887 > >
00:02:41 verbose #3888 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:41 verbose #3889 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:41 verbose #3890 > > │ ### _throws                                                                  │
00:02:41 verbose #3891 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:41 verbose #3892 > >
00:02:41 verbose #3893 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:41 verbose #3894 > > inl _throws (fn : () -> ()) : option exn =
00:02:41 verbose #3895 > >     inl none = None : option exn
00:02:41 verbose #3896 > >     inl some (s : exn) = Some s
00:02:41 verbose #3897 > >     $'try !fn (); !none with ex -> ex |> !some '
00:02:41 verbose #3898 > >
00:02:41 verbose #3899 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:41 verbose #3900 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:41 verbose #3901 > > │ ### print_and_return                                                         │
00:02:41 verbose #3902 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:41 verbose #3903 > >
00:02:41 verbose #3904 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:41 verbose #3905 > > inl rec print_and_return x =
00:02:41 verbose #3906 > >     inl name = reflection.nameof { print_and_return }
00:02:41 verbose #3907 > >     $'printfn $"{!name} / x: {!x}"'
00:02:41 verbose #3908 > >     x
00:02:41 verbose #3909 > 00:00:18 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 22544 }
00:02:41 verbose #3910 > 00:00:18   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:02:41 verbose #3911 >     "nbconvert",
00:02:41 verbose #3912 >     "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb",
00:02:41 verbose #3913 >     "--to",
00:02:41 verbose #3914 >     "html",
00:02:41 verbose #3915 >     "--HTMLExporter.theme=dark",
00:02:41 verbose #3916 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:41 verbose #3917 > 00:00:19 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb to html
00:02:41 verbose #3918 > 00:00:19 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:02:41 verbose #3919 > 00:00:19 verbose #7 !   validate(nb)
00:02:42 verbose #3920 > 00:00:19 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:02:42 verbose #3921 > 00:00:19 verbose #9 !   return _pygments_highlight(
00:02:42 verbose #3922 > 00:00:19 verbose #10 ! [NbConvertApp] Writing 318363 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.html
00:02:42 verbose #3923 > 00:00:19 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 }
00:02:42 verbose #3924 > 00:00:19   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 }
00:02:42 verbose #3925 > 00:00:19   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:02:42 verbose #3926 >     "-c",
00:02:42 verbose #3927 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:02:42 verbose #3928 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:42 verbose #3929 > 00:00:20 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:02:42 verbose #3930 > 00:00:20   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:02:42 verbose #3931 > 00:00:20   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 23501 }
00:02:42   debug #3932 runtime.execute_with_options_async / { exit_code = 0; output_length = 27144 }
00:02:42   debug #5 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path testing.dib --retries 3
00:02:42   debug #3933 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path guid.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:02:42 verbose #3934 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "guid.dib", "--retries", "3"])) }
00:02:42 verbose #3935 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:02:42 verbose #3936 >     "repl",
00:02:42 verbose #3937 >     "--exit-after-run",
00:02:42 verbose #3938 >     "--run",
00:02:42 verbose #3939 >     "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib",
00:02:42 verbose #3940 >     "--output-path",
00:02:42 verbose #3941 >     "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb",
00:02:42 verbose #3942 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:02:44 verbose #3943 > >
00:02:44 verbose #3944 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:44 verbose #3945 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:44 verbose #3946 > > │ # guid                                                                       │
00:02:44 verbose #3947 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:46 verbose #3948 > >
00:02:46 verbose #3949 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:46 verbose #3950 > > //// test
00:02:46 verbose #3951 > >
00:02:46 verbose #3952 > > open testing
00:02:47 verbose #3953 > >
00:02:47 verbose #3954 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:47 verbose #3955 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:47 verbose #3956 > > │ ## guid                                                                      │
00:02:47 verbose #3957 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:47 verbose #3958 > >
00:02:47 verbose #3959 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:47 verbose #3960 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:47 verbose #3961 > > │ ### guid                                                                     │
00:02:47 verbose #3962 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:47 verbose #3963 > >
00:02:47 verbose #3964 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:47 verbose #3965 > > nominal guid_python =
00:02:47 verbose #3966 > >     `(
00:02:47 verbose #3967 > >         global "import uuid"
00:02:47 verbose #3968 > >         $'' : $'uuid.UUID'
00:02:47 verbose #3969 > >     )
00:02:47 verbose #3970 > > type guid_switch =
00:02:47 verbose #3971 > >     {
00:02:47 verbose #3972 > >         Fsharp : $'System.Guid'
00:02:47 verbose #3973 > >         Python : guid_python
00:02:47 verbose #3974 > >     }
00:02:47 verbose #3975 > > nominal guid = $'backend_switch `(guid_switch)'
00:02:47 verbose #3976 > >
00:02:47 verbose #3977 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:47 verbose #3978 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:47 verbose #3979 > > │ ### new_guid                                                                 │
00:02:47 verbose #3980 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:47 verbose #3981 > >
00:02:47 verbose #3982 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:47 verbose #3983 > > inl new_guid (x : string) : guid =
00:02:47 verbose #3984 > >     x |> convert
00:02:47 verbose #3985 > >
00:02:47 verbose #3986 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:47 verbose #3987 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:47 verbose #3988 > > │ ### new_raw_guid                                                             │
00:02:47 verbose #3989 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:47 verbose #3990 > >
00:02:47 verbose #3991 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:47 verbose #3992 > > inl new_raw_guid () : guid =
00:02:47 verbose #3993 > >     backend_switch {
00:02:47 verbose #3994 > >         Fsharp = fun () => $'System.Guid.NewGuid' () : guid
00:02:47 verbose #3995 > >         Python = fun () => $'uuid.uuid4()' : guid
00:02:47 verbose #3996 > >     }
00:02:47 verbose #3997 > >
00:02:47 verbose #3998 > > ── markdown ────────────────────────────────────────────────────────────────────
00:02:47 verbose #3999 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:02:47 verbose #4000 > > │ ### hash_guid                                                                │
00:02:47 verbose #4001 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:02:47 verbose #4002 > >
00:02:47 verbose #4003 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:47 verbose #4004 > > type hash_guid = guid
00:02:47 verbose #4005 > >
00:02:47 verbose #4006 > > let hash_guid (~hash : string) : hash_guid =
00:02:47 verbose #4007 > >     run_target function
00:02:47 verbose #4008 > >         | Rust (Contract) => fun () => null ()
00:02:47 verbose #4009 > >         | _ => fun () =>
00:02:47 verbose #4010 > >             inl hash = hash |> sm'.pad_left 32i32 '0'
00:02:47 verbose #4011 > >             backend_switch {
00:02:47 verbose #4012 > >                 Fsharp = fun () =>
00:02:47 verbose #4013 > >                     $'`hash_guid
00:02:47 verbose #4014 > > $"{!hash.[[0..7]]}-{!hash.[[8..11]]}-{!hash.[[12..15]]}-{!hash.[[16..19]]}-{!has
00:02:47 verbose #4015 > > h.[[20..31]]}"' : hash_guid
00:02:47 verbose #4016 > >                 Python = fun () =>
00:02:47 verbose #4017 > > $'f"{!hash[[0:8]]}-{!hash[[8:12]]}-{!hash[[12:16]]}-{!hash[[16:20]]}-{!hash[[20:
00:02:47 verbose #4018 > > 32]]}"' : hash_guid
00:02:47 verbose #4019 > >             }
00:02:47 verbose #4020 > >
00:02:47 verbose #4021 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:02:47 verbose #4022 > > //// test
00:02:47 verbose #4023 > > ///! fsharp
00:02:47 verbose #4024 > > ///! cuda
00:02:47 verbose #4025 > > ///! rust
00:02:47 verbose #4026 > > ///! typescript
00:02:47 verbose #4027 > > ///! python
00:02:47 verbose #4028 > >
00:02:47 verbose #4029 > > ""
00:02:47 verbose #4030 > > |> hash_guid
00:02:47 verbose #4031 > > |> _assert_eq' (new_guid "00000000-0000-0000-0000-000000000000")
00:02:47 verbose #4032 > >
00:02:47 verbose #4033 > > "123456789012345678901234567890123"
00:02:47 verbose #4034 > > |> hash_guid
00:02:47 verbose #4035 > > |> _assert_eq' (new_guid "12345678-9012-3456-7890-123456789012")
00:03:00 verbose #4036 > >
00:03:00 verbose #4037 > > ╭─[ 12.40s - return value ]────────────────────────────────────────────────────╮
00:03:00 verbose #4038 > > │                                                                              │
00:03:00 verbose #4039 > > │ .py output (Cuda):                                                           │
00:03:00 verbose #4040 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 / expected:      │
00:03:00 verbose #4041 > > │ 00000000-0000-0000-0000-000000000000                                         │
00:03:00 verbose #4042 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 / expected:      │
00:03:00 verbose #4043 > > │ 12345678-9012-3456-7890-123456789012                                         │
00:03:00 verbose #4044 > > │                                                                              │
00:03:00 verbose #4045 > > │                                                                              │
00:03:00 verbose #4046 > > │ .rs output:                                                                  │
00:03:00 verbose #4047 > > │ __assert_eq' / actual: Guid(00000000-0000-0000-0000-000000000000) /          │
00:03:00 verbose #4048 > > │ expected: Guid(00000000-0000-0000-0000-000000000000)                         │
00:03:00 verbose #4049 > > │ __assert_eq' / actual: Guid(12345678-9012-3456-7890-123456789012) /          │
00:03:00 verbose #4050 > > │ expected: Guid(12345678-9012-3456-7890-123456789012)                         │
00:03:00 verbose #4051 > > │                                                                              │
00:03:00 verbose #4052 > > │                                                                              │
00:03:00 verbose #4053 > > │ .ts output:                                                                  │
00:03:00 verbose #4054 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 / expected:      │
00:03:00 verbose #4055 > > │ 00000000-0000-0000-0000-000000000000                                         │
00:03:00 verbose #4056 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 / expected:      │
00:03:00 verbose #4057 > > │ 12345678-9012-3456-7890-123456789012                                         │
00:03:00 verbose #4058 > > │                                                                              │
00:03:00 verbose #4059 > > │                                                                              │
00:03:00 verbose #4060 > > │ .py output:                                                                  │
00:03:00 verbose #4061 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 / expected:      │
00:03:00 verbose #4062 > > │ 00000000-0000-0000-0000-000000000000                                         │
00:03:00 verbose #4063 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 / expected:      │
00:03:00 verbose #4064 > > │ 12345678-9012-3456-7890-123456789012                                         │
00:03:00 verbose #4065 > > │                                                                              │
00:03:00 verbose #4066 > > │                                                                              │
00:03:00 verbose #4067 > > │                                                                              │
00:03:00 verbose #4068 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:00 verbose #4069 > >
00:03:00 verbose #4070 > > ╭─[ 12.41s - stdout ]──────────────────────────────────────────────────────────╮
00:03:00 verbose #4071 > > │ .fsx output:                                                                 │
00:03:00 verbose #4072 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 / expected:      │
00:03:00 verbose #4073 > > │ 00000000-0000-0000-0000-000000000000                                         │
00:03:00 verbose #4074 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 / expected:      │
00:03:00 verbose #4075 > > │ 12345678-9012-3456-7890-123456789012                                         │
00:03:00 verbose #4076 > > │                                                                              │
00:03:00 verbose #4077 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:00 verbose #4078 > >
00:03:00 verbose #4079 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:00 verbose #4080 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:00 verbose #4081 > > │ ## main                                                                      │
00:03:00 verbose #4082 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:00 verbose #4083 > >
00:03:00 verbose #4084 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:00 verbose #4085 > > inl main () =
00:03:00 verbose #4086 > >     $'let new_guid x = !new_guid x' : ()
00:03:00 verbose #4087 > >     $'let hash_guid x = !hash_guid x' : ()
00:03:00 verbose #4088 > >     $'let new_raw_guid x = !new_raw_guid x' : ()
00:03:00 verbose #4089 > 00:00:17 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 9171 }
00:03:00 verbose #4090 > 00:00:17   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:03:00 verbose #4091 >     "nbconvert",
00:03:00 verbose #4092 >     "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb",
00:03:00 verbose #4093 >     "--to",
00:03:00 verbose #4094 >     "html",
00:03:00 verbose #4095 >     "--HTMLExporter.theme=dark",
00:03:00 verbose #4096 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:03:00 verbose #4097 > 00:00:18 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb to html
00:03:00 verbose #4098 > 00:00:18 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:03:00 verbose #4099 > 00:00:18 verbose #7 !   validate(nb)
00:03:01 verbose #4100 > 00:00:18 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:03:01 verbose #4101 > 00:00:18 verbose #9 !   return _pygments_highlight(
00:03:01 verbose #4102 > 00:00:18 verbose #10 ! [NbConvertApp] Writing 284775 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.html
00:03:01 verbose #4103 > 00:00:18 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 }
00:03:01 verbose #4104 > 00:00:18   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 }
00:03:01 verbose #4105 > 00:00:18   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:03:01 verbose #4106 >     "-c",
00:03:01 verbose #4107 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:03:01 verbose #4108 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:03:01 verbose #4109 > 00:00:18 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:03:01 verbose #4110 > 00:00:18   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:03:01 verbose #4111 > 00:00:18   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 10122 }
00:03:01   debug #4112 runtime.execute_with_options_async / { exit_code = 0; output_length = 13239 }
00:03:01   debug #6 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path guid.dib --retries 3
00:03:01   debug #4113 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:03:01 verbose #4114 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "async.dib", "--retries", "3"])) }
00:03:01 verbose #4115 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:03:01 verbose #4116 >     "repl",
00:03:01 verbose #4117 >     "--exit-after-run",
00:03:01 verbose #4118 >     "--run",
00:03:01 verbose #4119 >     "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib",
00:03:01 verbose #4120 >     "--output-path",
00:03:01 verbose #4121 >     "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb",
00:03:01 verbose #4122 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:03:03 verbose #4123 > >
00:03:03 verbose #4124 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:03 verbose #4125 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:03 verbose #4126 > > │ # async                                                                      │
00:03:03 verbose #4127 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:05 verbose #4128 > >
00:03:05 verbose #4129 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:05 verbose #4130 > > //// test
00:03:05 verbose #4131 > >
00:03:05 verbose #4132 > > open testing
00:03:06 verbose #4133 > >
00:03:06 verbose #4134 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:06 verbose #4135 > > open rust
00:03:06 verbose #4136 > > open rust_operators
00:03:06 verbose #4137 > >
00:03:06 verbose #4138 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:06 verbose #4139 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:06 verbose #4140 > > │ ## rust                                                                      │
00:03:06 verbose #4141 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:06 verbose #4142 > >
00:03:06 verbose #4143 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:06 verbose #4144 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:06 verbose #4145 > > │ ### future                                                                   │
00:03:06 verbose #4146 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:06 verbose #4147 > >
00:03:06 verbose #4148 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:06 verbose #4149 > > nominal future t =
00:03:06 verbose #4150 > >     `(
00:03:06 verbose #4151 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:06 verbose #4152 > > Fable.Core.Emit(\"std::future::Future<Output = $0>\")>]]\n#endif\ntype
00:03:06 verbose #4153 > > std_future_Future<'T> = class end"
00:03:06 verbose #4154 > >         $'' : $'std_future_Future<`t>'
00:03:06 verbose #4155 > >     )
00:03:06 verbose #4156 > >
00:03:06 verbose #4157 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:06 verbose #4158 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:06 verbose #4159 > > │ ### future_pin                                                               │
00:03:06 verbose #4160 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:06 verbose #4161 > >
00:03:06 verbose #4162 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:06 verbose #4163 > > type future_pin t = rust.pin (rust.box (rust.dyn' (future t)))
00:03:06 verbose #4164 > >
00:03:06 verbose #4165 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:06 verbose #4166 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:06 verbose #4167 > > │ ### future_pin_send                                                          │
00:03:06 verbose #4168 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:06 verbose #4169 > >
00:03:06 verbose #4170 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:06 verbose #4171 > > type future_pin_send t = rust.pin (rust.box (rust.send (rust.dyn' (future t))))
00:03:06 verbose #4172 > >
00:03:06 verbose #4173 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:06 verbose #4174 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:06 verbose #4175 > > │ ### block_on                                                                 │
00:03:06 verbose #4176 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:06 verbose #4177 > >
00:03:06 verbose #4178 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:06 verbose #4179 > > inl block_on forall t. (fn : future_pin t) : t =
00:03:06 verbose #4180 > >     inl runtime : infer =
00:03:06 verbose #4181 > >
00:03:06 verbose #4182 > > !\($'$"tokio::runtime::Builder::new_multi_thread().enable_all().build().unwrap()
00:03:06 verbose #4183 > > "')
00:03:06 verbose #4184 > >     !\\(fn, $'"!runtime.handle().block_on($0)"')
00:03:06 verbose #4185 > >
00:03:06 verbose #4186 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:06 verbose #4187 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:06 verbose #4188 > > │ ### block_on'                                                                │
00:03:06 verbose #4189 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:06 verbose #4190 > >
00:03:06 verbose #4191 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:06 verbose #4192 > > inl block_on' forall t. (fn : future_pin t) : t =
00:03:06 verbose #4193 > >     !\\(fn, $'"futures_lite::future::block_on($0)"')
00:03:06 verbose #4194 > >
00:03:06 verbose #4195 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:06 verbose #4196 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:06 verbose #4197 > > │ ### block_on''                                                               │
00:03:06 verbose #4198 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:06 verbose #4199 > >
00:03:06 verbose #4200 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:06 verbose #4201 > > inl block_on'' forall t. (fn : future_pin t) : t =
00:03:06 verbose #4202 > >     !\\(fn, $'"futures::executor::block_on($0)"')
00:03:06 verbose #4203 > >
00:03:06 verbose #4204 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:06 verbose #4205 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:06 verbose #4206 > > │ ### block_on'''                                                              │
00:03:06 verbose #4207 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:06 verbose #4208 > >
00:03:06 verbose #4209 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:06 verbose #4210 > > inl block_on''' forall t. (fn : future_pin t) : t =
00:03:06 verbose #4211 > >     !\\(fn, $'"async_std::task::block_on($0)"')
00:03:07 verbose #4212 > >
00:03:07 verbose #4213 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:07 verbose #4214 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:07 verbose #4215 > > │ ### block_on_send                                                            │
00:03:07 verbose #4216 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:07 verbose #4217 > >
00:03:07 verbose #4218 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:07 verbose #4219 > > inl block_on_send forall t. (fn : future_pin_send t) : t =
00:03:07 verbose #4220 > >     !\($'"tokio::runtime::block_on(!fn)"')
00:03:07 verbose #4221 > >
00:03:07 verbose #4222 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:07 verbose #4223 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:07 verbose #4224 > > │ ### stream_ext                                                               │
00:03:07 verbose #4225 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:07 verbose #4226 > >
00:03:07 verbose #4227 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:07 verbose #4228 > > nominal stream_ext =
00:03:07 verbose #4229 > >     `(
00:03:07 verbose #4230 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:07 verbose #4231 > > Fable.Core.Emit(\"tokio_stream::StreamExt\")>]]\n#endif\ntype
00:03:07 verbose #4232 > > tokio_stream_StreamExt = class end"
00:03:07 verbose #4233 > >         $'' : $'tokio_stream_StreamExt'
00:03:07 verbose #4234 > >     )
00:03:07 verbose #4235 > >
00:03:07 verbose #4236 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:07 verbose #4237 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:07 verbose #4238 > > │ ### join_handle                                                              │
00:03:07 verbose #4239 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:07 verbose #4240 > >
00:03:07 verbose #4241 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:07 verbose #4242 > > nominal join_handle t =
00:03:07 verbose #4243 > >     `(
00:03:07 verbose #4244 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:07 verbose #4245 > > Fable.Core.Emit(\"tokio::task::JoinHandle<$0>\")>]]\n#endif\ntype
00:03:07 verbose #4246 > > tokio_task_JoinHandle<'T> = class end"
00:03:07 verbose #4247 > >         $'' : $'tokio_task_JoinHandle<`t>'
00:03:07 verbose #4248 > >     )
00:03:07 verbose #4249 > >
00:03:07 verbose #4250 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:07 verbose #4251 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:07 verbose #4252 > > │ ### stream_collect                                                           │
00:03:07 verbose #4253 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:07 verbose #4254 > >
00:03:07 verbose #4255 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:07 verbose #4256 > > inl stream_collect forall t u.
00:03:07 verbose #4257 > >     (stream : t)
00:03:07 verbose #4258 > >     : future_pin (am'.vec u)
00:03:07 verbose #4259 > >     =
00:03:07 verbose #4260 > >     !\($'"Box::pin(tokio_stream::StreamExt::collect(!stream))"')
00:03:07 verbose #4261 > >
00:03:07 verbose #4262 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:07 verbose #4263 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:07 verbose #4264 > > │ ### stream_next                                                              │
00:03:07 verbose #4265 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:07 verbose #4266 > >
00:03:07 verbose #4267 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:07 verbose #4268 > > inl stream_next forall t u.
00:03:07 verbose #4269 > >     (stream : t)
00:03:07 verbose #4270 > >     : future_pin (optionm'.option' u)
00:03:07 verbose #4271 > >     =
00:03:07 verbose #4272 > >     !\($'"let mut !stream = !stream"')
00:03:07 verbose #4273 > >     !\($'"Box::pin(tokio_stream::StreamExt::next(&mut !stream))"')
00:03:07 verbose #4274 > >
00:03:07 verbose #4275 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:07 verbose #4276 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:07 verbose #4277 > > │ ### stream_filter_map                                                        │
00:03:07 verbose #4278 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:07 verbose #4279 > >
00:03:07 verbose #4280 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:07 verbose #4281 > > inl stream_filter_map forall t u v.
00:03:07 verbose #4282 > >     (fn : u -> optionm'.option' v)
00:03:07 verbose #4283 > >     (stream : t)
00:03:07 verbose #4284 > >     : infer' v
00:03:07 verbose #4285 > >     =
00:03:07 verbose #4286 > >     inl fn = join fn
00:03:07 verbose #4287 > >     !\($'"tokio_stream::StreamExt::filter_map(!stream, |x| !fn(x))"')
00:03:07 verbose #4288 > >
00:03:07 verbose #4289 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:07 verbose #4290 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:07 verbose #4291 > > │ ### spawn                                                                    │
00:03:07 verbose #4292 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:07 verbose #4293 > >
00:03:07 verbose #4294 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:07 verbose #4295 > > inl spawn forall t. (fn : future_pin_send t) : join_handle t =
00:03:07 verbose #4296 > >     !\($'"tokio::runtime::spawn(!fn)"')
00:03:07 verbose #4297 > >
00:03:07 verbose #4298 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:07 verbose #4299 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:07 verbose #4300 > > │ ### try_join_all                                                             │
00:03:07 verbose #4301 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:07 verbose #4302 > >
00:03:07 verbose #4303 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:07 verbose #4304 > > nominal try_join_all t =
00:03:07 verbose #4305 > >     `(
00:03:07 verbose #4306 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:07 verbose #4307 > > Fable.Core.Emit(\"futures::future::TryJoinAll<$0>\")>]]\n#endif\ntype
00:03:07 verbose #4308 > > futures_future_TryJoinAll<'T> = class end"
00:03:07 verbose #4309 > >         $'' : $'futures_future_TryJoinAll<`t>'
00:03:07 verbose #4310 > >     )
00:03:07 verbose #4311 > >
00:03:07 verbose #4312 > > inl try_join_all forall t. (x : am'.vec (future_pin (resultm.result' t
00:03:07 verbose #4313 > > sm'.std_string))) : try_join_all (future_pin (resultm.result' t sm'.std_string))
00:03:07 verbose #4314 > > =
00:03:07 verbose #4315 > >     inl x = join x
00:03:07 verbose #4316 > >     !\($'"futures::future::try_join_all(!x)"')
00:03:07 verbose #4317 > >
00:03:07 verbose #4318 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:07 verbose #4319 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:07 verbose #4320 > > │ ### fuse                                                                     │
00:03:07 verbose #4321 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:07 verbose #4322 > >
00:03:07 verbose #4323 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:07 verbose #4324 > > nominal fuse t =
00:03:07 verbose #4325 > >     `(
00:03:07 verbose #4326 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:07 verbose #4327 > > Fable.Core.Emit(\"tokio::prelude::stream::Fuse<$0>\")>]]\n#endif\ntype
00:03:07 verbose #4328 > > tokio_prelude_stream_Fuse<'T> = class end"
00:03:07 verbose #4329 > >         $'' : $'tokio_prelude_stream_Fuse<`t>'
00:03:07 verbose #4330 > >     )
00:03:07 verbose #4331 > >
00:03:07 verbose #4332 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:07 verbose #4333 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:07 verbose #4334 > > │ ### future_fuse                                                              │
00:03:07 verbose #4335 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:07 verbose #4336 > >
00:03:07 verbose #4337 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:07 verbose #4338 > > inl future_fuse forall t. (x : future_pin t) : fuse (future_pin t) =
00:03:07 verbose #4339 > >     !\($'"futures::future::FutureExt::fuse(!x)"')
00:03:07 verbose #4340 > >
00:03:07 verbose #4341 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:07 verbose #4342 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:07 verbose #4343 > > │ ### join_all                                                                 │
00:03:07 verbose #4344 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:07 verbose #4345 > >
00:03:07 verbose #4346 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:07 verbose #4347 > > nominal join_all t =
00:03:07 verbose #4348 > >     `(
00:03:07 verbose #4349 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:07 verbose #4350 > > Fable.Core.Emit(\"futures::future::JoinAll<$0>\")>]]\n#endif\ntype
00:03:07 verbose #4351 > > futures_future_JoinAll<'T> = class end"
00:03:07 verbose #4352 > >         $'' : $'futures_future_JoinAll<`t>'
00:03:07 verbose #4353 > >     )
00:03:07 verbose #4354 > >
00:03:07 verbose #4355 > > inl join_all forall t. (x : am'.vec (future_pin t)) : join_all (future_pin t) =
00:03:07 verbose #4356 > >     inl x = join x
00:03:07 verbose #4357 > >     !\($'"futures::future::join_all(!x)"')
00:03:08 verbose #4358 > >
00:03:08 verbose #4359 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:08 verbose #4360 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:08 verbose #4361 > > │ ### join_all_send                                                            │
00:03:08 verbose #4362 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:08 verbose #4363 > >
00:03:08 verbose #4364 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:08 verbose #4365 > > inl join_all_send forall t. (x : am'.vec (future_pin_send t)) : join_all
00:03:08 verbose #4366 > > (future_pin_send t) =
00:03:08 verbose #4367 > >     inl x = join x
00:03:08 verbose #4368 > >     !\($'"futures::future::join_all(!x)"')
00:03:08 verbose #4369 > >
00:03:08 verbose #4370 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:08 verbose #4371 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:08 verbose #4372 > > │ ### await_handle                                                             │
00:03:08 verbose #4373 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:08 verbose #4374 > >
00:03:08 verbose #4375 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:08 verbose #4376 > > inl await_handle forall t. (x : join_handle t) : t =
00:03:08 verbose #4377 > >     !\($'"!x.await"')
00:03:08 verbose #4378 > >
00:03:08 verbose #4379 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:08 verbose #4380 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:08 verbose #4381 > > │ ### await_all                                                                │
00:03:08 verbose #4382 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:08 verbose #4383 > >
00:03:08 verbose #4384 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:08 verbose #4385 > > inl await_all forall t. (x : join_all (future_pin t)) : am'.vec t =
00:03:08 verbose #4386 > >     !\($'"!x.await"')
00:03:08 verbose #4387 > >
00:03:08 verbose #4388 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:08 verbose #4389 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:08 verbose #4390 > > │ ### await_all_send                                                           │
00:03:08 verbose #4391 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:08 verbose #4392 > >
00:03:08 verbose #4393 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:08 verbose #4394 > > inl await_all_send forall t. (x : join_all (future_pin_send t)) : am'.vec t =
00:03:08 verbose #4395 > >     !\($'"!x.await"')
00:03:08 verbose #4396 > >
00:03:08 verbose #4397 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:08 verbose #4398 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:08 verbose #4399 > > │ ### try_await_all                                                            │
00:03:08 verbose #4400 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:08 verbose #4401 > >
00:03:08 verbose #4402 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:08 verbose #4403 > > inl try_await_all forall t. (x : try_join_all (future_pin (resultm.result' t
00:03:08 verbose #4404 > > sm'.std_string))) : resultm.result' (am'.vec t) sm'.std_string =
00:03:08 verbose #4405 > >     !\($'"!x.await"')
00:03:08 verbose #4406 > >
00:03:08 verbose #4407 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:08 verbose #4408 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:08 verbose #4409 > > │ ### try_await_all_send                                                       │
00:03:08 verbose #4410 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:08 verbose #4411 > >
00:03:08 verbose #4412 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:08 verbose #4413 > > inl try_await_all_send forall t. (x : try_join_all (future_pin_send
00:03:08 verbose #4414 > > (resultm.result' t sm'.std_string))) : resultm.result' (am'.vec t)
00:03:08 verbose #4415 > > sm'.std_string =
00:03:08 verbose #4416 > >     !\($'"!x.await"')
00:03:08 verbose #4417 > >
00:03:08 verbose #4418 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:08 verbose #4419 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:08 verbose #4420 > > │ ### await                                                                    │
00:03:08 verbose #4421 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:08 verbose #4422 > >
00:03:08 verbose #4423 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:08 verbose #4424 > > inl await forall t. (x : future_pin t) : t =
00:03:08 verbose #4425 > >     !\($'"!x.await"')
00:03:08 verbose #4426 > >
00:03:08 verbose #4427 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:08 verbose #4428 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:08 verbose #4429 > > │ ### await                                                                    │
00:03:08 verbose #4430 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:08 verbose #4431 > >
00:03:08 verbose #4432 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:08 verbose #4433 > > inl await_send forall t. (x : future_pin_send t) : t =
00:03:08 verbose #4434 > >     !\($'"!x.await"')
00:03:08 verbose #4435 > >
00:03:08 verbose #4436 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:08 verbose #4437 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:08 verbose #4438 > > │ ### into_iter                                                                │
00:03:08 verbose #4439 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:08 verbose #4440 > >
00:03:08 verbose #4441 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:08 verbose #4442 > > nominal into_iter t =
00:03:08 verbose #4443 > >     `(
00:03:08 verbose #4444 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:08 verbose #4445 > > Fable.Core.Emit(\"rayon::vec::IntoIter<$0>\")>]]\n#endif\ntype
00:03:08 verbose #4446 > > rayon_vec_IntoIter<'T> = class end"
00:03:08 verbose #4447 > >         $'' : $'rayon_vec_IntoIter<`t>'
00:03:08 verbose #4448 > >     )
00:03:08 verbose #4449 > >
00:03:08 verbose #4450 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:08 verbose #4451 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:08 verbose #4452 > > │ ### into_par_iter                                                            │
00:03:08 verbose #4453 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:08 verbose #4454 > >
00:03:08 verbose #4455 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:08 verbose #4456 > > inl into_par_iter forall t. (x : am'.vec t) : into_iter t =
00:03:08 verbose #4457 > >     !\\(x, $'"rayon::iter::IntoParallelIterator::into_par_iter($0)"')
00:03:08 verbose #4458 > >
00:03:08 verbose #4459 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:08 verbose #4460 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:08 verbose #4461 > > │ ### par_iter                                                                 │
00:03:08 verbose #4462 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:08 verbose #4463 > >
00:03:08 verbose #4464 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:08 verbose #4465 > > inl par_iter forall t. (x : am'.vec t) : into_iter t =
00:03:08 verbose #4466 > >     !\($'"rayon::iter::IntoParallelIterator::par_iter(!x)"')
00:03:08 verbose #4467 > >
00:03:08 verbose #4468 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:08 verbose #4469 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:08 verbose #4470 > > │ ### iter_map                                                                 │
00:03:08 verbose #4471 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:08 verbose #4472 > >
00:03:08 verbose #4473 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:08 verbose #4474 > > nominal iter_map t u =
00:03:08 verbose #4475 > >     `(
00:03:08 verbose #4476 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:08 verbose #4477 > > Fable.Core.Emit(\"rayon::iter::Map<$0, _>\")>]]\n#endif\ntype rayon_iter_Map<'T>
00:03:08 verbose #4478 > > = class end"
00:03:08 verbose #4479 > >         $'' : $'rayon_iter_Map<`t>'
00:03:08 verbose #4480 > >     )
00:03:09 verbose #4481 > >
00:03:09 verbose #4482 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:09 verbose #4483 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:09 verbose #4484 > > │ ### par_map                                                                  │
00:03:09 verbose #4485 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:09 verbose #4486 > >
00:03:09 verbose #4487 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:09 verbose #4488 > > inl par_map forall t u. (fn : t -> u) (ar : into_iter t) : iter_map (into_iter
00:03:09 verbose #4489 > > t) u =
00:03:09 verbose #4490 > >     !\\((ar, fn), $'"rayon::iter::ParallelIterator::map($0, |x| $1(x))"')
00:03:09 verbose #4491 > >
00:03:09 verbose #4492 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:09 verbose #4493 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:09 verbose #4494 > > │ ### par_collect                                                              │
00:03:09 verbose #4495 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:09 verbose #4496 > >
00:03:09 verbose #4497 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:09 verbose #4498 > > inl par_collect forall t u. (iter : iter_map (into_iter t) u) : am'.vec u =
00:03:09 verbose #4499 > >     !\\(iter, $'"rayon::iter::ParallelIterator::collect($0)"')
00:03:09 verbose #4500 > >
00:03:09 verbose #4501 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:09 verbose #4502 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:09 verbose #4503 > > │ ### try_join_all_iter                                                        │
00:03:09 verbose #4504 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:09 verbose #4505 > >
00:03:09 verbose #4506 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:09 verbose #4507 > > inl try_join_all_iter forall t. (x : am'.vec (future_pin_send (resultm.result' t
00:03:09 verbose #4508 > > sm'.std_string))) : try_join_all (future_pin_send (resultm.result' t
00:03:09 verbose #4509 > > sm'.std_string)) =
00:03:09 verbose #4510 > >     inl x = join x
00:03:09 verbose #4511 > >     !\($'"futures::future::try_join_all(!x)"')
00:03:09 verbose #4512 > >
00:03:09 verbose #4513 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:09 verbose #4514 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:09 verbose #4515 > > │ ### future_init                                                              │
00:03:09 verbose #4516 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:09 verbose #4517 > >
00:03:09 verbose #4518 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:09 verbose #4519 > > inl future_init forall t. (move : bool) (x : () -> t) : infer' t =
00:03:09 verbose #4520 > >     if move
00:03:09 verbose #4521 > >     then (!\($'"true; let __future_init = Box::pin(async move { //"') : bool) |>
00:03:09 verbose #4522 > > ignore
00:03:09 verbose #4523 > >     else (!\($'"true; let __future_init = Box::pin(async { //"') : bool) |>
00:03:09 verbose #4524 > > ignore
00:03:09 verbose #4525 > >
00:03:09 verbose #4526 > >     inl is_unit : bool =
00:03:09 verbose #4527 > >         real
00:03:09 verbose #4528 > >             typecase t with
00:03:09 verbose #4529 > >             | () => true
00:03:09 verbose #4530 > >             | _ => false
00:03:09 verbose #4531 > >
00:03:09 verbose #4532 > >     inl x' = x ()
00:03:09 verbose #4533 > >     inl x' = join x'
00:03:09 verbose #4534 > >
00:03:09 verbose #4535 > >     inl depth =
00:03:09 verbose #4536 > >         if is_unit
00:03:09 verbose #4537 > >         then 2, 1
00:03:09 verbose #4538 > >         else 1, 0
00:03:09 verbose #4539 > >
00:03:09 verbose #4540 > >     x' |> rust.fix_closure depth
00:03:09 verbose #4541 > >
00:03:09 verbose #4542 > >     !\($'"__future_init"')
00:03:09 verbose #4543 > >
00:03:09 verbose #4544 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:09 verbose #4545 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:09 verbose #4546 > > │ ### new_future                                                               │
00:03:09 verbose #4547 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:09 verbose #4548 > >
00:03:09 verbose #4549 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:09 verbose #4550 > > inl new_future forall t. (x : () -> t) : future_pin t =
00:03:09 verbose #4551 > >     inl result = future_init false x
00:03:09 verbose #4552 > >     !\($'"!result"')
00:03:09 verbose #4553 > >
00:03:09 verbose #4554 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:09 verbose #4555 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:09 verbose #4556 > > │ ### new_future_move                                                          │
00:03:09 verbose #4557 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:09 verbose #4558 > >
00:03:09 verbose #4559 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:09 verbose #4560 > > inl new_future_move forall t. (x : () -> t) : future_pin t =
00:03:09 verbose #4561 > >     inl result = future_init true x
00:03:09 verbose #4562 > >     !\($'"!result"')
00:03:09 verbose #4563 > >
00:03:09 verbose #4564 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:09 verbose #4565 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:09 verbose #4566 > > │ ### new_future_send                                                          │
00:03:09 verbose #4567 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:09 verbose #4568 > >
00:03:09 verbose #4569 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:09 verbose #4570 > > inl new_future_send forall t. (x : () -> t) : future_pin_send t =
00:03:09 verbose #4571 > >     inl result = future_init false x
00:03:09 verbose #4572 > >     !\($'"!result"')
00:03:09 verbose #4573 > >
00:03:09 verbose #4574 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:09 verbose #4575 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:09 verbose #4576 > > │ ### new_future_move_send                                                     │
00:03:09 verbose #4577 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:09 verbose #4578 > >
00:03:09 verbose #4579 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:09 verbose #4580 > > inl new_future_move_send forall t. (x : () -> t) : future_pin_send t =
00:03:09 verbose #4581 > >     inl result = future_init true x
00:03:09 verbose #4582 > >     !\($'"!result"')
00:03:09 verbose #4583 > >
00:03:09 verbose #4584 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:09 verbose #4585 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:09 verbose #4586 > > │ ## fsharp                                                                    │
00:03:09 verbose #4587 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:09 verbose #4588 > >
00:03:09 verbose #4589 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:09 verbose #4590 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:09 verbose #4591 > > │ ### async                                                                    │
00:03:09 verbose #4592 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:09 verbose #4593 > >
00:03:09 verbose #4594 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:09 verbose #4595 > > nominal async t = $'Async<`t>'
00:03:09 verbose #4596 > >
00:03:09 verbose #4597 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:09 verbose #4598 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:09 verbose #4599 > > │ ### task                                                                     │
00:03:09 verbose #4600 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:09 verbose #4601 > >
00:03:09 verbose #4602 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:09 verbose #4603 > > nominal task t =
00:03:09 verbose #4604 > >     `(
00:03:09 verbose #4605 > >         typecase t with
00:03:09 verbose #4606 > >         | () => $'' : $'System.Threading.Tasks.Task'
00:03:09 verbose #4607 > >         | _ => $'' : $'System.Threading.Tasks.Task<`t>'
00:03:09 verbose #4608 > >     )
00:03:09 verbose #4609 > >
00:03:09 verbose #4610 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:09 verbose #4611 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:09 verbose #4612 > > │ ### new_async_unit                                                           │
00:03:09 verbose #4613 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:09 verbose #4614 > >
00:03:09 verbose #4615 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:09 verbose #4616 > > inl new_async_unit forall t. (fn : () -> ()) : async t =
00:03:09 verbose #4617 > >     run_target function
00:03:09 verbose #4618 > >         | Fsharp (Native) => fun () =>
00:03:09 verbose #4619 > >             inl result : optionm'.option' (async t) = optionm'.none' ()
00:03:09 verbose #4620 > >             $'let mutable _!result = !result '
00:03:09 verbose #4621 > >             $'async {'
00:03:09 verbose #4622 > >             fn ()
00:03:09 verbose #4623 > >             real
00:03:09 verbose #4624 > >                 typecase t with
00:03:09 verbose #4625 > >                 | () => $'()' : ()
00:03:09 verbose #4626 > >                 | _ => ()
00:03:09 verbose #4627 > >             $'}'
00:03:09 verbose #4628 > >             $'|> fun x -> _!result <- Some x'
00:03:09 verbose #4629 > >             $'match _!result with Some x -> x | None -> failwith
00:03:09 verbose #4630 > > "async.new_async_unit / _!result=None"'
00:03:09 verbose #4631 > >         | _ => fun () => null ()
00:03:10 verbose #4632 > >
00:03:10 verbose #4633 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:10 verbose #4634 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:10 verbose #4635 > > │ ### new_async                                                                │
00:03:10 verbose #4636 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:10 verbose #4637 > >
00:03:10 verbose #4638 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:10 verbose #4639 > > inl new_async forall t. (fn : () -> t) : async t =
00:03:10 verbose #4640 > >     new_async_unit (fn >> ignore)
00:03:10 verbose #4641 > >
00:03:10 verbose #4642 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:10 verbose #4643 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:10 verbose #4644 > > │ ### new_task                                                                 │
00:03:10 verbose #4645 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:10 verbose #4646 > >
00:03:10 verbose #4647 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:10 verbose #4648 > > inl new_task forall t. (fn : () -> t) : task t =
00:03:10 verbose #4649 > >     run_target function
00:03:10 verbose #4650 > >         | Fsharp (Native) => fun () =>
00:03:10 verbose #4651 > >             inl result : optionm'.option' (task t) = optionm'.none' ()
00:03:10 verbose #4652 > >             $'let mutable _!result = !result '
00:03:10 verbose #4653 > >             $'task {'
00:03:10 verbose #4654 > >             fn () |> ignore
00:03:10 verbose #4655 > >             $'}'
00:03:10 verbose #4656 > >             $'|> fun x -> _!result <- Some x'
00:03:10 verbose #4657 > >             $'match _!result with Some x -> x | None -> failwith "async.new_task
00:03:10 verbose #4658 > > / _!result=None"'
00:03:10 verbose #4659 > >         | _ => fun () => null ()
00:03:10 verbose #4660 > >
00:03:10 verbose #4661 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:10 verbose #4662 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:10 verbose #4663 > > │ ### await_task                                                               │
00:03:10 verbose #4664 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:10 verbose #4665 > >
00:03:10 verbose #4666 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:10 verbose #4667 > > inl await_task forall t. (a : task t) : async t =
00:03:10 verbose #4668 > >     run_target function
00:03:10 verbose #4669 > >         | Fsharp (Native) => fun () =>
00:03:10 verbose #4670 > >             a |> $'Async.AwaitTask'
00:03:10 verbose #4671 > >         | _ => fun () => null ()
00:03:10 verbose #4672 > >
00:03:10 verbose #4673 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:10 verbose #4674 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:10 verbose #4675 > > │ ### ignore                                                                   │
00:03:10 verbose #4676 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:10 verbose #4677 > >
00:03:10 verbose #4678 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:10 verbose #4679 > > inl ignore forall t. (a : async t) : async () =
00:03:10 verbose #4680 > >     run_target function
00:03:10 verbose #4681 > >         | Fsharp (Native) => fun () =>
00:03:10 verbose #4682 > >             a |> $'Async.Ignore'
00:03:10 verbose #4683 > >         | _ => fun () => null ()
00:03:10 verbose #4684 > >
00:03:10 verbose #4685 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:10 verbose #4686 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:10 verbose #4687 > > │ ### run_synchronously                                                        │
00:03:10 verbose #4688 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:10 verbose #4689 > >
00:03:10 verbose #4690 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:10 verbose #4691 > > inl run_synchronously forall t. (a : async t) : t =
00:03:10 verbose #4692 > >     run_target function
00:03:10 verbose #4693 > >         | Fsharp (Native) => fun () =>
00:03:10 verbose #4694 > >             a |> $'Async.RunSynchronously'
00:03:10 verbose #4695 > >         | _ => fun () => null ()
00:03:10 verbose #4696 > >
00:03:10 verbose #4697 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:10 verbose #4698 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:10 verbose #4699 > > │ ### start                                                                    │
00:03:10 verbose #4700 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:10 verbose #4701 > >
00:03:10 verbose #4702 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:10 verbose #4703 > > inl start (a : async ()) : () =
00:03:10 verbose #4704 > >     run_target function
00:03:10 verbose #4705 > >         | Fsharp (Native) => fun () =>
00:03:10 verbose #4706 > >             a |> $'Async.Start'
00:03:10 verbose #4707 > >         | _ => fun () => null ()
00:03:11 verbose #4708 > >
00:03:11 verbose #4709 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:11 verbose #4710 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:11 verbose #4711 > > │ ### start_child                                                              │
00:03:11 verbose #4712 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:11 verbose #4713 > >
00:03:11 verbose #4714 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:11 verbose #4715 > > inl start_child forall t. (a : async t) : async (async t) =
00:03:11 verbose #4716 > >     run_target function
00:03:11 verbose #4717 > >         | Fsharp (Native) => fun () =>
00:03:11 verbose #4718 > >             a |> $'Async.StartChild'
00:03:11 verbose #4719 > >         | _ => fun () => null ()
00:03:11 verbose #4720 > >
00:03:11 verbose #4721 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:11 verbose #4722 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:11 verbose #4723 > > │ ### start_child_timeout                                                      │
00:03:11 verbose #4724 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:11 verbose #4725 > >
00:03:11 verbose #4726 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:11 verbose #4727 > > inl start_child_timeout forall t. (timeout : i32) (a : async t) : async (async
00:03:11 verbose #4728 > > t) =
00:03:11 verbose #4729 > >     run_target function
00:03:11 verbose #4730 > >         | Fsharp (Native) => fun () =>
00:03:11 verbose #4731 > >             $'Async.StartChild (!a, !timeout)'
00:03:11 verbose #4732 > >         | _ => fun () => null ()
00:03:11 verbose #4733 > >
00:03:11 verbose #4734 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:11 verbose #4735 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:11 verbose #4736 > > │ ### start_immediate                                                          │
00:03:11 verbose #4737 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:11 verbose #4738 > >
00:03:11 verbose #4739 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:11 verbose #4740 > > inl start_immediate forall t. (a : async t) : () =
00:03:11 verbose #4741 > >     run_target function
00:03:11 verbose #4742 > >         | Fsharp (Native) => fun () =>
00:03:11 verbose #4743 > >             a |> $'Async.StartImmediate'
00:03:11 verbose #4744 > >         | _ => fun () => null ()
00:03:11 verbose #4745 > >
00:03:11 verbose #4746 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:11 verbose #4747 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:11 verbose #4748 > > │ ### task_canceled_exception                                                  │
00:03:11 verbose #4749 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:11 verbose #4750 > >
00:03:11 verbose #4751 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:11 verbose #4752 > > nominal task_canceled_exception =
00:03:11 verbose #4753 > > $'System.Threading.Tasks.TaskCanceledException'
00:03:11 verbose #4754 > >
00:03:11 verbose #4755 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:11 verbose #4756 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:11 verbose #4757 > > │ ### sleep                                                                    │
00:03:11 verbose #4758 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:11 verbose #4759 > >
00:03:11 verbose #4760 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:11 verbose #4761 > > inl sleep (ms : i32) : async () =
00:03:11 verbose #4762 > >     run_target function
00:03:11 verbose #4763 > >         | Fsharp (Native) => fun () =>
00:03:11 verbose #4764 > >             ms |> $'Async.Sleep'
00:03:11 verbose #4765 > >         | _ => fun () => null ()
00:03:11 verbose #4766 > >
00:03:11 verbose #4767 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:11 verbose #4768 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:11 verbose #4769 > > │ ### do                                                                       │
00:03:11 verbose #4770 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:11 verbose #4771 > >
00:03:11 verbose #4772 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:11 verbose #4773 > > inl do (a : async ()) : () =
00:03:11 verbose #4774 > >     $'do\! !a '
00:03:11 verbose #4775 > >
00:03:11 verbose #4776 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:11 verbose #4777 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:11 verbose #4778 > > │ ### let'                                                                     │
00:03:11 verbose #4779 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:11 verbose #4780 > >
00:03:11 verbose #4781 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:11 verbose #4782 > > inl let' forall t. (a : async t) : t =
00:03:11 verbose #4783 > >     $'let\! !a = !a '
00:03:11 verbose #4784 > >     $'!a '
00:03:11 verbose #4785 > >
00:03:11 verbose #4786 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:11 verbose #4787 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:11 verbose #4788 > > │ ### return_await                                                             │
00:03:11 verbose #4789 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:11 verbose #4790 > >
00:03:11 verbose #4791 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:11 verbose #4792 > > inl return_await forall t. (a : async t) : () =
00:03:11 verbose #4793 > >     $'return\! !a '
00:03:11 verbose #4794 > >
00:03:11 verbose #4795 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:11 verbose #4796 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:11 verbose #4797 > > │ ### return_await'                                                            │
00:03:11 verbose #4798 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:11 verbose #4799 > >
00:03:11 verbose #4800 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:11 verbose #4801 > > inl return_await' forall t. (a : async t) : t =
00:03:11 verbose #4802 > >     $'return\! !a '
00:03:11 verbose #4803 > >
00:03:11 verbose #4804 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:11 verbose #4805 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:11 verbose #4806 > > │ ### map                                                                      │
00:03:11 verbose #4807 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:11 verbose #4808 > >
00:03:11 verbose #4809 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:11 verbose #4810 > > inl map forall t u. (fn : t -> u) (a : async t) : async u =
00:03:11 verbose #4811 > >     fun () =>
00:03:11 verbose #4812 > >         inl x = a |> let'
00:03:11 verbose #4813 > >         fn x |> return
00:03:11 verbose #4814 > >     |> new_async_unit
00:03:12 verbose #4815 > >
00:03:12 verbose #4816 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:12 verbose #4817 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:12 verbose #4818 > > │ ### catch'                                                                   │
00:03:12 verbose #4819 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:12 verbose #4820 > >
00:03:12 verbose #4821 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:12 verbose #4822 > > inl catch' forall t e. (a : async t) : async (choice2' t e) =
00:03:12 verbose #4823 > >     run_target function
00:03:12 verbose #4824 > >         | Fsharp (Native) => fun () =>
00:03:12 verbose #4825 > >             a |> $'Async.Catch'
00:03:12 verbose #4826 > >         | _ => fun () => null ()
00:03:12 verbose #4827 > >
00:03:12 verbose #4828 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:12 verbose #4829 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:12 verbose #4830 > > │ ### catch                                                                    │
00:03:12 verbose #4831 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:12 verbose #4832 > >
00:03:12 verbose #4833 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:12 verbose #4834 > > inl catch forall t e. (a : async t) : async (result t e) =
00:03:12 verbose #4835 > >     a
00:03:12 verbose #4836 > >     |> catch'
00:03:12 verbose #4837 > >     |> map choice2_unbox
00:03:12 verbose #4838 > >     |> map function
00:03:12 verbose #4839 > >         | C1of2 result => Ok result
00:03:12 verbose #4840 > >         | C2of2 ex => Error ex
00:03:12 verbose #4841 > >
00:03:12 verbose #4842 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:12 verbose #4843 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:12 verbose #4844 > > │ ### run_with_timeout_async                                                   │
00:03:12 verbose #4845 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:12 verbose #4846 > >
00:03:12 verbose #4847 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:12 verbose #4848 > > inl run_with_timeout_async forall t. (timeout : i32) (fn : async t) : async
00:03:12 verbose #4849 > > (option t) =
00:03:12 verbose #4850 > >     run_target function
00:03:12 verbose #4851 > >         | Fsharp (Native) => fun () =>
00:03:12 verbose #4852 > >             fun () =>
00:03:12 verbose #4853 > >                 inl child = fn |> start_child_timeout timeout |> let'
00:03:12 verbose #4854 > >                 child
00:03:12 verbose #4855 > >                 |> catch
00:03:12 verbose #4856 > >                 |> map function
00:03:12 verbose #4857 > >                     | Ok result => Some result
00:03:12 verbose #4858 > >                     | Error ex when ex |> sm'.format_debug |> sm'.contains
00:03:12 verbose #4859 > > "System.TimeoutException" =>
00:03:12 verbose #4860 > >                         trace Verbose
00:03:12 verbose #4861 > >                             fun () => $'"async.run_with_timeout_async"'
00:03:12 verbose #4862 > >                             fun () => { timeout }
00:03:12 verbose #4863 > >                         None
00:03:12 verbose #4864 > >                     | Error (ex : exn) =>
00:03:12 verbose #4865 > >                         trace Critical
00:03:12 verbose #4866 > >                             fun () => $'$"async.run_with_timeout_async**"'
00:03:12 verbose #4867 > >                             fun () => { timeout ex = ex |> sm'.format_exception
00:03:12 verbose #4868 > > }
00:03:12 verbose #4869 > >                         None
00:03:12 verbose #4870 > >                 |> return_await
00:03:12 verbose #4871 > >             |> new_async_unit
00:03:12 verbose #4872 > >         | _ => fun () => null ()
00:03:12 verbose #4873 > >
00:03:12 verbose #4874 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:12 verbose #4875 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:12 verbose #4876 > > │ ### run_with_timeout                                                         │
00:03:12 verbose #4877 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:12 verbose #4878 > >
00:03:12 verbose #4879 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:12 verbose #4880 > > inl run_with_timeout timeout fn =
00:03:12 verbose #4881 > >     fn
00:03:12 verbose #4882 > >     |> run_with_timeout_async timeout
00:03:12 verbose #4883 > >     |> run_synchronously
00:03:12 verbose #4884 > >
00:03:12 verbose #4885 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:12 verbose #4886 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:12 verbose #4887 > > │ ### cancellation_token                                                       │
00:03:12 verbose #4888 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:12 verbose #4889 > >
00:03:12 verbose #4890 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:12 verbose #4891 > > inl cancellation_token () : async threading.cancellation_token =
00:03:12 verbose #4892 > >     $'Async.CancellationToken'
00:03:12 verbose #4893 > >
00:03:12 verbose #4894 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:12 verbose #4895 > > inl default_cancellation_token () : threading.cancellation_token =
00:03:12 verbose #4896 > >     $'Async.DefaultCancellationToken'
00:03:12 verbose #4897 > >
00:03:12 verbose #4898 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:12 verbose #4899 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:12 verbose #4900 > > │ ### merge_cancellation_token_with_default_async                              │
00:03:12 verbose #4901 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:12 verbose #4902 > >
00:03:12 verbose #4903 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:12 verbose #4904 > > inl merge_cancellation_token_with_default_async
00:03:12 verbose #4905 > >     (token : threading.cancellation_token)
00:03:12 verbose #4906 > >     : async threading.cancellation_token
00:03:12 verbose #4907 > >     =
00:03:12 verbose #4908 > >     run_target function
00:03:12 verbose #4909 > >         | Fsharp (Native) => fun () =>
00:03:12 verbose #4910 > >             fun () =>
00:03:12 verbose #4911 > >                 inl ct = cancellation_token () |> let'
00:03:12 verbose #4912 > >                 inl dct = default_cancellation_token ()
00:03:12 verbose #4913 > >                 inl cts = threading.create_linked_token_source ;[[ ct; dct;
00:03:12 verbose #4914 > > token ]]
00:03:12 verbose #4915 > >                 cts |> threading.cancellation_source_token |> return
00:03:12 verbose #4916 > >             |> new_async_unit
00:03:12 verbose #4917 > >         | _ => fun () => null ()
00:03:12 verbose #4918 > >
00:03:12 verbose #4919 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:12 verbose #4920 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:12 verbose #4921 > > │ ### with_trace_level                                                         │
00:03:12 verbose #4922 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:12 verbose #4923 > >
00:03:12 verbose #4924 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:12 verbose #4925 > > inl with_trace_level forall t. level fn : _ t = new_async fun () =>
00:03:12 verbose #4926 > >     inl trace_state = get_trace_state_or_init None
00:03:12 verbose #4927 > >     inl old_trace_level = *trace_state.level
00:03:12 verbose #4928 > >     inl trace_level = trace_state.level
00:03:12 verbose #4929 > >     try_finally
00:03:12 verbose #4930 > >         fun () =>
00:03:12 verbose #4931 > >             trace_level <- level
00:03:12 verbose #4932 > >             fn |> return_await
00:03:12 verbose #4933 > >         fun () =>
00:03:12 verbose #4934 > >             trace_level <- old_trace_level
00:03:12 verbose #4935 > >
00:03:12 verbose #4936 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:12 verbose #4937 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:12 verbose #4938 > > │ ### value_task                                                               │
00:03:12 verbose #4939 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:12 verbose #4940 > >
00:03:12 verbose #4941 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:12 verbose #4942 > > nominal value_task = $'System.Threading.Tasks.ValueTask'
00:03:12 verbose #4943 > >
00:03:12 verbose #4944 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:12 verbose #4945 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:12 verbose #4946 > > │ ### value_task_as_task                                                       │
00:03:12 verbose #4947 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:12 verbose #4948 > >
00:03:12 verbose #4949 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:12 verbose #4950 > > inl value_task_as_task (task : value_task) : task () =
00:03:12 verbose #4951 > >     $'!task.AsTask' ()
00:03:13 verbose #4952 > >
00:03:13 verbose #4953 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:13 verbose #4954 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:13 verbose #4955 > > │ ### await_value_task_unit                                                    │
00:03:13 verbose #4956 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:13 verbose #4957 > >
00:03:13 verbose #4958 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:13 verbose #4959 > > inl await_value_task_unit (task : value_task) : async () =
00:03:13 verbose #4960 > >     task |> value_task_as_task |> await_task
00:03:13 verbose #4961 > >
00:03:13 verbose #4962 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:13 verbose #4963 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:13 verbose #4964 > > │ ## main                                                                      │
00:03:13 verbose #4965 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:13 verbose #4966 > >
00:03:13 verbose #4967 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:13 verbose #4968 > > inl main () =
00:03:13 verbose #4969 > >     $'let merge_cancellation_token_with_default_async x =
00:03:13 verbose #4970 > > !merge_cancellation_token_with_default_async x' : ()
00:03:13 verbose #4971 > 00:00:12 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 48175 }
00:03:13 verbose #4972 > 00:00:12   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:03:13 verbose #4973 >     "nbconvert",
00:03:13 verbose #4974 >     "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb",
00:03:13 verbose #4975 >     "--to",
00:03:13 verbose #4976 >     "html",
00:03:13 verbose #4977 >     "--HTMLExporter.theme=dark",
00:03:13 verbose #4978 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:03:14 verbose #4979 > 00:00:12 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb to html
00:03:14 verbose #4980 > 00:00:12 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:03:14 verbose #4981 > 00:00:12 verbose #7 !   validate(nb)
00:03:14 verbose #4982 > 00:00:13 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:03:14 verbose #4983 > 00:00:13 verbose #9 !   return _pygments_highlight(
00:03:15 verbose #4984 > 00:00:13 verbose #10 ! [NbConvertApp] Writing 404407 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/async.dib.html
00:03:15 verbose #4985 > 00:00:13 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 894 }
00:03:15 verbose #4986 > 00:00:13   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 894 }
00:03:15 verbose #4987 > 00:00:13   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:03:15 verbose #4988 >     "-c",
00:03:15 verbose #4989 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:03:15 verbose #4990 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:03:15 verbose #4991 > 00:00:13 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:03:15 verbose #4992 > 00:00:13   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:03:15 verbose #4993 > 00:00:13   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 49128 }
00:03:15   debug #4994 runtime.execute_with_options_async / { exit_code = 0; output_length = 53659 }
00:03:15   debug #7 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path async.dib --retries 3
00:03:15   debug #4995 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:03:15 verbose #4996 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "runtime.dib", "--retries", "3"])) }
00:03:15 verbose #4997 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:03:15 verbose #4998 >     "repl",
00:03:15 verbose #4999 >     "--exit-after-run",
00:03:15 verbose #5000 >     "--run",
00:03:15 verbose #5001 >     "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib",
00:03:15 verbose #5002 >     "--output-path",
00:03:15 verbose #5003 >     "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb",
00:03:15 verbose #5004 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:03:17 verbose #5005 > >
00:03:17 verbose #5006 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:17 verbose #5007 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:17 verbose #5008 > > │ # runtime                                                                    │
00:03:17 verbose #5009 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:19 verbose #5010 > >
00:03:19 verbose #5011 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:19 verbose #5012 > > open rust
00:03:19 verbose #5013 > > open rust_operators
00:03:19 verbose #5014 > > open sm'_operators
00:03:20 verbose #5015 > >
00:03:20 verbose #5016 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:20 verbose #5017 > > //// test
00:03:20 verbose #5018 > >
00:03:20 verbose #5019 > > open testing
00:03:20 verbose #5020 > > open file_system_operators
00:03:20 verbose #5021 > >
00:03:20 verbose #5022 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:20 verbose #5023 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:20 verbose #5024 > > │ ## runtime                                                                   │
00:03:20 verbose #5025 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:20 verbose #5026 > >
00:03:20 verbose #5027 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:20 verbose #5028 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:20 verbose #5029 > > │ ### split_args                                                               │
00:03:20 verbose #5030 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:20 verbose #5031 > >
00:03:20 verbose #5032 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:20 verbose #5033 > > let split_args (args : string) : result (array_base string) string =
00:03:20 verbose #5034 > >     open parsing
00:03:20 verbose #5035 > >     inl esc = [[ '\\'; '`' ]]
00:03:20 verbose #5036 > >     inl quotes = [[ '"' ]]
00:03:20 verbose #5037 > >     inl special = esc ++ quotes
00:03:20 verbose #5038 > >     inl p_esc_char c =
00:03:20 verbose #5039 > >         p_char c >>. any_char () |>> fun c' => $'$"{!c}{!c'}"'
00:03:20 verbose #5040 > >     inl p_word = special |> none_of |>> sm'.obj_to_string
00:03:20 verbose #5041 > >     inl p_plain = special ++ [[ ' ' ]] |> none_of |> many1_chars
00:03:20 verbose #5042 > >     inl p_text = p_word |> many1_strings
00:03:20 verbose #5043 > >     inl p_esc = esc |> listm.map p_esc_char |> choice
00:03:20 verbose #5044 > >     inl p_quoted = (p_word <|> p_esc) |> many |>> sm'.concat_list ""
00:03:20 verbose #5045 > >     inl p_quoted_all = p_quoted |> between (p_char '"') (p_char '"')
00:03:20 verbose #5046 > >     inl p_esc_root = p_esc >>% "" >>. (p_word |> many) |>> sm'.concat_list ""
00:03:20 verbose #5047 > >     inl p_content = p_plain <|> p_quoted_all <|> p_esc_root
00:03:20 verbose #5048 > >     inl p_args = spaces1 () |> sep_by p_content
00:03:20 verbose #5049 > >     args
00:03:20 verbose #5050 > >     |> parse p_args
00:03:20 verbose #5051 > >     |> resultm.map (fst >> listm'.box >> listm'.to_array')
00:03:20 verbose #5052 > >
00:03:20 verbose #5053 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:20 verbose #5054 > > //// test
00:03:20 verbose #5055 > > ///! fsharp
00:03:20 verbose #5056 > > ////! cuda // Only stack allocated primitive types (i8,i16,i32,i64 and
00:03:20 verbose #5057 > > u8,u16,u32,u64 and f32,f64 and bool) are allowed in CuPy arrays.
00:03:20 verbose #5058 > > ///! rust
00:03:20 verbose #5059 > > ///! typescript
00:03:20 verbose #5060 > > ///! python
00:03:20 verbose #5061 > >
00:03:20 verbose #5062 > > [[
00:03:20 verbose #5063 > >     "a b c",
00:03:20 verbose #5064 > >     ;[[ "a"; "b"; "c" ]]
00:03:20 verbose #5065 > >
00:03:20 verbose #5066 > >     "e f \"g h\" i",
00:03:20 verbose #5067 > >     ;[[ "e"; "f"; "g h"; "i" ]]
00:03:20 verbose #5068 > >
00:03:20 verbose #5069 > >     "\"j k\" \"l\" \"m\"",
00:03:20 verbose #5070 > >     ;[[ "j k"; "l"; "m" ]]
00:03:20 verbose #5071 > >
00:03:20 verbose #5072 > >     "s -t \"u \`\"v\`\" w\"",
00:03:20 verbose #5073 > >     ;[[ "s"; "-t"; "u \`\"v\`\" w" ]]
00:03:20 verbose #5074 > >
00:03:20 verbose #5075 > >     "n -o \"p \\\"q\\\" r\"",
00:03:20 verbose #5076 > >     ;[[ "n"; "-o"; "p \\\"q\\\" r" ]]
00:03:20 verbose #5077 > >
00:03:20 verbose #5078 > >     "r -s \"t \\\"u\\\"\"",
00:03:20 verbose #5079 > >     ;[[ "r"; "-s"; "t \\\"u\\\"" ]]
00:03:20 verbose #5080 > >
00:03:20 verbose #5081 > >     $'$"x -y \\\"$z -a \'(b=\\\\\\"c-id=)[[a-fA-F0-9]]{{8}}\', {{ \`$_[[1]] +
00:03:20 verbose #5082 > > \`$d++ }}\\\""',
00:03:20 verbose #5083 > >     ;[[ "x"; "-y"; "$z -a '(b=\\\"c-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$d++ }"
00:03:20 verbose #5084 > > ]]
00:03:20 verbose #5085 > >
00:03:20 verbose #5086 > >     "e -f \"$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }\"",
00:03:20 verbose #5087 > >     ;[[ "e"; "-f"; "$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }"
00:03:20 verbose #5088 > > ]]
00:03:20 verbose #5089 > >
00:03:20 verbose #5090 > >     $'$"--l \\\\\\"\'\'\' m \'\'\'\\\\\\" "',
00:03:20 verbose #5091 > >     ;[[ "--l"; "''' m '''" ]]
00:03:20 verbose #5092 > >
00:03:20 verbose #5093 > >     $'$"n --o --p q --r \\\"s:/t u/v.w\\\" --x \\\"y:/z.a\\\" --b c.d
00:03:20 verbose #5094 > > \\\"\\\\e{{f-g}}\\\" h.i \\\"j (k)\\\""',
00:03:20 verbose #5095 > >     ;[[ "n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; "y:/z.a"; "--b";
00:03:20 verbose #5096 > > "c.d"; "\\e{f-g}"; "h.i"; "j (k)" ]]
00:03:20 verbose #5097 > >
00:03:20 verbose #5098 > >     $'\@$"l ""m n:\\o.p"""',
00:03:20 verbose #5099 > >     ;[[ "l"; "m n:\\o.p" ]]
00:03:20 verbose #5100 > > ]]
00:03:20 verbose #5101 > > |> _assert_fn split_args
00:03:39 verbose #5102 > >
00:03:39 verbose #5103 > > ╭─[ 18.71s - return value ]────────────────────────────────────────────────────╮
00:03:39 verbose #5104 > > │                                                                              │
00:03:39 verbose #5105 > > │ .rs output:                                                                  │
00:03:39 verbose #5106 > > │                                                                              │
00:03:39 verbose #5107 > > │ 00:00:00 verbose #1 _assert_fn / { input = a b c }                     │
00:03:39 verbose #5108 > > │ __assert_eq' / actual: Array(MutCell(["a", "b", "c"])) / expected:           │
00:03:39 verbose #5109 > > │ Array(MutCell(["a", "b", "c"]))                                              │
00:03:39 verbose #5110 > > │                                                                              │
00:03:39 verbose #5111 > > │ 00:00:00 verbose #2 _assert_fn / { input = e f "g h" i }               │
00:03:39 verbose #5112 > > │ __assert_eq' / actual: Array(MutCell(["e", "f", "g h", "i"])) / expected:    │
00:03:39 verbose #5113 > > │ Array(MutCell(["e", "f", "g h", "i"]))                                       │
00:03:39 verbose #5114 > > │                                                                              │
00:03:39 verbose #5115 > > │ 00:00:00 verbose #3 _assert_fn / { input = "j k" "l" "m" }             │
00:03:39 verbose #5116 > > │ __assert_eq' / actual: Array(MutCell(["j k", "l", "m"])) / expected:         │
00:03:39 verbose #5117 > > │ Array(MutCell(["j k", "l", "m"]))                                            │
00:03:39 verbose #5118 > > │                                                                              │
00:03:39 verbose #5119 > > │ 00:00:00 verbose #4 _assert_fn / { input = s -t "u `"v`" w" }          │
00:03:39 verbose #5120 > > │ __assert_eq' / actual: Array(MutCell(["s", "-t", "u `"v`" w"])) / expected:  │
00:03:39 verbose #5121 > > │ Array(MutCell(["s", "-t", "u `"v`" w"]))                                     │
00:03:39 verbose #5122 > > │                                                                              │
00:03:39 verbose #5123 > > │ 00:00:00 verbose #5 _assert_fn / { input = n -o "p \"q\" r" }          │
00:03:39 verbose #5124 > > │ __assert_eq' / actual: Array(MutCell(["n", "-o", "p \"q\" r"])) / expected:  │
00:03:39 verbose #5125 > > │ Array(MutCell(["n", "-o", "p \"q\" r"]))                                     │
00:03:39 verbose #5126 > > │                                                                              │
00:03:39 verbose #5127 > > │ 00:00:00 verbose #6 _assert_fn / { input = r -s "t \"u\"" }            │
00:03:39 verbose #5128 > > │ __assert_eq' / actual: Array(MutCell(["r", "-s", "t \"u\""])) / expected:    │
00:03:39 verbose #5129 > > │ Array(MutCell(["r", "-s", "t \"u\""]))                                       │
00:03:39 verbose #5130 > > │                                                                              │
00:03:39 verbose #5131 > > │ 00:00:00 verbose #7 _assert_fn / { input = x -y "$z -a '(b=\"c-id=)[   │
00:03:39 verbose #5132 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }" }                                        │
00:03:39 verbose #5133 > > │ __assert_eq' / actual: Array(MutCell(["x", "-y", "$z -a '(b=\"c-id=)[        │
00:03:39 verbose #5134 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }"])) / expected: Array(MutCell(["x", "-y", │
00:03:39 verbose #5135 > > │ "$z -a '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }"]))                   │
00:03:39 verbose #5136 > > │                                                                              │
00:03:39 verbose #5137 > > │ 00:00:00 verbose #8 _assert_fn / { input = e -f "$g -h '(i=`"j-id=)[   │
00:03:39 verbose #5138 > > │ a-fA-F...__assert_eq' / actual: ['n', '-o', 'p \\"q\\" r'] / expected: ['n', │
00:03:39 verbose #5139 > > │ '-o', 'p \\"q\\" r']                                                         │
00:03:39 verbose #5140 > > │                                                                              │
00:03:39 verbose #5141 > > │ 00:00:00 verbose #6 _assert_fn / { input = r -s "t \"u\"" }             │
00:03:39 verbose #5142 > > │ __assert_eq' / actual: ['r', '-s', 't \\"u\\"'] / expected: ['r', '-s', 't   │
00:03:39 verbose #5143 > > │ \\"u\\"']                                                                    │
00:03:39 verbose #5144 > > │                                                                              │
00:03:39 verbose #5145 > > │ 00:00:00 verbose #7 _assert_fn / { input = x -y "$z -a '(b=\"c-id=)[    │
00:03:39 verbose #5146 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }" }                                        │
00:03:39 verbose #5147 > > │ __assert_eq' / actual: ['x', '-y', '$z -a \'(b=\\"c-id=)[a-fA-F0-9]{8}\', {  │
00:03:39 verbose #5148 > > │ `$_[1] + `$d++ }'] / expected: ['x', '-y', '$z -a \'(b=\\"c-id=)[            │
00:03:39 verbose #5149 > > │ a-fA-F0-9]{8}\', { `$_[1] + `$d++ }']                                        │
00:03:39 verbose #5150 > > │                                                                              │
00:03:39 verbose #5151 > > │ 00:00:00 verbose #8 _assert_fn / { input = e -f "$g -h '(i=`"j-id=)[    │
00:03:39 verbose #5152 > > │ a-fA-F0-9]{8}', { `$_[1] + `$k++ }" }                                        │
00:03:39 verbose #5153 > > │ __assert_eq' / actual: ['e', '-f', '$g -h \'(i=`"j-id=)[a-fA-F0-9]{8}\', {   │
00:03:39 verbose #5154 > > │ `$_[1] + `$k++ }'] / expected: ['e', '-f', '$g -h \'(i=`"j-id=)[             │
00:03:39 verbose #5155 > > │ a-fA-F0-9]{8}\', { `$_[1] + `$k++ }']                                        │
00:03:39 verbose #5156 > > │                                                                              │
00:03:39 verbose #5157 > > │ 00:00:00 verbose #9 _assert_fn / { input = --l \"''' m '''\"  }         │
00:03:39 verbose #5158 > > │ __assert_eq' / actual: ['--l', "''' m '''"] / expected: ['--l', "''' m '''"] │
00:03:39 verbose #5159 > > │                                                                              │
00:03:39 verbose #5160 > > │ 00:00:00 verbose #10 _assert_fn / { input = n --o --p q --r "s:/t       │
00:03:39 verbose #5161 > > │ u/v.w" --x "y:/z.a" --b c.d "\e{f-g}" h.i "j (k)" }                          │
00:03:39 verbose #5162 > > │ __assert_eq' / actual: ['n', '--o', '--p', 'q', '--r', 's:/t u/v.w', '--x',  │
00:03:39 verbose #5163 > > │ 'y:/z.a', '--b', 'c.d', '\\e{f-g}', 'h.i', 'j (k)'] / expected: ['n', '--o', │
00:03:39 verbose #5164 > > │ '--p', 'q', '--r', 's:/t u/v.w', '--x', 'y:/z.a', '--b', 'c.d', '\\e{f-g}',  │
00:03:39 verbose #5165 > > │ 'h.i', 'j (k)']                                                              │
00:03:39 verbose #5166 > > │                                                                              │
00:03:39 verbose #5167 > > │ 00:00:00 verbose #11 _assert_fn / { input = l "m n:\o.p" }              │
00:03:39 verbose #5168 > > │ __assert_eq' / actual: ['l', 'm n:\\o.p'] / expected: ['l', 'm n:\\o.p']     │
00:03:39 verbose #5169 > > │                                                                              │
00:03:39 verbose #5170 > > │                                                                              │
00:03:39 verbose #5171 > > │                                                                              │
00:03:39 verbose #5172 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:39 verbose #5173 > >
00:03:39 verbose #5174 > > ╭─[ 18.72s - stdout ]──────────────────────────────────────────────────────────╮
00:03:39 verbose #5175 > > │ .fsx output:                                                                 │
00:03:39 verbose #5176 > > │                                                                              │
00:03:39 verbose #5177 > > │ 00:00:00 verbose #1 _assert_fn / { input = a b c }                      │
00:03:39 verbose #5178 > > │ __assert_eq' / actual: [|"a"; "b"; "c"|] / expected: [|"a"; "b"; "c"|]       │
00:03:39 verbose #5179 > > │                                                                              │
00:03:39 verbose #5180 > > │ 00:00:00 verbose #2 _assert_fn / { input = e f "g h" i }                │
00:03:39 verbose #5181 > > │ __assert_eq' / actual: [|"e"; "f"; "g h"; "i"|] / expected: [|"e"; "f"; "g   │
00:03:39 verbose #5182 > > │ h"; "i"|]                                                                    │
00:03:39 verbose #5183 > > │                                                                              │
00:03:39 verbose #5184 > > │ 00:00:00 verbose #3 _assert_fn / { input = "j k" "l" "m" }              │
00:03:39 verbose #5185 > > │ __assert_eq' / actual: [|"j k"; "l"; "m"|] / expected: [|"j k"; "l"; "m"|]   │
00:03:39 verbose #5186 > > │                                                                              │
00:03:39 verbose #5187 > > │ 00:00:00 verbose #4 _assert_fn / { input = s -t "u `"v`" w" }           │
00:03:39 verbose #5188 > > │ __assert_eq' / actual: [|"s"; "-t"; "u `"v`" w"|] / expected: [|"s"; "-t";   │
00:03:39 verbose #5189 > > │ "u `"v`" w"|]                                                                │
00:03:39 verbose #5190 > > │                                                                              │
00:03:39 verbose #5191 > > │ 00:00:00 verbose #5 _assert_fn / { input = n -o "p \"q\" r" }           │
00:03:39 verbose #5192 > > │ __assert_eq' / actual: [|"n"; "-o"; "p \"q\" r"|] / expected: [|"n"; "-o";   │
00:03:39 verbose #5193 > > │ "p \"q\" r"|]                                                                │
00:03:39 verbose #5194 > > │                                                                              │
00:03:39 verbose #5195 > > │ 00:00:00 verbose #6 _assert_fn / { input = r -s "t \"u\"" }             │
00:03:39 verbose #5196 > > │ __assert_eq' / actual: [|"r"; "-s"; "t \"u\""|] / expected: [|"r"; "-s"; "t  │
00:03:39 verbose #5197 > > │ \"u\""|]                                                                     │
00:03:39 verbose #5198 > > │                                                                              │
00:03:39 verbose #5199 > > │ 00:00:00 verbose #7 _assert_fn / { input = x -y "$z -a '(b=\"c-id=)[    │
00:03:39 verbose #5200 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }" }                                        │
00:03:39 verbose #5201 > > │ __assert_eq' / actual: [|"x"; "-y"; "$z -a '(b=\"c-id=)[a-fA-F0-9]{8}', {    │
00:03:39 verbose #5202 > > │ `$_[1] + `$d++ }"|] / expected: [|"x"; "-y"; "$z -a '(b=\"c-id=)[            │
00:03:39 verbose #5203 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }"|]                                        │
00:03:39 verbose #5204 > > │                                                                              │
00:03:39 verbose #5205 > > │ 00:00:00 verbose #8 _assert_fn / { input = e -f "$g -h '(i=`"j-id=)[    │
00:03:39 verbose #5206 > > │ a-fA-F0-9]{8}', { `$_[1] + `$k++ }" }                                        │
00:03:39 verbose #5207 > > │ __assert_eq' / actual: [|"e"; "-f"; "$g -h '(i=`"j-id=)[a-fA-F0-9]{8}', {    │
00:03:39 verbose #5208 > > │ `$_[1] + `$k++ }"|] / expected: [|"e"; "-f"; "$g -h '(i=`"j-id=)[            │
00:03:39 verbose #5209 > > │ a-fA-F0-9]{8}', { `$_[1] + `$k++ }"|]                                        │
00:03:39 verbose #5210 > > │                                                                              │
00:03:39 verbose #5211 > > │ 00:00:00 verbose #9 _assert_fn / { input = --l \"''' m '''\"  }         │
00:03:39 verbose #5212 > > │ __assert_eq' / actual: [|"--l"; "''' m '''"|] / expected: [|"--l"; "''' m    │
00:03:39 verbose #5213 > > │ '''"|]                                                                       │
00:03:39 verbose #5214 > > │                                                                              │
00:03:39 verbose #5215 > > │ 00:00:00 verbose #10 _assert_fn / { input = n --o --p q --r "s:/t       │
00:03:39 verbose #5216 > > │ u/v.w" --x "y:/z.a" --b c.d "\e{f-g}" h.i "j (k)" }                          │
00:03:39 verbose #5217 > > │ __assert_eq' / actual: [|"n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; │
00:03:39 verbose #5218 > > │ "y:/z.a"; "--b"; "c.d";                                                      │
00:03:39 verbose #5219 > > │   "\e{f-g}"; "h.i"; "j (k)"|] / expected: [|"n"; "--o"; "--p"; "q"; "--r";   │
00:03:39 verbose #5220 > > │ "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; "c.d";                                 │
00:03:39 verbose #5221 > > │   "\e{f-g}"; "h.i"; "j (k)"|]                                                │
00:03:39 verbose #5222 > > │                                                                              │
00:03:39 verbose #5223 > > │ 00:00:00 verbose #11 _assert_fn / { input = l "m n:\o.p" }              │
00:03:39 verbose #5224 > > │ __assert_eq' / actual: [|"l"; "m n:\o.p"|] / expected: [|"l"; "m n:\o.p"|]   │
00:03:39 verbose #5225 > > │                                                                              │
00:03:39 verbose #5226 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:39 verbose #5227 > >
00:03:39 verbose #5228 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:39 verbose #5229 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:39 verbose #5230 > > │ ### split_command                                                            │
00:03:39 verbose #5231 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:39 verbose #5232 > >
00:03:39 verbose #5233 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:39 verbose #5234 > > let split_command (command : string) : result (string * option string) string =
00:03:39 verbose #5235 > >     open parsing
00:03:39 verbose #5236 > >     inl quotes = [[ '"'; '\'' ]]
00:03:39 verbose #5237 > >     inl p_quoted_char = quotes |> listm.map p_char |> choice
00:03:39 verbose #5238 > >     inl normalize = function '\\' => '/' | c => c
00:03:39 verbose #5239 > >     inl p_quoted = quotes |> none_of |>> normalize |> many_chars |> between
00:03:39 verbose #5240 > > p_quoted_char p_quoted_char
00:03:39 verbose #5241 > >     inl p_unquoted = quotes ++ [[ ' ' ]] |> none_of |>> normalize |> many1_chars
00:03:39 verbose #5242 > >     inl p_path = p_quoted <|> p_unquoted <|> eof () >>% "" .>> spaces ()
00:03:39 verbose #5243 > >     inl p_args = p_char ' ' |> opt >>. (any_char () |> many1_chars)
00:03:39 verbose #5244 > >     inl p_command = p_path .>>. (p_args |> opt)
00:03:39 verbose #5245 > >     command
00:03:39 verbose #5246 > >     |> parse p_command
00:03:39 verbose #5247 > >     |> resultm.map fst
00:03:39 verbose #5248 > >
00:03:39 verbose #5249 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:39 verbose #5250 > > //// test
00:03:39 verbose #5251 > > ///! fsharp
00:03:39 verbose #5252 > > ////! cuda // Only stack allocated primitive types (i8,i16,i32,i64 and
00:03:39 verbose #5253 > > u8,u16,u32,u64 and f32,f64 and bool) are allowed in CuPy arrays.
00:03:39 verbose #5254 > > ///! rust
00:03:39 verbose #5255 > > ///! typescript
00:03:39 verbose #5256 > > ///! python
00:03:39 verbose #5257 > >
00:03:39 verbose #5258 > > [[
00:03:39 verbose #5259 > >     "",
00:03:39 verbose #5260 > >     ("", None)
00:03:39 verbose #5261 > >
00:03:39 verbose #5262 > >     "/a/b/c",
00:03:39 verbose #5263 > >     ("/a/b/c", None)
00:03:39 verbose #5264 > >
00:03:39 verbose #5265 > >     "d e.f",
00:03:39 verbose #5266 > >     ("d", Some "e.f")
00:03:39 verbose #5267 > >
00:03:39 verbose #5268 > >     $'"""..\\..\\g.h i.j k.l"""',
00:03:39 verbose #5269 > >     ("../../g.h", Some "i.j k.l")
00:03:39 verbose #5270 > >
00:03:39 verbose #5271 > >     $'\@"m:\\n\\o.p ""q.r s.t"""',
00:03:39 verbose #5272 > >     ("m:/n/o.p", Some $'\@"""q.r s.t"""')
00:03:39 verbose #5273 > >
00:03:39 verbose #5274 > >     $'\@"""..\\..\\u v\\w.x"" ""y z.a"" b.c"',
00:03:39 verbose #5275 > >     ("../../u v/w.x", Some $'\@"""y z.a"" b.c"')
00:03:39 verbose #5276 > >
00:03:39 verbose #5277 > >     $'\@"""..\\..\\d e.f"" -g \\\\""h i\\\\"""',
00:03:39 verbose #5278 > >     ("../../d e.f", Some $'\@"-g \\\\""h i\\\\"""')
00:03:39 verbose #5279 > >
00:03:39 verbose #5280 > >     $'\@"..\\..\\j k.l -m \\\\""n o\\\\"""',
00:03:39 verbose #5281 > >     ("../../j", Some $'\@"k.l -m \\\\""n o\\\\"""')
00:03:39 verbose #5282 > > ]]
00:03:39 verbose #5283 > > |> _assert_fn split_command
00:03:58 verbose #5284 > >
00:03:58 verbose #5285 > > ╭─[ 19.17s - return value ]────────────────────────────────────────────────────╮
00:03:58 verbose #5286 > > │                                                                              │
00:03:58 verbose #5287 > > │ .rs output:                                                                  │
00:03:58 verbose #5288 > > │                                                                              │
00:03:58 verbose #5289 > > │ 00:00:00 verbose #1 _assert_fn / { input =  }                          │
00:03:58 verbose #5290 > > │ __assert_eq' / actual: ("", US1_1) / expected: ("", US1_1)                   │
00:03:58 verbose #5291 > > │                                                                              │
00:03:58 verbose #5292 > > │ 00:00:00 verbose #2 _assert_fn / { input = /a/b/c }                    │
00:03:58 verbose #5293 > > │ __assert_eq' / actual: ("/a/b/c", US1_1) / expected: ("/a/b/c", US1_1)       │
00:03:58 verbose #5294 > > │                                                                              │
00:03:58 verbose #5295 > > │ 00:00:00 verbose #3 _assert_fn / { input = d e.f }                     │
00:03:58 verbose #5296 > > │ __assert_eq' / actual: ("d", US1_0("e.f")) / expected: ("d", US1_0("e.f"))   │
00:03:58 verbose #5297 > > │                                                                              │
00:03:58 verbose #5298 > > │ 00:00:00 verbose #4 _assert_fn / { input = ..\..\g.h i.j k.l }         │
00:03:58 verbose #5299 > > │ __assert_eq' / actual: ("../../g.h", US1_0("i.j k.l")) / expected:           │
00:03:58 verbose #5300 > > │ ("../../g.h", US1_0("i.j k.l"))                                              │
00:03:58 verbose #5301 > > │                                                                              │
00:03:58 verbose #5302 > > │ 00:00:00 verbose #5 _assert_fn / { input = m:\n\o.p "q.r s.t" }        │
00:03:58 verbose #5303 > > │ __assert_eq' / actual: ("m:/n/o.p", US1_0(""q.r s.t"")) / expected:          │
00:03:58 verbose #5304 > > │ ("m:/n/o.p", US1_0(""q.r s.t""))                                             │
00:03:58 verbose #5305 > > │                                                                              │
00:03:58 verbose #5306 > > │ 00:00:00 verbose #6 _assert_fn / { input = "..\..\u v\w.x" "y z.a" b.c │
00:03:58 verbose #5307 > > │ }                                                                            │
00:03:58 verbose #5308 > > │ __assert_eq' / actual: ("../../u v/w.x", US1_0(""y z.a" b.c")) / expected:   │
00:03:58 verbose #5309 > > │ ("../../u v/w.x", US1_0(""y z.a" b.c"))                                      │
00:03:58 verbose #5310 > > │                                                                              │
00:03:58 verbose #5311 > > │ 00:00:00 verbose #7 _assert_fn / { input = "..\..\d e.f" -g \\"h i\\"  │
00:03:58 verbose #5312 > > │ }                                                                            │
00:03:58 verbose #5313 > > │ __assert_eq' / actual: ("../../d e.f", US1_0("-g \\"h i\\"")) / expected:    │
00:03:58 verbose #5314 > > │ ("../../d e.f", US1_0("-g \\"h i\\""))                                       │
00:03:58 verbose #5315 > > │                                                                              │
00:03:58 verbose #5316 > > │ 00:00:00 verbose #8 _assert_fn / { input = ..\..\j k.l -m \\"n o\\" }  │
00:03:58 verbose #5317 > > │ __assert_eq' / actual: ("../../j", US1_0("k.l -m \\"n o\\"")) / expected:    │
00:03:58 verbose #5318 > > │ ("../../j", US1_0("k.l -m \\"n o\\""))                                       │
00:03:58 verbose #5319 > > │                                                                              │
00:03:58 verbose #5320 > > │                                                                              │
00:03:58 verbose #5321 > > │ .ts output:                                                                  │
00:03:58 verbose #5322 > > │                                                                              │
00:03:58 verbose #5323 > > │ 00:00:00 verbose #1 _assert_fn / { input =  }                           │
00:03:58 verbose #5324 > > │ __assert_eq' / actual: ,US1_1 / expected: ,US1_1                             │
00:03:58 verbose #5325 > > │                                                                              │
00:03:58 verbose #5326 > > │ 00:00:00 verbose #2 _assert_fn /... #8 _assert_fn / { input = ..\..\j │
00:03:58 verbose #5327 > > │ k.l -m \\"n o\\" }                                                           │
00:03:58 verbose #5328 > > │ __assert_eq' / actual: ../../j,US1_0 (k.l -m \\"n o\\") / expected:          │
00:03:58 verbose #5329 > > │ ../../j,US1_0 (k.l -m \\"n o\\")                                             │
00:03:58 verbose #5330 > > │                                                                              │
00:03:58 verbose #5331 > > │                                                                              │
00:03:58 verbose #5332 > > │ .py output:                                                                  │
00:03:58 verbose #5333 > > │                                                                              │
00:03:58 verbose #5334 > > │ 00:00:00 verbose #1 _assert_fn / { input =  }                           │
00:03:58 verbose #5335 > > │ __assert_eq' / actual: ('', US1_1) / expected: ('', US1_1)                   │
00:03:58 verbose #5336 > > │                                                                              │
00:03:58 verbose #5337 > > │ 00:00:00 verbose #2 _assert_fn / { input = /a/b/c }                     │
00:03:58 verbose #5338 > > │ __assert_eq' / actual: ('/a/b/c', US1_1) / expected: ('/a/b/c', US1_1)       │
00:03:58 verbose #5339 > > │                                                                              │
00:03:58 verbose #5340 > > │ 00:00:00 verbose #3 _assert_fn / { input = d e.f }                      │
00:03:58 verbose #5341 > > │ __assert_eq' / actual: ('d', US1_0 "e.f") / expected: ('d', US1_0 "e.f")     │
00:03:58 verbose #5342 > > │                                                                              │
00:03:58 verbose #5343 > > │ 00:00:00 verbose #4 _assert_fn / { input = ..\..\g.h i.j k.l }          │
00:03:58 verbose #5344 > > │ __assert_eq' / actual: ('../../g.h', US1_0 ("i.j k.l")) / expected:          │
00:03:58 verbose #5345 > > │ ('../../g.h', US1_0 ("i.j k.l"))                                             │
00:03:58 verbose #5346 > > │                                                                              │
00:03:58 verbose #5347 > > │ 00:00:00 verbose #5 _assert_fn / { input = m:\n\o.p "q.r s.t" }         │
00:03:58 verbose #5348 > > │ __assert_eq' / actual: ('m:/n/o.p', US1_0 (""q.r s.t"")) / expected:         │
00:03:58 verbose #5349 > > │ ('m:/n/o.p', US1_0 (""q.r s.t""))                                            │
00:03:58 verbose #5350 > > │                                                                              │
00:03:58 verbose #5351 > > │ 00:00:00 verbose #6 _assert_fn / { input = "..\..\u v\w.x" "y z.a" b.c  │
00:03:58 verbose #5352 > > │ }                                                                            │
00:03:58 verbose #5353 > > │ __assert_eq' / actual: ('../../u v/w.x', US1_0 (""y z.a" b.c")) / expected:  │
00:03:58 verbose #5354 > > │ ('../../u v/w.x', US1_0 (""y z.a" b.c"))                                     │
00:03:58 verbose #5355 > > │                                                                              │
00:03:58 verbose #5356 > > │ 00:00:00 verbose #7 _assert_fn / { input = "..\..\d e.f" -g \\"h i\\" } │
00:03:58 verbose #5357 > > │ __assert_eq' / actual: ('../../d e.f', US1_0 ("-g \\"h i\\"")) / expected:   │
00:03:58 verbose #5358 > > │ ('../../d e.f', US1_0 ("-g \\"h i\\""))                                      │
00:03:58 verbose #5359 > > │                                                                              │
00:03:58 verbose #5360 > > │ 00:00:00 verbose #8 _assert_fn / { input = ..\..\j k.l -m \\"n o\\" }   │
00:03:58 verbose #5361 > > │ __assert_eq' / actual: ('../../j', US1_0 ("k.l -m \\"n o\\"")) / expected:   │
00:03:58 verbose #5362 > > │ ('../../j', US1_0 ("k.l -m \\"n o\\""))                                      │
00:03:58 verbose #5363 > > │                                                                              │
00:03:58 verbose #5364 > > │                                                                              │
00:03:58 verbose #5365 > > │                                                                              │
00:03:58 verbose #5366 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:58 verbose #5367 > >
00:03:58 verbose #5368 > > ╭─[ 19.17s - stdout ]──────────────────────────────────────────────────────────╮
00:03:58 verbose #5369 > > │ .fsx output:                                                                 │
00:03:58 verbose #5370 > > │                                                                              │
00:03:58 verbose #5371 > > │ 00:00:00 verbose #1 _assert_fn / { input =  }                           │
00:03:58 verbose #5372 > > │ __assert_eq' / actual: struct ("", US1_1) / expected: struct ("", US1_1)     │
00:03:58 verbose #5373 > > │                                                                              │
00:03:58 verbose #5374 > > │ 00:00:00 verbose #2 _assert_fn / { input = /a/b/c }                     │
00:03:58 verbose #5375 > > │ __assert_eq' / actual: struct ("/a/b/c", US1_1) / expected: struct           │
00:03:58 verbose #5376 > > │ ("/a/b/c", US1_1)                                                            │
00:03:58 verbose #5377 > > │                                                                              │
00:03:58 verbose #5378 > > │ 00:00:00 verbose #3 _assert_fn / { input = d e.f }                      │
00:03:58 verbose #5379 > > │ __assert_eq' / actual: struct ("d", US1_0 "e.f") / expected: struct ("d",    │
00:03:58 verbose #5380 > > │ US1_0 "e.f")                                                                 │
00:03:58 verbose #5381 > > │                                                                              │
00:03:58 verbose #5382 > > │ 00:00:00 verbose #4 _assert_fn / { input = ..\..\g.h i.j k.l }          │
00:03:58 verbose #5383 > > │ __assert_eq' / actual: struct ("../../g.h", US1_0 "i.j k.l") / expected:     │
00:03:58 verbose #5384 > > │ struct ("../../g.h", US1_0 "i.j k.l")                                        │
00:03:58 verbose #5385 > > │                                                                              │
00:03:58 verbose #5386 > > │ 00:00:00 verbose #5 _assert_fn / { input = m:\n\o.p "q.r s.t" }         │
00:03:58 verbose #5387 > > │ __assert_eq' / actual: struct ("m:/n/o.p", US1_0 ""q.r s.t"") / expected:    │
00:03:58 verbose #5388 > > │ struct ("m:/n/o.p", US1_0 ""q.r s.t"")                                       │
00:03:58 verbose #5389 > > │                                                                              │
00:03:58 verbose #5390 > > │ 00:00:00 verbose #6 _assert_fn / { input = "..\..\u v\w.x" "y z.a" b.c  │
00:03:58 verbose #5391 > > │ }                                                                            │
00:03:58 verbose #5392 > > │ __assert_eq' / actual: struct ("../../u v/w.x", US1_0 ""y z.a" b.c") /       │
00:03:58 verbose #5393 > > │ expected: struct ("../../u v/w.x", US1_0 ""y z.a" b.c")                      │
00:03:58 verbose #5394 > > │                                                                              │
00:03:58 verbose #5395 > > │ 00:00:00 verbose #7 _assert_fn / { input = "..\..\d e.f" -g \\"h i\\" } │
00:03:58 verbose #5396 > > │ __assert_eq' / actual: struct ("../../d e.f", US1_0 "-g \\"h i\\"") /        │
00:03:58 verbose #5397 > > │ expected: struct ("../../d e.f", US1_0 "-g \\"h i\\"")                       │
00:03:58 verbose #5398 > > │                                                                              │
00:03:58 verbose #5399 > > │ 00:00:00 verbose #8 _assert_fn / { input = ..\..\j k.l -m \\"n o\\" }   │
00:03:58 verbose #5400 > > │ __assert_eq' / actual: struct ("../../j", US1_0 "k.l -m \\"n o\\"") /        │
00:03:58 verbose #5401 > > │ expected: struct ("../../j", US1_0 "k.l -m \\"n o\\"")                       │
00:03:58 verbose #5402 > > │                                                                              │
00:03:58 verbose #5403 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:58 verbose #5404 > >
00:03:58 verbose #5405 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:58 verbose #5406 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:58 verbose #5407 > > │ ### execution_line                                                           │
00:03:58 verbose #5408 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:58 verbose #5409 > >
00:03:58 verbose #5410 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:58 verbose #5411 > > type execution_line =
00:03:58 verbose #5412 > >     {
00:03:58 verbose #5413 > >         process_id : int
00:03:58 verbose #5414 > >         line : string
00:03:58 verbose #5415 > >         error : bool
00:03:58 verbose #5416 > >     }
00:03:58 verbose #5417 > >
00:03:58 verbose #5418 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:58 verbose #5419 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:58 verbose #5420 > > │ ## rust                                                                      │
00:03:58 verbose #5421 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:58 verbose #5422 > >
00:03:58 verbose #5423 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:58 verbose #5424 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:58 verbose #5425 > > │ ### process_child                                                            │
00:03:58 verbose #5426 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:58 verbose #5427 > >
00:03:58 verbose #5428 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:58 verbose #5429 > > nominal process_child =
00:03:58 verbose #5430 > >     `(
00:03:58 verbose #5431 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:58 verbose #5432 > > Fable.Core.Emit(\"std::process::Child\")>]]\n#endif\ntype std_process_Child =
00:03:58 verbose #5433 > > class end"
00:03:58 verbose #5434 > >         $'' : $'std_process_Child'
00:03:58 verbose #5435 > >     )
00:03:58 verbose #5436 > >
00:03:58 verbose #5437 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:58 verbose #5438 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:58 verbose #5439 > > │ ### process_child_stdin                                                      │
00:03:58 verbose #5440 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:58 verbose #5441 > >
00:03:58 verbose #5442 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:58 verbose #5443 > > nominal process_child_stdin =
00:03:58 verbose #5444 > >     `(
00:03:58 verbose #5445 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:58 verbose #5446 > > Fable.Core.Emit(\"std::process::ChildStdin\")>]]\n#endif\ntype
00:03:58 verbose #5447 > > std_process_ChildStdin = class end"
00:03:58 verbose #5448 > >         $'' : $'std_process_ChildStdin'
00:03:58 verbose #5449 > >     )
00:03:58 verbose #5450 > >
00:03:58 verbose #5451 > > inl process_child_stdin
00:03:58 verbose #5452 > >     (child : rust.ref (rust.mut' process_child))
00:03:58 verbose #5453 > >     : rust.ref (rust.mut' (optionm'.option' process_child_stdin))
00:03:58 verbose #5454 > >     =
00:03:58 verbose #5455 > >     !\\(child, $'"&mut $0.stdin"')
00:03:58 verbose #5456 > >
00:03:58 verbose #5457 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:58 verbose #5458 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:58 verbose #5459 > > │ ## runtime                                                                   │
00:03:58 verbose #5460 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:58 verbose #5461 > >
00:03:58 verbose #5462 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:58 verbose #5463 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:58 verbose #5464 > > │ ### execution_options                                                        │
00:03:58 verbose #5465 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:58 verbose #5466 > >
00:03:58 verbose #5467 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:58 verbose #5468 > > type execution_options =
00:03:58 verbose #5469 > >     {
00:03:58 verbose #5470 > >         command : string
00:03:58 verbose #5471 > >         cancellation_token : optionm'.option' threading.cancellation_token
00:03:58 verbose #5472 > >         environment_variables : array_base (string * string)
00:03:58 verbose #5473 > >         on_line : optionm'.option' (execution_line -> async.async ())
00:03:58 verbose #5474 > >         stdin : optionm'.option' (threading.arc (threading.mutex
00:03:58 verbose #5475 > > process_child_stdin) -> ())
00:03:58 verbose #5476 > >         trace : bool
00:03:58 verbose #5477 > >         working_directory : optionm'.option' string
00:03:58 verbose #5478 > >     }
00:03:58 verbose #5479 > >
00:03:58 verbose #5480 > > inl execution_options (fn : execution_options -> execution_options) :
00:03:58 verbose #5481 > > execution_options =
00:03:58 verbose #5482 > >     {
00:03:58 verbose #5483 > >         command = ""
00:03:58 verbose #5484 > >         cancellation_token = None |> optionm'.box
00:03:58 verbose #5485 > >         environment_variables = ;[[]]
00:03:58 verbose #5486 > >         on_line = None |> optionm'.box
00:03:58 verbose #5487 > >         stdin = None |> optionm'.box
00:03:58 verbose #5488 > >         trace = true
00:03:58 verbose #5489 > >         working_directory = None |> optionm'.box
00:03:58 verbose #5490 > >     }
00:03:58 verbose #5491 > >     |> fn
00:03:58 verbose #5492 > >
00:03:58 verbose #5493 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:58 verbose #5494 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:58 verbose #5495 > > │ ## rust                                                                      │
00:03:58 verbose #5496 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:58 verbose #5497 > >
00:03:58 verbose #5498 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:58 verbose #5499 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:58 verbose #5500 > > │ ### process_child_stderr                                                     │
00:03:58 verbose #5501 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:58 verbose #5502 > >
00:03:58 verbose #5503 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:58 verbose #5504 > > nominal process_child_stderr =
00:03:58 verbose #5505 > >     `(
00:03:58 verbose #5506 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:58 verbose #5507 > > Fable.Core.Emit(\"std::process::ChildStderr\")>]]\n#endif\ntype
00:03:58 verbose #5508 > > std_process_ChildStderr = class end"
00:03:58 verbose #5509 > >         $'' : $'std_process_ChildStderr'
00:03:58 verbose #5510 > >     )
00:03:58 verbose #5511 > >
00:03:58 verbose #5512 > > inl process_child_stderr
00:03:58 verbose #5513 > >     (child : rust.ref (rust.mut' process_child))
00:03:58 verbose #5514 > >     : rust.ref (rust.mut' (optionm'.option' process_child_stderr))
00:03:58 verbose #5515 > >     =
00:03:58 verbose #5516 > >     !\($'"&mut !child.stderr"')
00:03:58 verbose #5517 > >
00:03:58 verbose #5518 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:58 verbose #5519 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:58 verbose #5520 > > │ ### process_child_stdout                                                     │
00:03:58 verbose #5521 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:58 verbose #5522 > >
00:03:58 verbose #5523 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:58 verbose #5524 > > nominal process_child_stdout =
00:03:58 verbose #5525 > >     `(
00:03:58 verbose #5526 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:58 verbose #5527 > > Fable.Core.Emit(\"std::process::ChildStdout\")>]]\n#endif\ntype
00:03:58 verbose #5528 > > std_process_ChildStdout = class end"
00:03:58 verbose #5529 > >         $'' : $'std_process_ChildStdout'
00:03:58 verbose #5530 > >     )
00:03:58 verbose #5531 > >
00:03:58 verbose #5532 > > inl process_child_stdout
00:03:58 verbose #5533 > >     (child : rust.ref (rust.mut' process_child))
00:03:58 verbose #5534 > >     : rust.ref (rust.mut' (optionm'.option' process_child_stdout))
00:03:58 verbose #5535 > >     =
00:03:58 verbose #5536 > >     !\($'"&mut !child.stdout"')
00:03:58 verbose #5537 > >
00:03:58 verbose #5538 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:58 verbose #5539 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:58 verbose #5540 > > │ ### process_command                                                          │
00:03:58 verbose #5541 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:58 verbose #5542 > >
00:03:58 verbose #5543 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:58 verbose #5544 > > nominal process_command =
00:03:58 verbose #5545 > >     `(
00:03:58 verbose #5546 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:58 verbose #5547 > > Fable.Core.Emit(\"std::process::Command\")>]]\n#endif\ntype std_process_Command
00:03:58 verbose #5548 > > = class end"
00:03:58 verbose #5549 > >         $'' : $'std_process_Command'
00:03:58 verbose #5550 > >     )
00:03:59 verbose #5551 > >
00:03:59 verbose #5552 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:59 verbose #5553 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:59 verbose #5554 > > │ ### process_stdio                                                            │
00:03:59 verbose #5555 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:59 verbose #5556 > >
00:03:59 verbose #5557 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:59 verbose #5558 > > nominal process_stdio =
00:03:59 verbose #5559 > >     `(
00:03:59 verbose #5560 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:59 verbose #5561 > > Fable.Core.Emit(\"std::process::Stdio\")>]]\n#endif\ntype std_process_Stdio =
00:03:59 verbose #5562 > > class end"
00:03:59 verbose #5563 > >         $'' : $'std_process_Stdio'
00:03:59 verbose #5564 > >     )
00:03:59 verbose #5565 > >
00:03:59 verbose #5566 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:59 verbose #5567 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:59 verbose #5568 > > │ ### process_output                                                           │
00:03:59 verbose #5569 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:59 verbose #5570 > >
00:03:59 verbose #5571 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:59 verbose #5572 > > nominal process_output =
00:03:59 verbose #5573 > >     `(
00:03:59 verbose #5574 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:59 verbose #5575 > > Fable.Core.Emit(\"std::process::Output\")>]]\n#endif\ntype std_process_Output =
00:03:59 verbose #5576 > > class end"
00:03:59 verbose #5577 > >         $'' : $'std_process_Output'
00:03:59 verbose #5578 > >     )
00:03:59 verbose #5579 > >
00:03:59 verbose #5580 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:59 verbose #5581 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:59 verbose #5582 > > │ ### process_exit_status                                                      │
00:03:59 verbose #5583 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:59 verbose #5584 > >
00:03:59 verbose #5585 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:59 verbose #5586 > > nominal process_exit_status =
00:03:59 verbose #5587 > >     `(
00:03:59 verbose #5588 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:03:59 verbose #5589 > > Fable.Core.Emit(\"std::process::ExitStatus\")>]]\n#endif\ntype
00:03:59 verbose #5590 > > std_process_ExitStatus = class end"
00:03:59 verbose #5591 > >         $'' : $'std_process_ExitStatus'
00:03:59 verbose #5592 > >     )
00:03:59 verbose #5593 > >
00:03:59 verbose #5594 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:59 verbose #5595 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:59 verbose #5596 > > │ ### process_output_status                                                    │
00:03:59 verbose #5597 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:59 verbose #5598 > >
00:03:59 verbose #5599 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:59 verbose #5600 > > inl process_output_status (output : process_output) : process_exit_status =
00:03:59 verbose #5601 > >     !\\(output, $'"$0.status"')
00:03:59 verbose #5602 > >
00:03:59 verbose #5603 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:59 verbose #5604 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:59 verbose #5605 > > │ ### process_exit_status_code                                                 │
00:03:59 verbose #5606 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:59 verbose #5607 > >
00:03:59 verbose #5608 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:59 verbose #5609 > > inl process_exit_status_code (status : process_exit_status) : optionm'.option'
00:03:59 verbose #5610 > > i32 =
00:03:59 verbose #5611 > >     !\\(status, $'"$0.code()"')
00:03:59 verbose #5612 > >
00:03:59 verbose #5613 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:59 verbose #5614 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:59 verbose #5615 > > │ ### stdin_write_all                                                          │
00:03:59 verbose #5616 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:59 verbose #5617 > >
00:03:59 verbose #5618 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:59 verbose #5619 > > inl stdin_write_all (stdin : threading.mutex_guard process_child_stdin) (text :
00:03:59 verbose #5620 > > string) : () =
00:03:59 verbose #5621 > >     inl stream = text |> sm'.as_bytes
00:03:59 verbose #5622 > >     inl stdin = join stdin
00:03:59 verbose #5623 > >     (!\($'"true; let mut !stdin = !stdin"') : bool) |> ignore
00:03:59 verbose #5624 > >     (!\\(stdin, $'"true; std::io::Write::write_all(&mut *$0,
00:03:59 verbose #5625 > > !stream).unwrap()"') : bool) |> ignore
00:03:59 verbose #5626 > >
00:03:59 verbose #5627 > > ── markdown ────────────────────────────────────────────────────────────────────
00:03:59 verbose #5628 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:03:59 verbose #5629 > > │ ### stdin_flush                                                              │
00:03:59 verbose #5630 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:03:59 verbose #5631 > >
00:03:59 verbose #5632 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:03:59 verbose #5633 > > inl stdin_flush (stdin : threading.mutex_guard process_child_stdin) : () =
00:03:59 verbose #5634 > >     inl stdin = join stdin
00:03:59 verbose #5635 > >     (!\($'"true; let mut !stdin = !stdin"') : bool) |> ignore
00:03:59 verbose #5636 > >     (!\\(stdin, $'"true; std::io::Write::flush(&mut *$0).unwrap()"') : bool) |>
00:03:59 verbose #5637 > > ignore
00:04:00 verbose #5638 > >
00:04:00 verbose #5639 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:00 verbose #5640 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:00 verbose #5641 > > │ ### new_process_command                                                      │
00:04:00 verbose #5642 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:00 verbose #5643 > >
00:04:00 verbose #5644 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:00 verbose #5645 > > inl new_process_command (file_name : string) : process_command =
00:04:00 verbose #5646 > >     !\\(file_name, $'"std::process::Command::new(&*$0)"')
00:04:00 verbose #5647 > >
00:04:00 verbose #5648 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:00 verbose #5649 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:00 verbose #5650 > > │ ### process_stdio_piped                                                      │
00:04:00 verbose #5651 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:00 verbose #5652 > >
00:04:00 verbose #5653 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:00 verbose #5654 > > inl process_stdio_piped () : process_stdio =
00:04:00 verbose #5655 > >     !\($'"std::process::Stdio::piped()"')
00:04:00 verbose #5656 > >
00:04:00 verbose #5657 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:00 verbose #5658 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:00 verbose #5659 > > │ ### process_command_args                                                     │
00:04:00 verbose #5660 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:00 verbose #5661 > >
00:04:00 verbose #5662 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:00 verbose #5663 > > inl process_command_args (args : am'.vec sm'.std_string) (c : process_command) :
00:04:00 verbose #5664 > > rust.ref (rust.mut' process_command) =
00:04:00 verbose #5665 > >     (!\($'"true; let mut !c = !c"') : bool) |> ignore
00:04:00 verbose #5666 > >     !\\((c, args), $'"std::process::Command::args(&mut $0, &*$1)"')
00:04:00 verbose #5667 > >
00:04:00 verbose #5668 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:00 verbose #5669 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:00 verbose #5670 > > │ ### process_command_stdout                                                   │
00:04:00 verbose #5671 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:00 verbose #5672 > >
00:04:00 verbose #5673 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:00 verbose #5674 > > inl process_command_stdout (stdio : process_stdio) (c : rust.ref (rust.mut'
00:04:00 verbose #5675 > > process_command)) : rust.ref (rust.mut' process_command) =
00:04:00 verbose #5676 > >     !\\(c, $'"std::process::Command::stdout($0, std::process::Stdio::piped())"')
00:04:00 verbose #5677 > >
00:04:00 verbose #5678 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:00 verbose #5679 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:00 verbose #5680 > > │ ### process_command_stderr                                                   │
00:04:00 verbose #5681 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:00 verbose #5682 > >
00:04:00 verbose #5683 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:00 verbose #5684 > > inl process_command_stderr (stdio : process_stdio) (c : rust.ref (rust.mut'
00:04:00 verbose #5685 > > process_command)) : rust.ref (rust.mut' process_command) =
00:04:00 verbose #5686 > >     !\\(c, $'"std::process::Command::stderr($0, std::process::Stdio::piped())"')
00:04:00 verbose #5687 > >
00:04:00 verbose #5688 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:00 verbose #5689 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:00 verbose #5690 > > │ ### process_command_stdin                                                    │
00:04:00 verbose #5691 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:00 verbose #5692 > >
00:04:00 verbose #5693 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:00 verbose #5694 > > inl process_command_stdin (stdio : process_stdio) (c : rust.ref (rust.mut'
00:04:00 verbose #5695 > > process_command)) : rust.ref (rust.mut' process_command) =
00:04:00 verbose #5696 > >     !\\(c, $'"std::process::Command::stdin($0, std::process::Stdio::piped())"')
00:04:00 verbose #5697 > >
00:04:00 verbose #5698 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:00 verbose #5699 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:00 verbose #5700 > > │ ### process_command_current_dir                                              │
00:04:00 verbose #5701 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:00 verbose #5702 > >
00:04:00 verbose #5703 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:00 verbose #5704 > > inl process_command_current_dir
00:04:00 verbose #5705 > >     (dir : string)
00:04:00 verbose #5706 > >     (c : rust.ref (rust.mut' process_command))
00:04:00 verbose #5707 > >     : rust.ref (rust.mut' process_command)
00:04:00 verbose #5708 > >     =
00:04:00 verbose #5709 > >     !\\(dir, $'"std::process::Command::current_dir(!c, &*$0)"')
00:04:00 verbose #5710 > >
00:04:00 verbose #5711 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:00 verbose #5712 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:00 verbose #5713 > > │ ### process_command_env                                                      │
00:04:00 verbose #5714 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:00 verbose #5715 > >
00:04:00 verbose #5716 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:00 verbose #5717 > > inl process_command_env
00:04:00 verbose #5718 > >     (key : string)
00:04:00 verbose #5719 > >     (value : string)
00:04:00 verbose #5720 > >     (c : rust.ref (rust.mut' process_command))
00:04:00 verbose #5721 > >     : rust.ref (rust.mut' process_command)
00:04:00 verbose #5722 > >     =
00:04:00 verbose #5723 > >     !\\((key, value), $'"std::process::Command::env(!c, &*$0, &*$1)"')
00:04:00 verbose #5724 > >
00:04:00 verbose #5725 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:00 verbose #5726 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:00 verbose #5727 > > │ ### process_command_spawn                                                    │
00:04:00 verbose #5728 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:00 verbose #5729 > >
00:04:00 verbose #5730 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:00 verbose #5731 > > inl process_command_spawn
00:04:00 verbose #5732 > >     (c : rust.ref (rust.mut' process_command))
00:04:00 verbose #5733 > >     : resultm.result' process_child stream.io_error
00:04:00 verbose #5734 > >     =
00:04:00 verbose #5735 > >     !\\(c, $'"std::process::Command::spawn($0)"')
00:04:00 verbose #5736 > >
00:04:00 verbose #5737 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:00 verbose #5738 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:00 verbose #5739 > > │ ### child_wait_with_output                                                   │
00:04:00 verbose #5740 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:00 verbose #5741 > >
00:04:00 verbose #5742 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:00 verbose #5743 > > inl child_wait_with_output
00:04:00 verbose #5744 > >     (child : process_child)
00:04:00 verbose #5745 > >     : resultm.result' process_output stream.io_error
00:04:00 verbose #5746 > >     =
00:04:00 verbose #5747 > >     !\\(child, $'"$0.wait_with_output()"')
00:04:00 verbose #5748 > >
00:04:00 verbose #5749 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:00 verbose #5750 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:00 verbose #5751 > > │ ### stdio_line                                                               │
00:04:00 verbose #5752 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:00 verbose #5753 > >
00:04:00 verbose #5754 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:00 verbose #5755 > > inl stdio_line
00:04:00 verbose #5756 > >     (stdio : result () ())
00:04:00 verbose #5757 > >     (trace' : bool)
00:04:00 verbose #5758 > >     (channel_sender : threading.arc (threading.mutex (threading.channel_sender
00:04:00 verbose #5759 > > sm'.std_string)))
00:04:00 verbose #5760 > >     (line : resultm.result' sm'.std_string stream.io_error)
00:04:00 verbose #5761 > >     : resultm.result' () sm'.std_string
00:04:00 verbose #5762 > >     =
00:04:00 verbose #5763 > >     inl highlight text =
00:04:00 verbose #5764 > >         $'$"\\u001b[[4;7m{!text}\\u001b[[0m"'
00:04:00 verbose #5765 > >     inl line =
00:04:00 verbose #5766 > >         match
00:04:00 verbose #5767 > >             line
00:04:00 verbose #5768 > >             |> resultm.map_error' sm'.format'
00:04:00 verbose #5769 > >             |> resultm.unbox'
00:04:00 verbose #5770 > >         with
00:04:00 verbose #5771 > >         | Ok line =>
00:04:00 verbose #5772 > >             inl line =
00:04:00 verbose #5773 > >                 line
00:04:00 verbose #5774 > >                 |> sm'.from_std_string
00:04:00 verbose #5775 > >                 // |> sm'.as_bytes
00:04:00 verbose #5776 > >                 // |> am'.slice_to_vec
00:04:00 verbose #5777 > >                 |> sm'.encoding_encode' (sm'.encoding_utf8' ())
00:04:00 verbose #5778 > >                 |> rust.cow_as_ref
00:04:00 verbose #5779 > >                 |> sm'.str_from_utf8
00:04:00 verbose #5780 > >                 // |> sm'.utf8_decode
00:04:00 verbose #5781 > >                 |> resultm.unwrap'
00:04:00 verbose #5782 > >                 |> sm'.ref_to_std_string
00:04:00 verbose #5783 > >                 // String::from_utf8_lossy(line.as_bytes()).into()
00:04:00 verbose #5784 > >             inl line_log = line |> sm'.from_std_string
00:04:00 verbose #5785 > >             inl text =
00:04:00 verbose #5786 > >                 match stdio with
00:04:00 verbose #5787 > >                 | Ok () => $'$"> {!line_log}"'
00:04:00 verbose #5788 > >                 | Error () => $'$"\! {!line_log}"'
00:04:00 verbose #5789 > >             if trace'
00:04:00 verbose #5790 > >             then trace Verbose (fun () => text) id
00:04:00 verbose #5791 > >             else text |> console.write_line
00:04:00 verbose #5792 > >             match stdio with
00:04:00 verbose #5793 > >             | Ok () => line
00:04:00 verbose #5794 > >             | Error () => line |> highlight |> sm'.to_std_string
00:04:00 verbose #5795 > >         | Error e =>
00:04:00 verbose #5796 > >             trace Critical
00:04:00 verbose #5797 > >                 fun () => $'$"runtime.stdio_line"'
00:04:00 verbose #5798 > >                 fun () => { e }
00:04:00 verbose #5799 > >             e |> highlight |> sm'.to_std_string
00:04:00 verbose #5800 > >     channel_sender
00:04:00 verbose #5801 > >     |> threading.arc_mutex_lock
00:04:00 verbose #5802 > >     |> resultm.unwrap'
00:04:00 verbose #5803 > >     |> threading.mutex_guard_ref
00:04:00 verbose #5804 > >     |> threading.channel_send line
00:04:00 verbose #5805 > >     |> resultm.map_error' sm'.format'
00:04:00 verbose #5806 > >
00:04:00 verbose #5807 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:00 verbose #5808 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:00 verbose #5809 > > │ ### command                                                                  │
00:04:00 verbose #5810 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:00 verbose #5811 > >
00:04:00 verbose #5812 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:00 verbose #5813 > > nominal command =
00:04:00 verbose #5814 > >     `(
00:04:00 verbose #5815 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:00 verbose #5816 > > Fable.Core.Emit(\"clap::Command\")>]]\n#endif\ntype clap_Command = class end"
00:04:00 verbose #5817 > >         $'' : $'clap_Command'
00:04:00 verbose #5818 > >     )
00:04:01 verbose #5819 > >
00:04:01 verbose #5820 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:01 verbose #5821 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:01 verbose #5822 > > │ ### new_command                                                              │
00:04:01 verbose #5823 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:01 verbose #5824 > >
00:04:01 verbose #5825 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:01 verbose #5826 > > inl new_command (s : rust.static_ref sm'.str) : command =
00:04:01 verbose #5827 > >     !\\(s, $'"clap::Command::new($0)"')
00:04:01 verbose #5828 > >
00:04:01 verbose #5829 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:01 verbose #5830 > > //// test
00:04:01 verbose #5831 > > ///! rust -d clap
00:04:01 verbose #5832 > >
00:04:01 verbose #5833 > > ##"command"
00:04:01 verbose #5834 > > |> new_command
00:04:01 verbose #5835 > > |> sm'.format_pretty
00:04:01 verbose #5836 > > |> _assert_string_contains "\"command\""
00:04:08 verbose #5837 > >
00:04:08 verbose #5838 > > ╭─[ 7.03s - return value ]─────────────────────────────────────────────────────╮
00:04:08 verbose #5839 > > │ __assert_string_contains / actual: ""command"" / expected: "Command {        │
00:04:08 verbose #5840 > > │     name: "command",                                                         │
00:04:08 verbose #5841 > > │     long_flag: None,                                                         │
00:04:08 verbose #5842 > > │     short_flag: None,                                                        │
00:04:08 verbose #5843 > > │     display_name: None,                                                      │
00:04:08 verbose #5844 > > │     bin_name: None,                                                          │
00:04:08 verbose #5845 > > │     author: None,                                                            │
00:04:08 verbose #5846 > > │     version: None,                                                           │
00:04:08 verbose #5847 > > │     long_version: None,                                                      │
00:04:08 verbose #5848 > > │     about: None,                                                             │
00:04:08 verbose #5849 > > │     long_about: None,                                                        │
00:04:08 verbose #5850 > > │     before_help: None,                                                       │
00:04:08 verbose #5851 > > │     before_long_help: None,                                                  │
00:04:08 verbose #5852 > > │     after_help: None,                                                        │
00:04:08 verbose #5853 > > │     after_long_help: None,                                                   │
00:04:08 verbose #5854 > > │     aliases: [],                                                             │
00:04:08 verbose #5855 > > │     short_flag_aliases: [],                                                  │
00:04:08 verbose #5856 > > │     long_flag_aliases: [],                                                   │
00:04:08 verbose #5857 > > │     usage_str: None,                                                         │
00:04:08 verbose #5858 > > │     usage_name: None,                                                        │
00:04:08 verbose #5859 > > │     help_str: None,                                                          │
00:04:08 verbose #5860 > > │     disp_ord: None,                                                          │
00:04:08 verbose #5861 > > │     template: None,                                                          │
00:04:08 verbose #5862 > > │     settings: AppFlags(                                                      │
00:04:08 verbose #5863 > > │         0,                                                                   │
00:04:08 verbose #5864 > > │     ),                                                                       │
00:04:08 verbose #5865 > > │     g_settings: AppFlags(                                                    │
00:04:08 verbose #5866 > > │         0,                                                                   │
00:04:08 verbose #5867 > > │     ),                                                                       │
00:04:08 verbose #5868 > > │     args: MKeyMap {                                                          │
00:04:08 verbose #5869 > > │         args: [],                                                            │
00:04:08 verbose #5870 > > │         keys: [],                                                            │
00:04:08 verbose #5871 > > │     },                                                                       │
00:04:08 verbose #5872 > > │     subcommands: [],                                                         │
00:04:08 verbose #5873 > > │     groups: [],                                                              │
00:04:08 verbose #5874 > > │     current_help_heading: None,                                              │
00:04:08 verbose #5875 > > │     current_disp_ord: Some(                                                  │
00:04:08 verbose #5876 > > │         0,                                                                   │
00:04:08 verbose #5877 > > │     ),                                                                       │
00:04:08 verbose #5878 > > │     subcommand_value_name: None,                                             │
00:04:08 verbose #5879 > > │     subcommand_heading: None,                                                │
00:04:08 verbose #5880 > > │     external_value_parser: None,                                             │
00:04:08 verbose #5881 > > │     long_help_exists: false,                                                 │
00:04:08 verbose #5882 > > │     deferred: None,                                                          │
00:04:08 verbose #5883 > > │     app_ext: Extensions {                                                    │
00:04:08 verbose #5884 > > │         extensions: FlatMap {                                                │
00:04:08 verbose #5885 > > │             keys: [],                                                        │
00:04:08 verbose #5886 > > │             values: [],                                                      │
00:04:08 verbose #5887 > > │         },                                                                   │
00:04:08 verbose #5888 > > │     },                                                                       │
00:04:08 verbose #5889 > > │ }"                                                                           │
00:04:08 verbose #5890 > > │                                                                              │
00:04:08 verbose #5891 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:08 verbose #5892 > >
00:04:08 verbose #5893 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:08 verbose #5894 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:08 verbose #5895 > > │ ### arg                                                                      │
00:04:08 verbose #5896 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:08 verbose #5897 > >
00:04:08 verbose #5898 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:08 verbose #5899 > > nominal arg =
00:04:08 verbose #5900 > >     `(
00:04:08 verbose #5901 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:08 verbose #5902 > > Fable.Core.Emit(\"clap::Arg\")>]]\n#endif\ntype clap_Arg = class end"
00:04:08 verbose #5903 > >         $'' : $'clap_Arg'
00:04:08 verbose #5904 > >     )
00:04:08 verbose #5905 > >
00:04:08 verbose #5906 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:08 verbose #5907 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:08 verbose #5908 > > │ ### new_arg                                                                  │
00:04:08 verbose #5909 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:08 verbose #5910 > >
00:04:08 verbose #5911 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:08 verbose #5912 > > inl new_arg (s : rust.static_ref sm'.str) : arg =
00:04:08 verbose #5913 > >     !\\(s, $'"clap::Arg::new($0)"')
00:04:08 verbose #5914 > >
00:04:08 verbose #5915 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:08 verbose #5916 > > //// test
00:04:08 verbose #5917 > > ///! rust -d clap
00:04:08 verbose #5918 > >
00:04:08 verbose #5919 > > ##"arg"
00:04:08 verbose #5920 > > |> new_arg
00:04:08 verbose #5921 > > |> sm'.format_pretty
00:04:08 verbose #5922 > > |> _assert_string_contains "\"arg\""
00:04:15 verbose #5923 > >
00:04:15 verbose #5924 > > ╭─[ 6.94s - return value ]─────────────────────────────────────────────────────╮
00:04:15 verbose #5925 > > │ __assert_string_contains / actual: ""arg"" / expected: "Arg {                │
00:04:15 verbose #5926 > > │     id: "arg",                                                               │
00:04:15 verbose #5927 > > │     help: None,                                                              │
00:04:15 verbose #5928 > > │     long_help: None,                                                         │
00:04:15 verbose #5929 > > │     action: None,                                                            │
00:04:15 verbose #5930 > > │     value_parser: None,                                                      │
00:04:15 verbose #5931 > > │     blacklist: [],                                                           │
00:04:15 verbose #5932 > > │     settings: ArgFlags(                                                      │
00:04:15 verbose #5933 > > │         0,                                                                   │
00:04:15 verbose #5934 > > │     ),                                                                       │
00:04:15 verbose #5935 > > │     overrides: [],                                                           │
00:04:15 verbose #5936 > > │     groups: [],                                                              │
00:04:15 verbose #5937 > > │     requires: [],                                                            │
00:04:15 verbose #5938 > > │     r_ifs: [],                                                               │
00:04:15 verbose #5939 > > │     r_unless: [],                                                            │
00:04:15 verbose #5940 > > │     short: None,                                                             │
00:04:15 verbose #5941 > > │     long: None,                                                              │
00:04:15 verbose #5942 > > │     aliases: [],                                                             │
00:04:15 verbose #5943 > > │     short_aliases: [],                                                       │
00:04:15 verbose #5944 > > │     disp_ord: None,                                                          │
00:04:15 verbose #5945 > > │     val_names: [],                                                           │
00:04:15 verbose #5946 > > │     num_vals: None,                                                          │
00:04:15 verbose #5947 > > │     val_delim: None,                                                         │
00:04:15 verbose #5948 > > │     default_vals: [],                                                        │
00:04:15 verbose #5949 > > │     default_vals_ifs: [],                                                    │
00:04:15 verbose #5950 > > │     terminator: None,                                                        │
00:04:15 verbose #5951 > > │     index: None,                                                             │
00:04:15 verbose #5952 > > │     help_heading: None,                                                      │
00:04:15 verbose #5953 > > │     default_missing_vals: [],                                                │
00:04:15 verbose #5954 > > │     ext: Extensions {                                                        │
00:04:15 verbose #5955 > > │         extensions: FlatMap {                                                │
00:04:15 verbose #5956 > > │             keys: [],                                                        │
00:04:15 verbose #5957 > > │             values: [],                                                      │
00:04:15 verbose #5958 > > │         },                                                                   │
00:04:15 verbose #5959 > > │     },                                                                       │
00:04:15 verbose #5960 > > │ }"                                                                           │
00:04:15 verbose #5961 > > │                                                                              │
00:04:15 verbose #5962 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:15 verbose #5963 > >
00:04:15 verbose #5964 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:15 verbose #5965 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:15 verbose #5966 > > │ ### command_arg                                                              │
00:04:15 verbose #5967 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:15 verbose #5968 > >
00:04:15 verbose #5969 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:15 verbose #5970 > > inl command_arg (arg : arg) (command : command) : command =
00:04:15 verbose #5971 > >     !\\((command, arg), $'"clap::Command::arg($0, $1)"')
00:04:15 verbose #5972 > >
00:04:15 verbose #5973 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:15 verbose #5974 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:15 verbose #5975 > > │ ### arg_required                                                             │
00:04:15 verbose #5976 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:15 verbose #5977 > >
00:04:15 verbose #5978 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:15 verbose #5979 > > inl arg_required (value : bool) (arg : arg) : arg =
00:04:15 verbose #5980 > >     !\\((arg, value), $'"$0.required($1)"')
00:04:15 verbose #5981 > >
00:04:15 verbose #5982 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:15 verbose #5983 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:15 verbose #5984 > > │ ### arg_require_equals                                                       │
00:04:15 verbose #5985 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:15 verbose #5986 > >
00:04:15 verbose #5987 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:15 verbose #5988 > > inl arg_require_equals (value : bool) (arg : arg) : arg =
00:04:15 verbose #5989 > >     !\\((arg, value), $'"$0.require_equals($1)"')
00:04:15 verbose #5990 > >
00:04:15 verbose #5991 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:15 verbose #5992 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:15 verbose #5993 > > │ ### arg_default_value                                                        │
00:04:15 verbose #5994 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:15 verbose #5995 > >
00:04:15 verbose #5996 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:15 verbose #5997 > > inl arg_default_value (value : string) (arg : arg) : arg =
00:04:15 verbose #5998 > >     inl value = #value
00:04:15 verbose #5999 > >     !\\((arg, value), $'"$0.default_value($1)"')
00:04:15 verbose #6000 > >
00:04:15 verbose #6001 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:15 verbose #6002 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:15 verbose #6003 > > │ ### arg_default_missing_value                                                │
00:04:15 verbose #6004 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:15 verbose #6005 > >
00:04:15 verbose #6006 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:15 verbose #6007 > > inl arg_default_missing_value (value : string) (arg : arg) : arg =
00:04:15 verbose #6008 > >     inl value = #value
00:04:15 verbose #6009 > >     !\\((arg, value), $'"$0.default_missing_value($1)"')
00:04:15 verbose #6010 > >
00:04:15 verbose #6011 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:15 verbose #6012 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:15 verbose #6013 > > │ ### arg_overrides_with                                                       │
00:04:15 verbose #6014 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:15 verbose #6015 > >
00:04:15 verbose #6016 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:15 verbose #6017 > > inl arg_overrides_with (value : string) (arg : arg) : arg =
00:04:15 verbose #6018 > >     inl value = #value
00:04:15 verbose #6019 > >     !\\((arg, value), $'"$0.overrides_with($1)"')
00:04:15 verbose #6020 > >
00:04:15 verbose #6021 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:15 verbose #6022 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:15 verbose #6023 > > │ ### arg_short                                                                │
00:04:15 verbose #6024 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:15 verbose #6025 > >
00:04:15 verbose #6026 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:15 verbose #6027 > > inl arg_short (value : char) (arg : arg) : arg =
00:04:15 verbose #6028 > >     !\\((arg, value), $'"$0.short($1)"')
00:04:16 verbose #6029 > >
00:04:16 verbose #6030 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:16 verbose #6031 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:16 verbose #6032 > > │ ### arg_long                                                                 │
00:04:16 verbose #6033 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:16 verbose #6034 > >
00:04:16 verbose #6035 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:16 verbose #6036 > > inl arg_long (value : rust.static_ref sm'.str) (arg : arg) : arg =
00:04:16 verbose #6037 > >     !\\((arg, value), $'"$0.long($1)"')
00:04:16 verbose #6038 > >
00:04:16 verbose #6039 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:16 verbose #6040 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:16 verbose #6041 > > │ ### arg_value_names                                                          │
00:04:16 verbose #6042 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:16 verbose #6043 > >
00:04:16 verbose #6044 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:16 verbose #6045 > > inl arg_value_names (values : array_base (rust.static_ref sm'.str)) (arg : arg)
00:04:16 verbose #6046 > > : arg =
00:04:16 verbose #6047 > >     inl values = values |> am'.to_vec
00:04:16 verbose #6048 > >     !\\((arg, values), $'"$0.value_names($1)"')
00:04:16 verbose #6049 > >
00:04:16 verbose #6050 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:16 verbose #6051 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:16 verbose #6052 > > │ ### arg_num_args                                                             │
00:04:16 verbose #6053 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:16 verbose #6054 > >
00:04:16 verbose #6055 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:16 verbose #6056 > > inl arg_num_args (value : i32) (arg : arg) : arg =
00:04:16 verbose #6057 > >     !\\((arg, value), $'"$0.num_args($1)"')
00:04:16 verbose #6058 > >
00:04:16 verbose #6059 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:16 verbose #6060 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:16 verbose #6061 > > │ ### value_range                                                              │
00:04:16 verbose #6062 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:16 verbose #6063 > >
00:04:16 verbose #6064 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:16 verbose #6065 > > nominal value_range =
00:04:16 verbose #6066 > >     `(
00:04:16 verbose #6067 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:16 verbose #6068 > > Fable.Core.Emit(\"clap::builder::ValueRange\")>]]\n#endif\ntype
00:04:16 verbose #6069 > > clap_builder_ValueRange = class end"
00:04:16 verbose #6070 > >         $'' : $'clap_builder_ValueRange'
00:04:16 verbose #6071 > >     )
00:04:16 verbose #6072 > >
00:04:16 verbose #6073 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:16 verbose #6074 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:16 verbose #6075 > > │ ### new_value_range                                                          │
00:04:16 verbose #6076 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:16 verbose #6077 > >
00:04:16 verbose #6078 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:16 verbose #6079 > > inl new_value_range inclusive start end : value_range =
00:04:16 verbose #6080 > >     inl len = 0i32 |> convert
00:04:16 verbose #6081 > >     inl start, end =
00:04:16 verbose #6082 > >         open am'
00:04:16 verbose #6083 > >         match start, end with
00:04:16 verbose #6084 > >         | Start start, End fn =>
00:04:16 verbose #6085 > >             start, len |> fn
00:04:16 verbose #6086 > >         | End start_fn, End end_fn =>
00:04:16 verbose #6087 > >             start_fn len, end_fn len
00:04:16 verbose #6088 > >     inl inclusive =
00:04:16 verbose #6089 > >         if inclusive
00:04:16 verbose #6090 > >         then "="
00:04:16 verbose #6091 > >         else ""
00:04:16 verbose #6092 > >     match start, end with
00:04:16 verbose #6093 > >     | start, end when end =. len => !\\(start,
00:04:16 verbose #6094 > > $'"clap::builder::ValueRange::new($0..)"')
00:04:16 verbose #6095 > >     | start, end => !\\((start, end), $'"clap::builder::ValueRange::new($0.." +
00:04:16 verbose #6096 > > !inclusive + "$1)"')
00:04:16 verbose #6097 > >
00:04:16 verbose #6098 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:16 verbose #6099 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:16 verbose #6100 > > │ ### arg_num_args_range                                                       │
00:04:16 verbose #6101 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:16 verbose #6102 > >
00:04:16 verbose #6103 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:16 verbose #6104 > > inl arg_num_args_range (value : value_range) (arg : arg) : arg =
00:04:16 verbose #6105 > >     !\\((arg, value), $'"$0.num_args($1)"')
00:04:16 verbose #6106 > >
00:04:16 verbose #6107 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:16 verbose #6108 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:16 verbose #6109 > > │ ### arg_value_name                                                           │
00:04:16 verbose #6110 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:16 verbose #6111 > >
00:04:16 verbose #6112 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:16 verbose #6113 > > inl arg_value_name (value : string) (arg : arg) : arg =
00:04:16 verbose #6114 > >     inl value = value |> sm'.as_str
00:04:16 verbose #6115 > >     !\\((arg, value), $'"$0.value_name($1)"')
00:04:16 verbose #6116 > >
00:04:16 verbose #6117 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:16 verbose #6118 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:16 verbose #6119 > > │ ### value_parser                                                             │
00:04:16 verbose #6120 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:16 verbose #6121 > >
00:04:16 verbose #6122 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:16 verbose #6123 > > nominal value_parser =
00:04:16 verbose #6124 > >     `(
00:04:16 verbose #6125 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:16 verbose #6126 > > Fable.Core.Emit(\"clap::builder::ValueParser\")>]]\n#endif\ntype
00:04:16 verbose #6127 > > clap_builder_ValueParser = class end"
00:04:16 verbose #6128 > >         $'' : $'clap_builder_ValueParser'
00:04:16 verbose #6129 > >     )
00:04:16 verbose #6130 > >
00:04:16 verbose #6131 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:16 verbose #6132 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:16 verbose #6133 > > │ ### possible_value                                                           │
00:04:16 verbose #6134 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:16 verbose #6135 > >
00:04:16 verbose #6136 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:16 verbose #6137 > > nominal possible_value =
00:04:16 verbose #6138 > >     `(
00:04:16 verbose #6139 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:16 verbose #6140 > > Fable.Core.Emit(\"clap::builder::PossibleValue\")>]]\n#endif\ntype
00:04:16 verbose #6141 > > clap_builder_PossibleValue = class end"
00:04:16 verbose #6142 > >         $'' : $'clap_builder_PossibleValue'
00:04:16 verbose #6143 > >     )
00:04:16 verbose #6144 > >
00:04:16 verbose #6145 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:16 verbose #6146 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:16 verbose #6147 > > │ ### new_possible_value                                                       │
00:04:16 verbose #6148 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:16 verbose #6149 > >
00:04:16 verbose #6150 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:16 verbose #6151 > > inl new_possible_value forall t. (x : t) : possible_value =
00:04:16 verbose #6152 > >     !\\(x, $'"clap::builder::PossibleValue::new(&**$0)"')
00:04:16 verbose #6153 > >
00:04:16 verbose #6154 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:16 verbose #6155 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:16 verbose #6156 > > │ ### value_parser_path_buf                                                    │
00:04:16 verbose #6157 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:16 verbose #6158 > >
00:04:16 verbose #6159 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:16 verbose #6160 > > inl value_parser_path_buf () : value_parser =
00:04:16 verbose #6161 > >     !\($'"clap::value_parser\!(std::path::PathBuf)"')
00:04:17 verbose #6162 > >
00:04:17 verbose #6163 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:17 verbose #6164 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:17 verbose #6165 > > │ ### value_parser_expr                                                        │
00:04:17 verbose #6166 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:17 verbose #6167 > >
00:04:17 verbose #6168 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:17 verbose #6169 > > inl value_parser_expr (expr : string) : value_parser =
00:04:17 verbose #6170 > >     !\($'"clap::value_parser\!(" + !expr + ").into()"')
00:04:17 verbose #6171 > >
00:04:17 verbose #6172 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:17 verbose #6173 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:17 verbose #6174 > > │ ### arg_value_parser                                                         │
00:04:17 verbose #6175 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:17 verbose #6176 > >
00:04:17 verbose #6177 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:17 verbose #6178 > > inl arg_value_parser (values : value_parser) (arg : arg) : arg =
00:04:17 verbose #6179 > >     !\\((arg, values), $'"$0.value_parser($1)"')
00:04:17 verbose #6180 > >
00:04:17 verbose #6181 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:17 verbose #6182 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:17 verbose #6183 > > │ ### arg_action                                                               │
00:04:17 verbose #6184 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:17 verbose #6185 > >
00:04:17 verbose #6186 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:17 verbose #6187 > > nominal arg_action' =
00:04:17 verbose #6188 > >     `(
00:04:17 verbose #6189 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:17 verbose #6190 > > Fable.Core.Emit(\"clap::ArgAction\")>]]\n#endif\ntype clap_ArgAction = class
00:04:17 verbose #6191 > > end"
00:04:17 verbose #6192 > >         $'' : $'clap_ArgAction'
00:04:17 verbose #6193 > >     )
00:04:17 verbose #6194 > >
00:04:17 verbose #6195 > > union arg_action =
00:04:17 verbose #6196 > >     | Set
00:04:17 verbose #6197 > >     | Append
00:04:17 verbose #6198 > >     | SetTrue
00:04:17 verbose #6199 > >     | SetFalse
00:04:17 verbose #6200 > >     | Count
00:04:17 verbose #6201 > >     | Help
00:04:17 verbose #6202 > >     | HelpShort
00:04:17 verbose #6203 > >     | HelpLong
00:04:17 verbose #6204 > >     | Version
00:04:17 verbose #6205 > >
00:04:17 verbose #6206 > > inl arg_action = function
00:04:17 verbose #6207 > >     | Set => !\($'"clap::ArgAction::Set"') : arg_action'
00:04:17 verbose #6208 > >     | Append => !\($'"clap::ArgAction::Append"') : arg_action'
00:04:17 verbose #6209 > >     | SetTrue => !\($'"clap::ArgAction::SetTrue"') : arg_action'
00:04:17 verbose #6210 > >     | SetFalse => !\($'"clap::ArgAction::SetFalse"') : arg_action'
00:04:17 verbose #6211 > >     | Count => !\($'"clap::ArgAction::Count"') : arg_action'
00:04:17 verbose #6212 > >     | Help => !\($'"clap::ArgAction::Help"') : arg_action'
00:04:17 verbose #6213 > >     | HelpShort => !\($'"clap::ArgAction::HelpShort"') : arg_action'
00:04:17 verbose #6214 > >     | HelpLong => !\($'"clap::ArgAction::HelpLong"') : arg_action'
00:04:17 verbose #6215 > >     | Version => !\($'"clap::ArgAction::Version"') : arg_action'
00:04:17 verbose #6216 > >
00:04:17 verbose #6217 > > inl arg_action (value : arg_action) (arg : arg) : arg =
00:04:17 verbose #6218 > >     inl value = value |> arg_action
00:04:17 verbose #6219 > >     !\\((arg, value), $'"$0.action($1)"')
00:04:17 verbose #6220 > >
00:04:17 verbose #6221 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:17 verbose #6222 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:17 verbose #6223 > > │ ### arg_index                                                                │
00:04:17 verbose #6224 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:17 verbose #6225 > >
00:04:17 verbose #6226 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:17 verbose #6227 > > inl arg_index (value : i32) (arg : arg) : arg =
00:04:17 verbose #6228 > >     !\\((arg, value), $'"$0.index($1)"')
00:04:17 verbose #6229 > >
00:04:17 verbose #6230 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:17 verbose #6231 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:17 verbose #6232 > > │ ### arg_matches                                                              │
00:04:17 verbose #6233 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:17 verbose #6234 > >
00:04:17 verbose #6235 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:17 verbose #6236 > > nominal arg_matches =
00:04:17 verbose #6237 > >     `(
00:04:17 verbose #6238 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:04:17 verbose #6239 > > Fable.Core.Emit(\"clap::ArgMatches\")>]]\n#endif\ntype clap_ArgMatches = class
00:04:17 verbose #6240 > > end"
00:04:17 verbose #6241 > >         $'' : $'clap_ArgMatches'
00:04:17 verbose #6242 > >     )
00:04:17 verbose #6243 > >
00:04:17 verbose #6244 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:17 verbose #6245 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:17 verbose #6246 > > │ ### command_get_matches                                                      │
00:04:17 verbose #6247 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:17 verbose #6248 > >
00:04:17 verbose #6249 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:17 verbose #6250 > > inl command_get_matches (command : command) : arg_matches =
00:04:17 verbose #6251 > >     !\\(command, $'"clap::Command::get_matches($0)"')
00:04:18 verbose #6252 > >
00:04:18 verbose #6253 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:18 verbose #6254 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:18 verbose #6255 > > │ ### command_get_matches_from                                                 │
00:04:18 verbose #6256 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:18 verbose #6257 > >
00:04:18 verbose #6258 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:18 verbose #6259 > > inl command_get_matches_from (args : array_base string) (command : command) :
00:04:18 verbose #6260 > > arg_matches =
00:04:18 verbose #6261 > >     inl args = args |> am'.to_vec |> am'.vec_map sm'.to_std_string
00:04:18 verbose #6262 > >     !\\(command, $'"clap::Command::get_matches_from($0, !args)"')
00:04:18 verbose #6263 > >
00:04:18 verbose #6264 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:18 verbose #6265 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:18 verbose #6266 > > │ ### command_args_override_self                                               │
00:04:18 verbose #6267 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:18 verbose #6268 > >
00:04:18 verbose #6269 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:18 verbose #6270 > > inl command_args_override_self (yes : bool) (command : command) : command =
00:04:18 verbose #6271 > >     !\\(command, $'"clap::Command::args_override_self($0, !yes)"')
00:04:18 verbose #6272 > >
00:04:18 verbose #6273 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:18 verbose #6274 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:18 verbose #6275 > > │ ### command_init_arg                                                         │
00:04:18 verbose #6276 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:18 verbose #6277 > >
00:04:18 verbose #6278 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:18 verbose #6279 > > inl command_init_arg (long, short) fn command =
00:04:18 verbose #6280 > >     command
00:04:18 verbose #6281 > >     |> command_arg (
00:04:18 verbose #6282 > >         new_arg ##long
00:04:18 verbose #6283 > >         |> arg_short short
00:04:18 verbose #6284 > >         |> arg_long ##long
00:04:18 verbose #6285 > >         |> fn
00:04:18 verbose #6286 > >     )
00:04:18 verbose #6287 > >
00:04:18 verbose #6288 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:18 verbose #6289 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:18 verbose #6290 > > │ ### matches_get_one                                                          │
00:04:18 verbose #6291 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:18 verbose #6292 > >
00:04:18 verbose #6293 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:18 verbose #6294 > > inl matches_get_one forall t. (x : string) (matches : arg_matches) :
00:04:18 verbose #6295 > > optionm'.option' t =
00:04:18 verbose #6296 > >     inl x = join x
00:04:18 verbose #6297 > >     inl x = x |> sm'.as_str
00:04:18 verbose #6298 > >     !\\(matches, $'"clap::ArgMatches::get_one(&$0, !x).cloned()"')
00:04:18 verbose #6299 > >
00:04:18 verbose #6300 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:18 verbose #6301 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:18 verbose #6302 > > │ ### matches_get_flag                                                         │
00:04:18 verbose #6303 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:18 verbose #6304 > >
00:04:18 verbose #6305 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:18 verbose #6306 > > inl matches_get_flag (x : string) (matches : arg_matches) : bool =
00:04:18 verbose #6307 > >     inl x = join x
00:04:18 verbose #6308 > >     inl x = x |> sm'.as_str
00:04:18 verbose #6309 > >     !\($'"clap::ArgMatches::get_flag(&!matches, !x)"')
00:04:18 verbose #6310 > >
00:04:18 verbose #6311 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:18 verbose #6312 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:18 verbose #6313 > > │ ### matches_get_many                                                         │
00:04:18 verbose #6314 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:18 verbose #6315 > >
00:04:18 verbose #6316 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:18 verbose #6317 > > inl matches_get_many forall t. (x : string) (matches : arg_matches) :
00:04:18 verbose #6318 > > optionm'.option' (am'.vec t) =
00:04:18 verbose #6319 > >     inl x = join x
00:04:18 verbose #6320 > >     inl x = x |> sm'.as_str
00:04:18 verbose #6321 > >     !\\(matches, $'"clap::ArgMatches::get_many(&$0, !x).map(|x|
00:04:18 verbose #6322 > > x.cloned().into_iter().collect())"')
00:04:18 verbose #6323 > >
00:04:18 verbose #6324 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:18 verbose #6325 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:18 verbose #6326 > > │ ### matches_get_occurrences                                                  │
00:04:18 verbose #6327 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:18 verbose #6328 > >
00:04:18 verbose #6329 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:18 verbose #6330 > > inl matches_get_occurrences (x : string) (matches : arg_matches) :
00:04:18 verbose #6331 > > optionm'.option' (array_base sm'.std_string) =
00:04:18 verbose #6332 > >     inl x = join x
00:04:18 verbose #6333 > >     inl x = x |> sm'.as_str
00:04:18 verbose #6334 > >     !\($'"clap::ArgMatches::get_occurrences(&!matches, !x).cloned()"')
00:04:18 verbose #6335 > >
00:04:18 verbose #6336 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:18 verbose #6337 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:18 verbose #6338 > > │ ### matches_subcommand                                                       │
00:04:18 verbose #6339 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:18 verbose #6340 > >
00:04:18 verbose #6341 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:18 verbose #6342 > > inl matches_subcommand (matches : arg_matches) : optionm'.option'
00:04:18 verbose #6343 > > (sm'.std_string * arg_matches) =
00:04:18 verbose #6344 > >     !\\((matches, sm'.ref_to_std_string),
00:04:18 verbose #6345 > > $'"clap::ArgMatches::subcommand(Box::leak(Box::new($0))).map(|(a, b)| ($1(a),
00:04:18 verbose #6346 > > b.clone()))"')
00:04:18 verbose #6347 > >
00:04:18 verbose #6348 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:18 verbose #6349 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:18 verbose #6350 > > │ ### matches_values_of                                                        │
00:04:18 verbose #6351 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:18 verbose #6352 > >
00:04:18 verbose #6353 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:18 verbose #6354 > > inl matches_values_of (x : string) (matches : arg_matches) : array_base
00:04:18 verbose #6355 > > sm'.std_string =
00:04:18 verbose #6356 > >     !\\((matches, x), $'"clap::ArgMatches::values_of($0, &*$1)"')
00:04:19 verbose #6357 > >
00:04:19 verbose #6358 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:19 verbose #6359 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:19 verbose #6360 > > │ ### command_subcommand_required                                              │
00:04:19 verbose #6361 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:19 verbose #6362 > >
00:04:19 verbose #6363 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:19 verbose #6364 > > inl command_subcommand_required (value : bool) (command : command) : command =
00:04:19 verbose #6365 > >     !\\(command, $'"clap::Command::subcommand_required($0, !value)"')
00:04:19 verbose #6366 > >
00:04:19 verbose #6367 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:19 verbose #6368 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:19 verbose #6369 > > │ ### command_subcommand                                                       │
00:04:19 verbose #6370 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:19 verbose #6371 > >
00:04:19 verbose #6372 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:19 verbose #6373 > > inl command_subcommand (subcommand : command) (command : command) : command =
00:04:19 verbose #6374 > >     !\\(command, $'"clap::Command::subcommand($0, !subcommand)"')
00:04:19 verbose #6375 > >
00:04:19 verbose #6376 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:19 verbose #6377 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:19 verbose #6378 > > │ ### value_parser_possible_values                                             │
00:04:19 verbose #6379 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:19 verbose #6380 > >
00:04:19 verbose #6381 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:19 verbose #6382 > > inl value_parser_possible_values (values : array_base string) : value_parser =
00:04:19 verbose #6383 > >     inl values =
00:04:19 verbose #6384 > >         values
00:04:19 verbose #6385 > >         |> am'.to_vec
00:04:19 verbose #6386 > >         |> am'.vec_map (sm'.to_std_string >> rust.new_box >> rust.box_leak >>
00:04:19 verbose #6387 > > new_possible_value)
00:04:19 verbose #6388 > >     !\\(values,
00:04:19 verbose #6389 > > $'"Into::<clap::builder::ValueParser>::into(clap::builder::PossibleValuesParser:
00:04:19 verbose #6390 > > :new($0))"')
00:04:19 verbose #6391 > >
00:04:19 verbose #6392 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:19 verbose #6393 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:19 verbose #6394 > > │ ### arg_union                                                                │
00:04:19 verbose #6395 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:19 verbose #6396 > >
00:04:19 verbose #6397 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:19 verbose #6398 > > inl arg_union forall union_type. (fn : union_type -> ()) (arg : arg) : arg =
00:04:19 verbose #6399 > >     arg
00:04:19 verbose #6400 > >     |> arg_value_parser (
00:04:19 verbose #6401 > >         real reflection.get_union_fields_untag `union_type ()
00:04:19 verbose #6402 > >         |> fun x => x : _ (string * union_type)
00:04:19 verbose #6403 > >         |> listm.map fst
00:04:19 verbose #6404 > >         |> listm'.box
00:04:19 verbose #6405 > >         |> listm'.to_array'
00:04:19 verbose #6406 > >         |> value_parser_possible_values
00:04:19 verbose #6407 > >     )
00:04:19 verbose #6408 > >
00:04:19 verbose #6409 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:19 verbose #6410 > > //// test
00:04:19 verbose #6411 > > ///! rust -d clap
00:04:19 verbose #6412 > >
00:04:19 verbose #6413 > > ##"command"
00:04:19 verbose #6414 > > |> new_command
00:04:19 verbose #6415 > > |> command_init_arg ("trace-level", 't') (
00:04:19 verbose #6416 > >     real arg_union `trace_level ignore
00:04:19 verbose #6417 > > )
00:04:19 verbose #6418 > > |> command_get_matches_from ;[[ "_"; "--trace-level"; "Critical" ]]
00:04:19 verbose #6419 > > |> matches_get_one "trace-level"
00:04:19 verbose #6420 > > |> optionm'.unwrap
00:04:19 verbose #6421 > > |> sm'.from_std_string
00:04:19 verbose #6422 > > |> reflection.union_try_pick
00:04:19 verbose #6423 > > |> optionm.value
00:04:19 verbose #6424 > > |> _assert_eq Critical
00:04:26 verbose #6425 > >
00:04:26 verbose #6426 > > ╭─[ 7.36s - return value ]─────────────────────────────────────────────────────╮
00:04:26 verbose #6427 > > │ __assert_eq / actual: US1_4 / expected: US1_4                                │
00:04:26 verbose #6428 > > │                                                                              │
00:04:26 verbose #6429 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:26 verbose #6430 > >
00:04:26 verbose #6431 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:26 verbose #6432 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:26 verbose #6433 > > │ ### command_debug_assert                                                     │
00:04:26 verbose #6434 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:26 verbose #6435 > >
00:04:26 verbose #6436 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:26 verbose #6437 > > inl command_debug_assert (command : command) : () =
00:04:26 verbose #6438 > >     !\\(command, $'"clap::Command::debug_assert($0)"')
00:04:26 verbose #6439 > >
00:04:26 verbose #6440 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:26 verbose #6441 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:26 verbose #6442 > > │ ## fsharp                                                                    │
00:04:26 verbose #6443 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:26 verbose #6444 > >
00:04:26 verbose #6445 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:26 verbose #6446 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:26 verbose #6447 > > │ ### process                                                                  │
00:04:26 verbose #6448 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:26 verbose #6449 > >
00:04:26 verbose #6450 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:26 verbose #6451 > > nominal process = $'System.Diagnostics.Process'
00:04:27 verbose #6452 > >
00:04:27 verbose #6453 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:27 verbose #6454 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:27 verbose #6455 > > │ ### process_start_info                                                       │
00:04:27 verbose #6456 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:27 verbose #6457 > >
00:04:27 verbose #6458 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:27 verbose #6459 > > nominal process_start_info = $'System.Diagnostics.ProcessStartInfo'
00:04:27 verbose #6460 > >
00:04:27 verbose #6461 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:27 verbose #6462 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:27 verbose #6463 > > │ ### data_received_event_args                                                 │
00:04:27 verbose #6464 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:27 verbose #6465 > >
00:04:27 verbose #6466 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:27 verbose #6467 > > nominal data_received_event_args = $'System.Diagnostics.DataReceivedEventArgs'
00:04:27 verbose #6468 > >
00:04:27 verbose #6469 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:27 verbose #6470 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:27 verbose #6471 > > │ ### new_process                                                              │
00:04:27 verbose #6472 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:27 verbose #6473 > >
00:04:27 verbose #6474 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:27 verbose #6475 > > inl new_process (process_start_info : process_start_info) : process =
00:04:27 verbose #6476 > >     $'new `process (StartInfo = !process_start_info)'
00:04:27 verbose #6477 > >
00:04:27 verbose #6478 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:27 verbose #6479 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:27 verbose #6480 > > │ ### process_start                                                            │
00:04:27 verbose #6481 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:27 verbose #6482 > >
00:04:27 verbose #6483 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:27 verbose #6484 > > inl process_start (process : process) : bool =
00:04:27 verbose #6485 > >     $'!process.Start' ()
00:04:27 verbose #6486 > >
00:04:27 verbose #6487 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:27 verbose #6488 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:27 verbose #6489 > > │ ### process_exit_code                                                        │
00:04:27 verbose #6490 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:27 verbose #6491 > >
00:04:27 verbose #6492 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:27 verbose #6493 > > inl process_exit_code (process : process) : i32 =
00:04:27 verbose #6494 > >     $'!process.ExitCode'
00:04:27 verbose #6495 > >
00:04:27 verbose #6496 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:27 verbose #6497 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:27 verbose #6498 > > │ ### process_id                                                               │
00:04:27 verbose #6499 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:27 verbose #6500 > >
00:04:27 verbose #6501 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:27 verbose #6502 > > inl process_id (process : process) : i32 =
00:04:27 verbose #6503 > >     $'!process.Id'
00:04:27 verbose #6504 > >
00:04:27 verbose #6505 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:27 verbose #6506 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:27 verbose #6507 > > │ ### process_has_exited                                                       │
00:04:27 verbose #6508 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:27 verbose #6509 > >
00:04:27 verbose #6510 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:27 verbose #6511 > > inl process_has_exited (process : process) : bool =
00:04:27 verbose #6512 > >     run_target function
00:04:27 verbose #6513 > >         | Fsharp (Native) => fun () =>
00:04:27 verbose #6514 > >             $'!process.HasExited'
00:04:27 verbose #6515 > >         | _ => fun () => null ()
00:04:27 verbose #6516 > >
00:04:27 verbose #6517 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:27 verbose #6518 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:27 verbose #6519 > > │ ### process_kill                                                             │
00:04:27 verbose #6520 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:27 verbose #6521 > >
00:04:27 verbose #6522 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:27 verbose #6523 > > inl process_kill (process : process) : () =
00:04:27 verbose #6524 > >     run_target function
00:04:27 verbose #6525 > >         | Fsharp (Native) => fun () =>
00:04:27 verbose #6526 > >             $'!process.Kill' ()
00:04:27 verbose #6527 > >         | _ => fun () => ()
00:04:27 verbose #6528 > >
00:04:27 verbose #6529 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:27 verbose #6530 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:27 verbose #6531 > > │ ### process_begin_error_read_line                                            │
00:04:27 verbose #6532 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:27 verbose #6533 > >
00:04:27 verbose #6534 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:27 verbose #6535 > > inl process_begin_error_read_line (process : process) : () =
00:04:27 verbose #6536 > >     $'!process.BeginErrorReadLine' ()
00:04:28 verbose #6537 > >
00:04:28 verbose #6538 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:28 verbose #6539 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:28 verbose #6540 > > │ ### process_begin_output_read_line                                           │
00:04:28 verbose #6541 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:28 verbose #6542 > >
00:04:28 verbose #6543 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:28 verbose #6544 > > inl process_begin_output_read_line (process : process) : () =
00:04:28 verbose #6545 > >     $'!process.BeginOutputReadLine' ()
00:04:28 verbose #6546 > >
00:04:28 verbose #6547 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:28 verbose #6548 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:28 verbose #6549 > > │ ### process_add_output_data_received                                         │
00:04:28 verbose #6550 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:28 verbose #6551 > >
00:04:28 verbose #6552 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:28 verbose #6553 > > inl process_add_output_data_received fn (process : process) : () =
00:04:28 verbose #6554 > >     $'!process.OutputDataReceived.Add !fn '
00:04:28 verbose #6555 > >
00:04:28 verbose #6556 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:28 verbose #6557 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:28 verbose #6558 > > │ ### process_add_error_data_received                                          │
00:04:28 verbose #6559 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:28 verbose #6560 > >
00:04:28 verbose #6561 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:28 verbose #6562 > > inl process_add_error_data_received fn (process : process) : () =
00:04:28 verbose #6563 > >     $'!process.ErrorDataReceived.Add !fn '
00:04:28 verbose #6564 > >
00:04:28 verbose #6565 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:28 verbose #6566 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:28 verbose #6567 > > │ ### process_wait_for_exit_async                                              │
00:04:28 verbose #6568 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:28 verbose #6569 > >
00:04:28 verbose #6570 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:28 verbose #6571 > > inl process_wait_for_exit_async (ct : threading.cancellation_token) (process :
00:04:28 verbose #6572 > > process) : async.task () =
00:04:28 verbose #6573 > >     $'!process.WaitForExitAsync !ct '
00:04:28 verbose #6574 > >
00:04:28 verbose #6575 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:28 verbose #6576 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:28 verbose #6577 > > │ ### event_data                                                               │
00:04:28 verbose #6578 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:28 verbose #6579 > >
00:04:28 verbose #6580 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:28 verbose #6581 > > inl event_data (e : data_received_event_args) : string =
00:04:28 verbose #6582 > >     $'!e.Data'
00:04:28 verbose #6583 > >
00:04:28 verbose #6584 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:28 verbose #6585 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:28 verbose #6586 > > │ ### execute_with_options_async                                               │
00:04:28 verbose #6587 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:28 verbose #6588 > >
00:04:28 verbose #6589 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:28 verbose #6590 > > let execute_with_options_async (options : execution_options) : _ (i32 * string)
00:04:28 verbose #6591 > > =
00:04:28 verbose #6592 > >     run_target function
00:04:28 verbose #6593 > >         | Fsharp (Native) => fun () =>
00:04:28 verbose #6594 > >             fun () =>
00:04:28 verbose #6595 > >                 inl file_name, arguments = options.command |> split_command |>
00:04:28 verbose #6596 > > resultm.get
00:04:28 verbose #6597 > >                 inl working_directory = options.working_directory |>
00:04:28 verbose #6598 > > optionm'.unbox |> optionm'.default_value ""
00:04:28 verbose #6599 > >
00:04:28 verbose #6600 > >                 trace Debug
00:04:28 verbose #6601 > >                     fun () => $'$"runtime.execute_with_options_async"'
00:04:28 verbose #6602 > >                     fun () => { options }
00:04:28 verbose #6603 > >
00:04:28 verbose #6604 > >                 inl utf8 = sm'.encoding_utf8 ()
00:04:28 verbose #6605 > >                 inl arguments = arguments |> optionm'.default_value ""
00:04:28 verbose #6606 > >
00:04:28 verbose #6607 > >                 $'let start_info = System.Diagnostics.ProcessStartInfo ('
00:04:28 verbose #6608 > >                 $'  Arguments = !arguments,'
00:04:28 verbose #6609 > >                 $'  StandardOutputEncoding = !utf8,'
00:04:28 verbose #6610 > >                 $'  WorkingDirectory = !working_directory,'
00:04:28 verbose #6611 > >                 $'  FileName = !file_name,'
00:04:28 verbose #6612 > >                 $'  CreateNoWindow = true,'
00:04:28 verbose #6613 > >                 $'  RedirectStandardError = true,'
00:04:28 verbose #6614 > >                 $'  RedirectStandardOutput = true,'
00:04:28 verbose #6615 > >                 $'  UseShellExecute = false'
00:04:28 verbose #6616 > >                 $')'
00:04:28 verbose #6617 > >                 inl start_info : process_start_info = $'start_info'
00:04:28 verbose #6618 > >
00:04:28 verbose #6619 > >                 (a options.environment_variables : _ i32 _)
00:04:28 verbose #6620 > >                 |> am.iter fun key, value =>
00:04:28 verbose #6621 > >                     $'!start_info.EnvironmentVariables.[[!key]] <- !value '
00:04:28 verbose #6622 > >
00:04:28 verbose #6623 > >                 inl proc = start_info |> new_process |> use
00:04:28 verbose #6624 > >                 inl output : _ string = threading.new_concurrent_stack ()
00:04:28 verbose #6625 > >
00:04:28 verbose #6626 > >                 inl event error (e : data_received_event_args) = async.new_async
00:04:28 verbose #6627 > > fun () =>
00:04:28 verbose #6628 > >                     inl data = e |> event_data
00:04:28 verbose #6629 > >                     if data <> null () then
00:04:28 verbose #6630 > >                         match options.on_line |> optionm'.unbox with
00:04:28 verbose #6631 > >                         | Some on_line =>
00:04:28 verbose #6632 > >                             on_line
00:04:28 verbose #6633 > >                                 {
00:04:28 verbose #6634 > >                                     process_id = proc |> process_id
00:04:28 verbose #6635 > >                                     line = data
00:04:28 verbose #6636 > >                                     error = error
00:04:28 verbose #6637 > >                                 }
00:04:28 verbose #6638 > >                             |> async.do
00:04:28 verbose #6639 > >                         | None => ()
00:04:28 verbose #6640 > >
00:04:28 verbose #6641 > >                         inl text =
00:04:28 verbose #6642 > >                             if error
00:04:28 verbose #6643 > >                             then $'$"\! {!data}"'
00:04:28 verbose #6644 > >                             else $'$"> {!data}"'
00:04:28 verbose #6645 > >                         if options.trace
00:04:28 verbose #6646 > >                         then trace Verbose (fun () => text) id
00:04:28 verbose #6647 > >                         else text |> console.write_line
00:04:28 verbose #6648 > >
00:04:28 verbose #6649 > >                         inl l = if error then $'"\\u001b[[7;4m"' else ""
00:04:28 verbose #6650 > >                         inl r = if error then $'"\\u001b[[0m"' else ""
00:04:28 verbose #6651 > >                         output |> threading.concurrent_stack_push
00:04:28 verbose #6652 > > $'$"{!l}{!data}{!r}"'
00:04:28 verbose #6653 > >
00:04:28 verbose #6654 > >                 proc |> process_add_output_data_received (event false >>
00:04:28 verbose #6655 > > async.start_immediate)
00:04:28 verbose #6656 > >                 proc |> process_add_error_data_received (event true >>
00:04:28 verbose #6657 > > async.start_immediate)
00:04:28 verbose #6658 > >
00:04:28 verbose #6659 > >                 if proc |> process_start |> not
00:04:28 verbose #6660 > >                 then failwith $'$"runtime.execute_with_options_async
00:04:28 verbose #6661 > > process_start error"'
00:04:28 verbose #6662 > >
00:04:28 verbose #6663 > >                 proc |> process_begin_error_read_line
00:04:28 verbose #6664 > >                 proc |> process_begin_output_read_line
00:04:28 verbose #6665 > >
00:04:28 verbose #6666 > >                 inl ct =
00:04:28 verbose #6667 > >                     options.cancellation_token
00:04:28 verbose #6668 > >                     |> optionm'.unbox
00:04:28 verbose #6669 > >                     |> optionm'.default_with threading.token_none
00:04:28 verbose #6670 > >                     |> async.merge_cancellation_token_with_default_async
00:04:28 verbose #6671 > >                     |> async.let'
00:04:28 verbose #6672 > >
00:04:28 verbose #6673 > >                 ct |> threading.token_register fun () =>
00:04:28 verbose #6674 > >                     if proc |> process_has_exited |> not
00:04:28 verbose #6675 > >                     then proc |> process_kill
00:04:28 verbose #6676 > >                 |> use
00:04:28 verbose #6677 > >                 |> ignore
00:04:28 verbose #6678 > >
00:04:28 verbose #6679 > >                 inl exit_code : i32 =
00:04:28 verbose #6680 > >                     fun () =>
00:04:28 verbose #6681 > >                         try_unit
00:04:28 verbose #6682 > >                             fun () =>
00:04:28 verbose #6683 > >                                 proc
00:04:28 verbose #6684 > >                                 |> process_wait_for_exit_async ct
00:04:28 verbose #6685 > >                                 |> async.await_task
00:04:28 verbose #6686 > >                                 |> async.do
00:04:28 verbose #6687 > >                                 proc |> process_exit_code |> return
00:04:28 verbose #6688 > >                             fun ex =>
00:04:28 verbose #6689 > >                                 // with :?
00:04:28 verbose #6690 > > System.Threading.Tasks.TaskCanceledException as ex =>
00:04:28 verbose #6691 > >                                 inl ex' = ex |> sm'.format_exception
00:04:28 verbose #6692 > >                                 output |> threading.concurrent_stack_push ex'
00:04:28 verbose #6693 > >                                 inl ex : async.task_canceled_exception = ex |>
00:04:28 verbose #6694 > > unbox
00:04:28 verbose #6695 > >                                 trace Warning
00:04:28 verbose #6696 > >                                     fun () =>
00:04:28 verbose #6697 > > $'$"runtime.execute_with_options_async / WaitForExitAsync"'
00:04:28 verbose #6698 > >                                     fun () => { ex }
00:04:28 verbose #6699 > >                                 (limit.min : i32) |> return
00:04:28 verbose #6700 > >                     |> async.new_async_unit
00:04:28 verbose #6701 > >                     |> async.let'
00:04:28 verbose #6702 > >
00:04:28 verbose #6703 > >                 inl output =
00:04:28 verbose #6704 > >                     output
00:04:28 verbose #6705 > >                     |> seq.rev''
00:04:28 verbose #6706 > >                     |> fun x => x : seq.seq' string
00:04:28 verbose #6707 > >                     |> sm'.concat "\n"
00:04:28 verbose #6708 > >
00:04:28 verbose #6709 > >                 trace Debug
00:04:28 verbose #6710 > >                     fun () => $'$"runtime.execute_with_options_async"'
00:04:28 verbose #6711 > >                     fun () => { exit_code output_length = output |> sm'.length :
00:04:28 verbose #6712 > > i32 }
00:04:28 verbose #6713 > >
00:04:28 verbose #6714 > >                 (exit_code, output) |> return
00:04:28 verbose #6715 > >             |> async.new_async_unit
00:04:28 verbose #6716 > >         | _ => fun () =>
00:04:28 verbose #6717 > >             global "#if FABLE_COMPILER\n[[<CompilationRepresentation
00:04:28 verbose #6718 > > (CompilationRepresentationFlags.ModuleSuffix)>]]\nmodule System =\n module
00:04:28 verbose #6719 > > Diagnostics =\n  type Process = unit\n  type DataReceivedEventArgs =
00:04:28 verbose #6720 > > unit\n#endif"
00:04:28 verbose #6721 > >             null ()
00:04:28 verbose #6722 > >
00:04:28 verbose #6723 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:28 verbose #6724 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:28 verbose #6725 > > │ ### execute_async                                                            │
00:04:28 verbose #6726 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:28 verbose #6727 > >
00:04:28 verbose #6728 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:28 verbose #6729 > > inl execute_async command =
00:04:28 verbose #6730 > >     execution_options fun x => { x with
00:04:28 verbose #6731 > >         command = command
00:04:28 verbose #6732 > >     }
00:04:28 verbose #6733 > >     |> execute_with_options_async
00:04:28 verbose #6734 > >
00:04:28 verbose #6735 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:28 verbose #6736 > > //// test
00:04:28 verbose #6737 > >
00:04:28 verbose #6738 > > inl content = "╭─[[ 你好,世界!こんにちは世界! ]]─╮"
00:04:28 verbose #6739 > > fun () =>
00:04:28 verbose #6740 > >     inl file_name = "test.txt"
00:04:28 verbose #6741 > >     inl temp_dir, disposable =
00:04:28 verbose #6742 > >         (file_name, content)
00:04:28 verbose #6743 > >         |> sm'.format_debug
00:04:28 verbose #6744 > >         |> crypto.hash_text
00:04:28 verbose #6745 > >         |> file_system.create_temp_dir'
00:04:28 verbose #6746 > >     disposable |> use |> ignore
00:04:28 verbose #6747 > >
00:04:28 verbose #6748 > >     inl path = temp_dir </> file_name
00:04:28 verbose #6749 > >
00:04:28 verbose #6750 > >     inl exit_code, result = execute_async $'\@$"pwsh -c ""Get-Content
00:04:28 verbose #6751 > > {!path}"""' |> async.let'
00:04:28 verbose #6752 > >     exit_code |> join _assert_eq 1
00:04:28 verbose #6753 > >     result |> _assert_string_contains "not exist"
00:04:28 verbose #6754 > >
00:04:28 verbose #6755 > >     content |> file_system.write_all_text_async path |> async.do
00:04:28 verbose #6756 > >
00:04:28 verbose #6757 > >     execution_options fun x => { x with
00:04:28 verbose #6758 > >         command = $'\@$"cat ""{!file_name}"""'
00:04:28 verbose #6759 > >         working_directory = Some temp_dir |> optionm'.box
00:04:28 verbose #6760 > >     }
00:04:28 verbose #6761 > >     |> execute_with_options_async
00:04:28 verbose #6762 > >     |> async.let'
00:04:28 verbose #6763 > >     |> ignore
00:04:28 verbose #6764 > >
00:04:28 verbose #6765 > >     execution_options fun x => { x with
00:04:28 verbose #6766 > >         command = $'\@$"pwsh -c ""[[System.Console]]::OutputEncoding =
00:04:28 verbose #6767 > > [[System.Text.Encoding]]::UTF8; Get-Content {!file_name}"""'
00:04:28 verbose #6768 > >         working_directory = Some temp_dir |> optionm'.box
00:04:28 verbose #6769 > >     }
00:04:28 verbose #6770 > >     |> execute_with_options_async
00:04:28 verbose #6771 > >     |> async.return_await
00:04:28 verbose #6772 > > |> async.new_async_unit
00:04:28 verbose #6773 > > |> async.run_with_timeout 10000
00:04:28 verbose #6774 > > |> function
00:04:28 verbose #6775 > >     | Some (exit_code, output) =>
00:04:28 verbose #6776 > >         exit_code |> join _assert_eq 0i32
00:04:28 verbose #6777 > >         output |> join _assert_eq content
00:04:28 verbose #6778 > >         true
00:04:28 verbose #6779 > >     | _ => false
00:04:28 verbose #6780 > > |> _assert_eq true
00:04:32 verbose #6781 > >
00:04:32 verbose #6782 > > ╭─[ 4.05s - stdout ]───────────────────────────────────────────────────────────╮
00:04:32 verbose #6783 > > │ 00:00:00   debug #1 runtime.execute_with_options_async / { options = {  │
00:04:32 verbose #6784 > > │ command = pwsh -c "Get-Content                                               │
00:04:32 verbose #6785 > > │ /tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9/tes │
00:04:32 verbose #6786 > > │ t.txt"; cancellation_token = None; environment_variables = [||]; on_line =   │
00:04:32 verbose #6787 > > │ None; stdin = None; trace = true; working_directory = None } }               │
00:04:32 verbose #6788 > > │ 00:00:00 verbose #2 ! Get-Content: Cannot find path           │
00:04:32 verbose #6789 > > │ '/tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9/te │
00:04:32 verbose #6790 > > │ st.txt' because it does not exist.                                         │
00:04:32 verbose #6791 > > │ 00:00:00   debug #3 runtime.execute_with_options_async / { exit_code =  │
00:04:32 verbose #6792 > > │ 1; output_length = 168 }                                                     │
00:04:32 verbose #6793 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:04:32 verbose #6794 > > │ __assert_string_contains / actual: "not exist" / expected: "38;5;2m│
00:04:32 verbose #6795 > > │ 31;1mGet-Content: Cannot find path                                      │
00:04:32 verbose #6796 > > │ '/tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9/te │
00:04:32 verbose #6797 > > │ st.txt' because it does not exist."                                      │
00:04:32 verbose #6798 > > │ 00:00:00   debug #4 runtime.execute_with_options_async / { options = {  │
00:04:32 verbose #6799 > > │ command = cat "test.txt"; cancellation_token = None; environment_variables = │
00:04:32 verbose #6800 > > │ [||]; on_line = None; stdin = None; trace = true; working_directory = Some   │
00:04:32 verbose #6801 > > │ "/tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9" } │
00:04:32 verbose #6802 > > │ }                                                                            │
00:04:32 verbose #6803 > > │ 00:00:00 verbose #5 > ╭─[ 你好,世界!こんにちは世界! ]─╮              │
00:04:32 verbose #6804 > > │ 00:00:00   debug #6 runtime.execute_with_options_async / { exit_code =  │
00:04:32 verbose #6805 > > │ 0; output_length = 22 }                                                      │
00:04:32 verbose #6806 > > │ 00:00:00   debug #7 runtime.execute_with_options_async / { options = {  │
00:04:32 verbose #6807 > > │ command = pwsh -c "[System.Console]::OutputEncoding = [                      │
00:04:32 verbose #6808 > > │ System.Text.Encoding]::UTF8; Get-Content test.txt"; cancellation_token =     │
00:04:32 verbose #6809 > > │ None; environment_variables = [||]; on_line = None; stdin = None; trace =    │
00:04:32 verbose #6810 > > │ true; working_directory = Some                                               │
00:04:32 verbose #6811 > > │ "/tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9" } │
00:04:32 verbose #6812 > > │ }                                                                            │
00:04:32 verbose #6813 > > │ 00:00:00 verbose #8 > ╭─[ 你好,世界!こんにちは世界! ]─╮              │
00:04:32 verbose #6814 > > │ 00:00:00   debug #9 runtime.execute_with_options_async / { exit_code =  │
00:04:32 verbose #6815 > > │ 0; output_length = 22 }                                                      │
00:04:32 verbose #6816 > > │ __assert_eq / actual: 0 / expected: 0                                        │
00:04:32 verbose #6817 > > │ __assert_eq / actual: "╭─[ 你好,世界!こんにちは世界! ]─╮" / expected: "╭─ │
00:04:32 verbose #6818 > > │ [ 你好,世界!こんにちは世界! ]─╮"                                          │
00:04:32 verbose #6819 > > │ __assert_eq / actual: true / expected: true                                  │
00:04:32 verbose #6820 > > │                                                                              │
00:04:32 verbose #6821 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:32 verbose #6822 > >
00:04:32 verbose #6823 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:32 verbose #6824 > > //// test
00:04:32 verbose #6825 > >
00:04:32 verbose #6826 > > fun () =>
00:04:32 verbose #6827 > >     inl file_name = "test.txt"
00:04:32 verbose #6828 > >     inl text = "0"
00:04:32 verbose #6829 > >
00:04:32 verbose #6830 > >     inl temp_dir, disposable =
00:04:32 verbose #6831 > >         (file_name, text)
00:04:32 verbose #6832 > >         |> sm'.format_debug
00:04:32 verbose #6833 > >         |> crypto.hash_text
00:04:32 verbose #6834 > >         |> file_system.create_temp_dir'
00:04:32 verbose #6835 > >     disposable |> use |> ignore
00:04:32 verbose #6836 > >     inl path = temp_dir </> file_name
00:04:32 verbose #6837 > >     text |> file_system.write_all_text_async path |> async.do
00:04:32 verbose #6838 > >
00:04:32 verbose #6839 > >     inl cts = threading.new_cancellation_token_source ()
00:04:32 verbose #6840 > >     trace Debug (fun () => "1") id
00:04:32 verbose #6841 > >     inl result =
00:04:32 verbose #6842 > >         execution_options fun x => { x with
00:04:32 verbose #6843 > >             command = $'\@$"pwsh -c ""Get-Content {!path}"""'
00:04:32 verbose #6844 > >             cancellation_token = cts |> threading.cancellation_source_token |>
00:04:32 verbose #6845 > > Some |> optionm'.box
00:04:32 verbose #6846 > >         }
00:04:32 verbose #6847 > >         |> execute_with_options_async
00:04:32 verbose #6848 > >         |> async.start_child
00:04:32 verbose #6849 > >         |> async.let'
00:04:32 verbose #6850 > >     trace Debug (fun () => "2") id
00:04:32 verbose #6851 > >     async.sleep 100 |> async.do
00:04:32 verbose #6852 > >     trace Debug (fun () => "3") id
00:04:32 verbose #6853 > >     cts |> threading.cancellation_source_cancel
00:04:32 verbose #6854 > >     trace Debug (fun () => "4") id
00:04:32 verbose #6855 > >     inl exit_code, output = result |> async.let'
00:04:32 verbose #6856 > >     trace Debug (fun () => "5") id
00:04:32 verbose #6857 > >     (exit_code, output) |> return
00:04:32 verbose #6858 > > |> async.new_async_unit
00:04:32 verbose #6859 > > |> async.run_with_timeout 10000
00:04:32 verbose #6860 > > |> function
00:04:32 verbose #6861 > >     | Some (exit_code, output) =>
00:04:32 verbose #6862 > >         exit_code |> _assert_eq -2147483648i32
00:04:32 verbose #6863 > >         output |> _assert_eq (join
00:04:32 verbose #6864 > > "System.Threading.Tasks.TaskCanceledException: A task was canceled.")
00:04:32 verbose #6865 > >         true
00:04:32 verbose #6866 > >     | _ => false
00:04:32 verbose #6867 > > |> _assert_eq true
00:04:36 verbose #6868 > >
00:04:36 verbose #6869 > > ╭─[ 3.19s - stdout ]───────────────────────────────────────────────────────────╮
00:04:36 verbose #6870 > > │ 00:00:00   debug #1 1                                                   │
00:04:36 verbose #6871 > > │ 00:00:00   debug #2 2                                                   │
00:04:36 verbose #6872 > > │ 00:00:00   debug #3 runtime.execute_with_options_async / { options = {  │
00:04:36 verbose #6873 > > │ command = pwsh -c "Get-Content                                               │
00:04:36 verbose #6874 > > │ /tmp/!create_temp_path_/dotnet-repl/613830ed-016e-d959-8d21-02dc1c63c252/tes │
00:04:36 verbose #6875 > > │ t.txt"; cancellation_token = Some System.Threading.CancellationToken;        │
00:04:36 verbose #6876 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:04:36 verbose #6877 > > │ working_directory = None } }                                                 │
00:04:36 verbose #6878 > > │ 00:00:00   debug #4 3                                                   │
00:04:36 verbose #6879 > > │ 00:00:00   debug #5 4                                                   │
00:04:36 verbose #6880 > > │ 00:00:00 warning #6 runtime.execute_with_options_async /                │
00:04:36 verbose #6881 > > │ WaitForExitAsync / { ex = System.Threading.Tasks.TaskCanceledException: A    │
00:04:36 verbose #6882 > > │ task was canceled. }                                                         │
00:04:36 verbose #6883 > > │ 00:00:00   debug #7 runtime.execute_with_options_async / { exit_code =  │
00:04:36 verbose #6884 > > │ -2147483648; output_length = 66 }                                            │
00:04:36 verbose #6885 > > │ 00:00:00   debug #8 5                                                   │
00:04:36 verbose #6886 > > │ __assert_eq / actual: -2147483648 / expected: -2147483648                    │
00:04:36 verbose #6887 > > │ __assert_eq / actual: "System.Threading.Tasks.TaskCanceledException: A task  │
00:04:36 verbose #6888 > > │ was canceled." / expected: "System.Threading.Tasks.TaskCanceledException: A  │
00:04:36 verbose #6889 > > │ task was canceled."                                                          │
00:04:36 verbose #6890 > > │ __assert_eq / actual: true / expected: true                                  │
00:04:36 verbose #6891 > > │                                                                              │
00:04:36 verbose #6892 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:36 verbose #6893 > >
00:04:36 verbose #6894 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:36 verbose #6895 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:36 verbose #6896 > > │ ### current_process_kill                                                     │
00:04:36 verbose #6897 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:36 verbose #6898 > >
00:04:36 verbose #6899 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:36 verbose #6900 > > inl current_process_kill () =
00:04:36 verbose #6901 > >     run_target function
00:04:36 verbose #6902 > >         | Fsharp (Native) => fun () =>
00:04:36 verbose #6903 > >             inl fn () =
00:04:36 verbose #6904 > >                 run_target function
00:04:36 verbose #6905 > >                     | Fsharp (Native) => fun () =>
00:04:36 verbose #6906 > >                         trace Warning (fun () => "runtime.current_process_kill
00:04:36 verbose #6907 > > exiting... 3") id
00:04:36 verbose #6908 > >                         $'System.Threading.Thread.Sleep 300'
00:04:36 verbose #6909 > >                         trace Warning (fun () => "runtime.current_process_kill
00:04:36 verbose #6910 > > exiting... 2") id
00:04:36 verbose #6911 > >                         $'System.Console.Out.Flush ()'
00:04:36 verbose #6912 > >                         $'System.Threading.Thread.Sleep 60'
00:04:36 verbose #6913 > >                         trace Warning (fun () => "runtime.current_process_kill
00:04:36 verbose #6914 > > exiting... 1") id
00:04:36 verbose #6915 > >                         $'System.Diagnostics.Process.GetCurrentProcess().Kill
00:04:36 verbose #6916 > > ()' : ()
00:04:36 verbose #6917 > >                     | _ => fun () => ()
00:04:36 verbose #6918 > >             inl thread : threading.thread = $'new System.Threading.Thread (!fn)'
00:04:36 verbose #6919 > >             thread |> $'_.Start()' : ()
00:04:36 verbose #6920 > >         | _ => fun () => ()
00:04:36 verbose #6921 > >
00:04:36 verbose #6922 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:36 verbose #6923 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:36 verbose #6924 > > │ ### gc_collect                                                               │
00:04:36 verbose #6925 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:36 verbose #6926 > >
00:04:36 verbose #6927 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:36 verbose #6928 > > inl gc_collect () =
00:04:36 verbose #6929 > >     run_target function
00:04:36 verbose #6930 > >         | Fsharp _ => fun () => $'System.GC.Collect' () : ()
00:04:36 verbose #6931 > >         | Python _ => fun () =>
00:04:36 verbose #6932 > >             backend_switch {
00:04:36 verbose #6933 > >                 Python = fun () => global "import gc"
00:04:36 verbose #6934 > >             }
00:04:36 verbose #6935 > >             ($'gc.collect()' : int) |> ignore
00:04:36 verbose #6936 > >         | _ => fun () => ()
00:04:36 verbose #6937 > >
00:04:36 verbose #6938 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:36 verbose #6939 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:36 verbose #6940 > > │ ## runtime                                                                   │
00:04:36 verbose #6941 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:36 verbose #6942 > >
00:04:36 verbose #6943 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:36 verbose #6944 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:36 verbose #6945 > > │ ### execute_with_options                                                     │
00:04:36 verbose #6946 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:36 verbose #6947 > >
00:04:36 verbose #6948 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:36 verbose #6949 > > let execute_with_options (options : execution_options) : i32 * string =
00:04:36 verbose #6950 > >     run_target function
00:04:36 verbose #6951 > >         | Fsharp (Native) => fun () =>
00:04:36 verbose #6952 > >             options |> execute_with_options_async |> async.run_synchronously
00:04:36 verbose #6953 > >         | Rust (Native) => fun () =>
00:04:36 verbose #6954 > >             inl command = join options.command
00:04:36 verbose #6955 > >             inl file_name, arguments = command |> split_command |> resultm.get
00:04:36 verbose #6956 > >             inl arguments =
00:04:36 verbose #6957 > >                 arguments
00:04:36 verbose #6958 > >                 |> optionm'.default_value ""
00:04:36 verbose #6959 > >                 |> split_args
00:04:36 verbose #6960 > >                 |> resultm.get
00:04:36 verbose #6961 > >                 |> am'.to_vec
00:04:36 verbose #6962 > >                 |> am'.vec_map sm'.to_std_string
00:04:36 verbose #6963 > >
00:04:36 verbose #6964 > >             trace Debug
00:04:36 verbose #6965 > >                 fun () => $'$"runtime.execute_with_options"'
00:04:36 verbose #6966 > >                 fun () => { file_name arguments options }
00:04:36 verbose #6967 > >
00:04:36 verbose #6968 > >             fun () =>
00:04:36 verbose #6969 > >                 fun () =>
00:04:36 verbose #6970 > >                     file_name
00:04:36 verbose #6971 > >                     |> new_process_command
00:04:36 verbose #6972 > >                     |> process_command_args arguments
00:04:36 verbose #6973 > >                     |> process_command_stdout (process_stdio_piped ())
00:04:36 verbose #6974 > >                     |> process_command_stderr (process_stdio_piped ())
00:04:36 verbose #6975 > >                     |> process_command_stdin (process_stdio_piped ())
00:04:36 verbose #6976 > >                     |> fun command =>
00:04:36 verbose #6977 > >                         match options.working_directory |> optionm'.unbox with
00:04:36 verbose #6978 > >                         | Some working_directory =>
00:04:36 verbose #6979 > >                             command
00:04:36 verbose #6980 > >                             |> process_command_current_dir working_directory
00:04:36 verbose #6981 > >                         | None => command
00:04:36 verbose #6982 > >                     |> fun command =>
00:04:36 verbose #6983 > >                         match options.environment_variables with
00:04:36 verbose #6984 > >                         | ;[[]] => command
00:04:36 verbose #6985 > >                         | vars =>
00:04:36 verbose #6986 > >                             (command, vars |> am'.to_vec)
00:04:36 verbose #6987 > >                             ||> am'.vec_fold' fun command (key, value) =>
00:04:36 verbose #6988 > >                                 command |> process_command_env key value
00:04:36 verbose #6989 > >                     |> process_command_spawn
00:04:36 verbose #6990 > >                     |> resultm.map_error' sm'.format'
00:04:36 verbose #6991 > >                     |> resultm.map' (optionm'.some' >> threading.new_arc_mutex)
00:04:36 verbose #6992 > >                     |> resultm.unbox'
00:04:36 verbose #6993 > >                     |> function
00:04:36 verbose #6994 > >                         | Ok child =>
00:04:36 verbose #6995 > >                             inl stdout =
00:04:36 verbose #6996 > >                                 fun () =>
00:04:36 verbose #6997 > >                                     child
00:04:36 verbose #6998 > >                                     |> threading.arc_mutex_lock
00:04:36 verbose #6999 > >                                     |> resultm.unwrap'
00:04:36 verbose #7000 > >                                     |> threading.mutex_guard_ref_mut
00:04:36 verbose #7001 > >                                     |> optionm'.as_mut
00:04:36 verbose #7002 > >                                     |> optionm'.unwrap
00:04:36 verbose #7003 > >                                     |> process_child_stdout
00:04:36 verbose #7004 > >                                     |> optionm'.take_ref_mut
00:04:36 verbose #7005 > >                                     |> optionm'.unwrap
00:04:36 verbose #7006 > >                                 |> rust.capture
00:04:36 verbose #7007 > >
00:04:36 verbose #7008 > >                             inl stderr =
00:04:36 verbose #7009 > >                                 fun () =>
00:04:36 verbose #7010 > >                                     child
00:04:36 verbose #7011 > >                                     |> threading.arc_mutex_lock
00:04:36 verbose #7012 > >                                     |> resultm.unwrap'
00:04:36 verbose #7013 > >                                     |> threading.mutex_guard_ref_mut
00:04:36 verbose #7014 > >                                     |> optionm'.as_mut
00:04:36 verbose #7015 > >                                     |> optionm'.unwrap
00:04:36 verbose #7016 > >                                     |> process_child_stderr
00:04:36 verbose #7017 > >                                     |> optionm'.take_ref_mut
00:04:36 verbose #7018 > >                                     |> optionm'.unwrap
00:04:36 verbose #7019 > >                                 |> rust.capture
00:04:36 verbose #7020 > >
00:04:36 verbose #7021 > >                             inl stdin =
00:04:36 verbose #7022 > >                                 fun () =>
00:04:36 verbose #7023 > >                                     child
00:04:36 verbose #7024 > >                                     |> threading.arc_mutex_lock
00:04:36 verbose #7025 > >                                     |> resultm.unwrap'
00:04:36 verbose #7026 > >                                     |> threading.mutex_guard_ref_mut
00:04:36 verbose #7027 > >                                     |> optionm'.as_mut
00:04:36 verbose #7028 > >                                     |> optionm'.unwrap
00:04:36 verbose #7029 > >                                     |> process_child_stdin
00:04:36 verbose #7030 > >                                     |> optionm'.take_ref_mut
00:04:36 verbose #7031 > >                                     |> optionm'.unwrap
00:04:36 verbose #7032 > >                                     |> optionm'.some'
00:04:36 verbose #7033 > >                                     |> threading.new_arc_mutex
00:04:36 verbose #7034 > >                                 |> rust.capture
00:04:36 verbose #7035 > >
00:04:36 verbose #7036 > >                             inl channel_sender, channel_receiver =
00:04:36 verbose #7037 > > threading.new_channel ()
00:04:36 verbose #7038 > >                             inl channel_sender'' = channel_sender |>
00:04:36 verbose #7039 > > threading.new_arc_mutex
00:04:36 verbose #7040 > >                             inl channel_sender' = channel_sender |>
00:04:36 verbose #7041 > > threading.new_arc_mutex
00:04:36 verbose #7042 > >                             inl channel_receiver' = channel_receiver |>
00:04:36 verbose #7043 > > threading.new_arc_mutex
00:04:36 verbose #7044 > >
00:04:36 verbose #7045 > >                             inl stdout_handle =
00:04:36 verbose #7046 > >                                 fun () =>
00:04:36 verbose #7047 > >                                     stdout
00:04:36 verbose #7048 > >                                     |> stream.decode_reader_bytes_build
00:04:36 verbose #7049 > >                                     |> stream.new_buf_reader
00:04:36 verbose #7050 > >                                     |> stream.buf_read_lines
00:04:36 verbose #7051 > >                                     |> iter.try_for_each fun lines =>
00:04:36 verbose #7052 > >                                         inl channel_sender'' = channel_sender''
00:04:36 verbose #7053 > > |> rust.clone
00:04:36 verbose #7054 > >                                         lines
00:04:36 verbose #7055 > >                                         |> stdio_line (Ok ()) options.trace
00:04:36 verbose #7056 > > channel_sender''
00:04:36 verbose #7057 > >                                         |> resultm.to_try
00:04:36 verbose #7058 > >                                 |> threading.spawn (1, 0) 1
00:04:36 verbose #7059 > >
00:04:36 verbose #7060 > >                             inl stderr_handle =
00:04:36 verbose #7061 > >                                 fun () =>
00:04:36 verbose #7062 > >                                     stderr
00:04:36 verbose #7063 > >                                     |> stream.decode_reader_bytes_build
00:04:36 verbose #7064 > >                                     |> stream.new_buf_reader
00:04:36 verbose #7065 > >                                     |> stream.buf_read_lines
00:04:36 verbose #7066 > >                                     |> iter.try_for_each fun lines =>
00:04:36 verbose #7067 > >                                         inl channel_sender' = channel_sender' |>
00:04:36 verbose #7068 > > rust.clone
00:04:36 verbose #7069 > >                                         lines
00:04:36 verbose #7070 > >                                         |> stdio_line (Error ()) options.trace
00:04:36 verbose #7071 > > channel_sender'
00:04:36 verbose #7072 > >                                         |> resultm.to_try
00:04:36 verbose #7073 > >                                 |> threading.spawn (1, 0) 1
00:04:36 verbose #7074 > >
00:04:36 verbose #7075 > >                             match options.stdin |> optionm'.unbox with
00:04:36 verbose #7076 > >                             | Some stdin' =>
00:04:36 verbose #7077 > >                                 stdin
00:04:36 verbose #7078 > >                                 |> threading.arc_mutex_lock
00:04:36 verbose #7079 > >                                 |> resultm.unwrap'
00:04:36 verbose #7080 > >                                 |> threading.mutex_guard_ref_mut
00:04:36 verbose #7081 > >                                 |> optionm'.take_ref_mut
00:04:36 verbose #7082 > >                                 |> optionm'.map' threading.new_arc_mutex
00:04:36 verbose #7083 > >                                 |> optionm'.unbox
00:04:36 verbose #7084 > >                                 |> function
00:04:36 verbose #7085 > >                                     | Some stdin =>
00:04:36 verbose #7086 > >                                         stdin |> stdin'
00:04:36 verbose #7087 > >                                         stdin
00:04:36 verbose #7088 > >                                         |> threading.arc_mutex_lock
00:04:36 verbose #7089 > >                                         |> resultm.unwrap'
00:04:36 verbose #7090 > >                                         |> stdin_flush
00:04:36 verbose #7091 > >                                     | None => ()
00:04:36 verbose #7092 > >                             | None => ()
00:04:36 verbose #7093 > >
00:04:36 verbose #7094 > >                             inl output =
00:04:36 verbose #7095 > >                                 child
00:04:36 verbose #7096 > >                                 |> threading.arc_mutex_lock
00:04:36 verbose #7097 > >                                 |> resultm.unwrap'
00:04:36 verbose #7098 > >                                 |> threading.mutex_guard_ref_mut
00:04:36 verbose #7099 > >                                 |> optionm'.take_ref_mut
00:04:36 verbose #7100 > >                                 |> optionm'.unwrap
00:04:36 verbose #7101 > >                                 |> child_wait_with_output
00:04:36 verbose #7102 > >                                 |> resultm.map_error' sm'.format'
00:04:36 verbose #7103 > >
00:04:36 verbose #7104 > >                             [[ stdout_handle; stderr_handle ]]
00:04:36 verbose #7105 > >                             |> am'.new_vec
00:04:36 verbose #7106 > >                             |> am'.vec_for_each' (threading.join' >>
00:04:36 verbose #7107 > > resultm.unwrap' >> resultm.unwrap')
00:04:36 verbose #7108 > >
00:04:36 verbose #7109 > >                             match output |> resultm.unbox with
00:04:36 verbose #7110 > >                             | Ok output =>
00:04:36 verbose #7111 > >                                 inl exit_code =
00:04:36 verbose #7112 > >                                     output
00:04:36 verbose #7113 > >                                     |> process_output_status
00:04:36 verbose #7114 > >                                     |> process_exit_status_code
00:04:36 verbose #7115 > >                                     |> optionm'.unbox
00:04:36 verbose #7116 > >                                 match exit_code with
00:04:36 verbose #7117 > >                                 | Some exit_code => exit_code, None, Some
00:04:36 verbose #7118 > > channel_receiver'
00:04:36 verbose #7119 > >                                 | None =>
00:04:36 verbose #7120 > >                                     -1,
00:04:36 verbose #7121 > >                                     ("runtime.execute_with_options
00:04:36 verbose #7122 > > exit_code=None" |> sm'.to_std_string |> Some),
00:04:36 verbose #7123 > >                                     Some channel_receiver'
00:04:36 verbose #7124 > >                             | Error error =>
00:04:36 verbose #7125 > >                                 trace Critical
00:04:36 verbose #7126 > >                                     fun () => $'$"runtime.execute_with_options
00:04:36 verbose #7127 > > output error"'
00:04:36 verbose #7128 > >                                     fun () => { error }
00:04:36 verbose #7129 > >                                 -2i32, error |> Some, None
00:04:36 verbose #7130 > >                         | Error error =>
00:04:36 verbose #7131 > >                             trace Critical
00:04:36 verbose #7132 > >                                 fun () => $'$"runtime.execute_with_options
00:04:36 verbose #7133 > > child error"'
00:04:36 verbose #7134 > >                                 fun () => { error }
00:04:36 verbose #7135 > >                             -1i32, error |> Some, None
00:04:36 verbose #7136 > >                     |> function
00:04:36 verbose #7137 > >                         | exit_code, std_trace, channel_receiver =>
00:04:36 verbose #7138 > >                             inl std_trace =
00:04:36 verbose #7139 > >                                 channel_receiver
00:04:36 verbose #7140 > >                                 |> optionm'.box
00:04:36 verbose #7141 > >                                 |> optionm'.map' fun channel_receiver =>
00:04:36 verbose #7142 > >                                     channel_receiver
00:04:36 verbose #7143 > >                                     |> threading.arc_mutex_lock
00:04:36 verbose #7144 > >                                     |> resultm.unwrap'
00:04:36 verbose #7145 > >                                     |> iter.iter
00:04:36 verbose #7146 > >                                     |> iter_collect''
00:04:36 verbose #7147 > >                                     |> am'.vec_map sm'.from_std_string
00:04:36 verbose #7148 > >                                     |> am'.from_vec
00:04:36 verbose #7149 > >                                     |> fun x => x : _ i32 _
00:04:36 verbose #7150 > >                                     |> seq.of_array
00:04:36 verbose #7151 > >                                     |> sm'.concat "\n"
00:04:36 verbose #7152 > >                                 |> optionm'.default_value' (
00:04:36 verbose #7153 > >                                     std_trace
00:04:36 verbose #7154 > >                                     |> optionm.map sm'.from_std_string
00:04:36 verbose #7155 > >                                     |> optionm'.default_value ""
00:04:36 verbose #7156 > >                                 )
00:04:36 verbose #7157 > >                             trace Verbose
00:04:36 verbose #7158 > >                                 fun () => $'$"runtime.execute_with_options
00:04:36 verbose #7159 > > result"'
00:04:36 verbose #7160 > >                                 fun () => { exit_code std_trace_length =
00:04:36 verbose #7161 > > std_trace |> sm'.length : i32 }
00:04:36 verbose #7162 > >                             new_pair exit_code std_trace
00:04:36 verbose #7163 > >                 |> capture
00:04:36 verbose #7164 > >             // |> async.new_future_move
00:04:36 verbose #7165 > >             // |> async.block_on
00:04:36 verbose #7166 > >             |> fun x => x ()
00:04:36 verbose #7167 > >             |> from_pair
00:04:36 verbose #7168 > >         | _ => fun () => null ()
00:04:36 verbose #7169 > >
00:04:36 verbose #7170 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:36 verbose #7171 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:36 verbose #7172 > > │ #### execute                                                                 │
00:04:36 verbose #7173 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:36 verbose #7174 > >
00:04:36 verbose #7175 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:36 verbose #7176 > > inl execute command =
00:04:36 verbose #7177 > >     execution_options fun x => { x with
00:04:36 verbose #7178 > >         command = command
00:04:36 verbose #7179 > >     }
00:04:36 verbose #7180 > >     |> execute_with_options
00:04:36 verbose #7181 > >
00:04:36 verbose #7182 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:36 verbose #7183 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:36 verbose #7184 > > │ #### tests                                                                   │
00:04:36 verbose #7185 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:36 verbose #7186 > >
00:04:36 verbose #7187 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:36 verbose #7188 > > //// test
00:04:36 verbose #7189 > > ///! rust -d chrono encoding_rs encoding_rs_io regex sha2
00:04:36 verbose #7190 > >
00:04:36 verbose #7191 > > inl content = "╭─[[ 你好,世界!こんにちは世界! ]]─╮"
00:04:36 verbose #7192 > >
00:04:36 verbose #7193 > > inl file_name = join "test.txt"
00:04:36 verbose #7194 > > inl temp_dir, disposable =
00:04:36 verbose #7195 > >     (file_name, content)
00:04:36 verbose #7196 > >     |> sm'.format_debug
00:04:36 verbose #7197 > >     |> crypto.hash_text
00:04:36 verbose #7198 > >     |> file_system.create_temp_dir'
00:04:36 verbose #7199 > > inl path = temp_dir </> file_name |> file_system.normalize_path
00:04:36 verbose #7200 > > inl exit_code, result =
00:04:36 verbose #7201 > >     execute $'\@$"pwsh -c ""[[IO.File]]::ReadAllText(\'{!path}\')"""'
00:04:36 verbose #7202 > > exit_code |> _assert_eq 1
00:04:36 verbose #7203 > > result |> _assert_string_contains "not find file"
00:04:36 verbose #7204 > >
00:04:36 verbose #7205 > > content |> file_system.write_all_text path
00:04:36 verbose #7206 > >
00:04:36 verbose #7207 > > execution_options fun x => { x with
00:04:36 verbose #7208 > >     command = $'\@$"cat ""{!file_name}"""'
00:04:36 verbose #7209 > >     working_directory = Some temp_dir |> optionm'.box
00:04:36 verbose #7210 > > }
00:04:36 verbose #7211 > > |> execute_with_options
00:04:36 verbose #7212 > > |> ignore
00:04:36 verbose #7213 > >
00:04:36 verbose #7214 > > inl exit_code, output =
00:04:36 verbose #7215 > >     execution_options fun x => { x with
00:04:36 verbose #7216 > >         command = $'\@$"pwsh -c ""[[System.Console]]::OutputEncoding =
00:04:36 verbose #7217 > > [[System.Text.Encoding]]::UTF8; [[IO.File]]::ReadAllText(\'{!file_name}\')"""'
00:04:36 verbose #7218 > >         working_directory = Some temp_dir |> optionm'.box
00:04:36 verbose #7219 > >     }
00:04:36 verbose #7220 > >     |> execute_with_options
00:04:36 verbose #7221 > >
00:04:36 verbose #7222 > > exit_code |> _assert_eq 0i32
00:04:36 verbose #7223 > > output |> _assert_eq content
00:04:36 verbose #7224 > >
00:04:36 verbose #7225 > > disposable |> use |> ignore
00:04:53 verbose #7226 > >
00:04:53 verbose #7227 > > ╭─[ 17.12s - return value ]────────────────────────────────────────────────────╮
00:04:53 verbose #7228 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir =                   │
00:04:53 verbose #7229 > > │ /tmp/!create_temp_path_/spiral_builder_90df0588099bf23106db7a7f59ddd20066566 │
00:04:53 verbose #7230 > > │ a4498c1aad04a4fa0df207c0e28/9242780b-ce0e-9155-5e07-f6ee5667aa16 }           │
00:04:53 verbose #7231 > > │ 00:00:00   debug #2 runtime.execute_with_options / { file_name = pwsh; │
00:04:53 verbose #7232 > > │ arguments = [                                                                │
00:04:53 verbose #7233 > > │     "-c",                                                                    │
00:04:53 verbose #7234 > > │     "[                                                                       │
00:04:53 verbose #7235 > > │ IO.File]::ReadAllText('/tmp/!create_temp_path_/spiral_builder_90df0588099bf2 │
00:04:53 verbose #7236 > > │ 3106db7a7f59ddd20066566a4498c1aad04a4fa0df207c0e28/9242780b-ce0e-9155-5e07-f │
00:04:53 verbose #7237 > > │ 6ee5667aa16/test.txt')",                                                     │
00:04:53 verbose #7238 > > │ ]; options = { command = pwsh -c "[                                          │
00:04:53 verbose #7239 > > │ IO.File]::ReadAllText('/tmp/!create_temp_path_/spiral_builder_90df0588099bf2 │
00:04:53 verbose #7240 > > │ 3106db7a7f59ddd20066566a4498c1aad04a4fa0df207c0e28/9242780b-ce0e-9155-5e07-f │
00:04:53 verbose #7241 > > │ 6ee5667aa16/test.txt')"; cancellation_token = None; environment_variables =  │
00:04:53 verbose #7242 > > │ Array(MutCell([])); on_line = None; stdin = None; trace = true;              │
00:04:53 verbose #7243 > > │ working_directory = None } }                                                 │
00:04:53 verbose #7244 > > │ 00:00:00 verbose #3 ! MethodInvocationException: Exception   │
00:04:53 verbose #7245 > > │ calling "ReadAllText" with "1" argument(s): "Could not find file             │
00:04:53 verbose #7246 > > │ '/tmp/!create_temp_path_/spiral_builder_90df0588099bf23106db7a7f59ddd2006656 │
00:04:53 verbose #7247 > > │ 6a4498c1aad04a4fa0df207c0e28/9242780b-ce0e-9155-5e07-f6ee5667aa16/test.txt'." │
00:04:53 verbose #7248 > > │ [0m                                                                          │
00:04:53 verbose #7249 > > │ 00:00:00 verbose #4 runtime.execute_with_options / result / {          │
00:04:53 verbose #7250 > > │ exit_code = 1; std_trace_length = 283 }                                      │
00:04:53 verbose #7251 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:04:53 verbose #7252 > > │ __assert_string_contains / actual: "not find file" / expected: "38;5;2m│
00:04:53 verbose #7253 > > │ 31;1mMethodInvocationException: Exception calling "ReadAllText" with    │
00:04:53 verbose #7254 > > │ "1" argument(s): "Could not find file '/tmp/!...e_with_options / { file_name │
00:04:53 verbose #7255 > > │ = cat; arguments = [                                                         │
00:04:53 verbose #7256 > > │     "test.txt",                                                              │
00:04:53 verbose #7257 > > │ ]; options = { command = cat "test.txt"; cancellation_token = None;          │
00:04:53 verbose #7258 > > │ environment_variables = Array(MutCell([])); on_line = None; stdin = None;    │
00:04:53 verbose #7259 > > │ trace = true; working_directory = Some(                                      │
00:04:53 verbose #7260 > > │                                                                              │
00:04:53 verbose #7261 > > │ "/tmp/!create_temp_path_/spiral_builder_90df0588099bf23106db7a7f59ddd2006656 │
00:04:53 verbose #7262 > > │ 6a4498c1aad04a4fa0df207c0e28/9242780b-ce0e-9155-5e07-f6ee5667aa16",          │
00:04:53 verbose #7263 > > │ ) } }                                                                        │
00:04:53 verbose #7264 > > │ 00:00:00 verbose #6 > ╭─[ 你好,世界!こんにちは世界! ]─╮             │
00:04:53 verbose #7265 > > │ 00:00:00 verbose #7 runtime.execute_with_options / result / {          │
00:04:53 verbose #7266 > > │ exit_code = 0; std_trace_length = 22 }                                       │
00:04:53 verbose #7267 > > │ 00:00:00   debug #8 runtime.execute_with_options / { file_name = pwsh; │
00:04:53 verbose #7268 > > │ arguments = [                                                                │
00:04:53 verbose #7269 > > │     "-c",                                                                    │
00:04:53 verbose #7270 > > │     "[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8; [      │
00:04:53 verbose #7271 > > │ IO.File]::ReadAllText('test.txt')",                                          │
00:04:53 verbose #7272 > > │ ]; options = { command = pwsh -c "[System.Console]::OutputEncoding = [       │
00:04:53 verbose #7273 > > │ System.Text.Encoding]::UTF8; [IO.File]::ReadAllText('test.txt')";            │
00:04:53 verbose #7274 > > │ cancellation_token = None; environment_variables = Array(MutCell([]));       │
00:04:53 verbose #7275 > > │ on_line = None; stdin = None; trace = true; working_directory = Some(        │
00:04:53 verbose #7276 > > │                                                                              │
00:04:53 verbose #7277 > > │ "/tmp/!create_temp_path_/spiral_builder_90df0588099bf23106db7a7f59ddd2006656 │
00:04:53 verbose #7278 > > │ 6a4498c1aad04a4fa0df207c0e28/9242780b-ce0e-9155-5e07-f6ee5667aa16",          │
00:04:53 verbose #7279 > > │ ) } }                                                                        │
00:04:53 verbose #7280 > > │ 00:00:00 verbose #9 > ╭─[ 你好,世界!こんにちは世界! ]─╮             │
00:04:53 verbose #7281 > > │ 00:00:00 verbose #10 runtime.execute_with_options / result / {         │
00:04:53 verbose #7282 > > │ exit_code = 0; std_trace_length = 22 }                                       │
00:04:53 verbose #7283 > > │ __assert_eq / actual: 0 / expected: 0                                        │
00:04:53 verbose #7284 > > │ __assert_eq / actual: "╭─[ 你好,世界!こんにちは世界! ]─╮" / expected: "╭─ │
00:04:53 verbose #7285 > > │ [ 你好,世界!こんにちは世界! ]─╮"                                          │
00:04:53 verbose #7286 > > │                                                                              │
00:04:53 verbose #7287 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:53 verbose #7288 > >
00:04:53 verbose #7289 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:53 verbose #7290 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:53 verbose #7291 > > │ ### execute_retry                                                            │
00:04:53 verbose #7292 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:53 verbose #7293 > >
00:04:53 verbose #7294 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:53 verbose #7295 > > let execute_retry retries options =
00:04:53 verbose #7296 > >     fun () =>
00:04:53 verbose #7297 > >         inl exit_code, result = options |> execute_with_options
00:04:53 verbose #7298 > >         if exit_code = 0
00:04:53 verbose #7299 > >         then Ok (exit_code, result)
00:04:53 verbose #7300 > >         else Error (exit_code, result)
00:04:53 verbose #7301 > >     |> retry_fn' retries
00:04:53 verbose #7302 > >
00:04:53 verbose #7303 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:53 verbose #7304 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:53 verbose #7305 > > │ ## main                                                                      │
00:04:53 verbose #7306 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:04:53 verbose #7307 > >
00:04:53 verbose #7308 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:04:53 verbose #7309 > > inl main () =
00:04:53 verbose #7310 > >     init_trace_state None
00:04:53 verbose #7311 > >     $'let current_process_kill () = !current_process_kill ()' : ()
00:04:53 verbose #7312 > >     $'let execute_async x = !execute_async x' : ()
00:04:53 verbose #7313 > >     $'let execute_with_options_async x = !execute_with_options_async x' : ()
00:04:53 verbose #7314 > >     inl execution_options fn =
00:04:53 verbose #7315 > >         execution_options fun x =>
00:04:53 verbose #7316 > >             x
00:04:53 verbose #7317 > >             |> heap
00:04:53 verbose #7318 > >             |> fn
00:04:53 verbose #7319 > >             |> fun x => !x
00:04:53 verbose #7320 > >     $'let execution_options x = !execution_options x' : ()
00:04:53 verbose #7321 > >     inl split_args x = x |> split_args |> resultm.box
00:04:53 verbose #7322 > >     $'let split_args x = !split_args x' : ()
00:04:55 verbose #7323 > 00:01:39 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 143512 }
00:04:55 verbose #7324 > 00:01:39   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:04:55 verbose #7325 >     "nbconvert",
00:04:55 verbose #7326 >     "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb",
00:04:55 verbose #7327 >     "--to",
00:04:55 verbose #7328 >     "html",
00:04:55 verbose #7329 >     "--HTMLExporter.theme=dark",
00:04:55 verbose #7330 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:56 verbose #7331 > 00:01:40 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb to html
00:04:56 verbose #7332 > 00:01:40 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:04:56 verbose #7333 > 00:01:40 verbose #7 !   validate(nb)
00:04:56 verbose #7334 > 00:01:41 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:04:56 verbose #7335 > 00:01:41 verbose #9 !   return _pygments_highlight(
00:04:57 verbose #7336 > 00:01:42 verbose #10 ! [NbConvertApp] Writing 583140 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.html
00:04:58 verbose #7337 > 00:01:42 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 }
00:04:58 verbose #7338 > 00:01:42   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 }
00:04:58 verbose #7339 > 00:01:42   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:04:58 verbose #7340 >     "-c",
00:04:58 verbose #7341 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:04:58 verbose #7342 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:58 verbose #7343 > 00:01:42 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:04:58 verbose #7344 > 00:01:42   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:04:58 verbose #7345 > 00:01:42   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 144469 }
00:04:58   debug #7346 runtime.execute_with_options_async / { exit_code = 0; output_length = 151960 }
00:04:58   debug #8 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path runtime.dib --retries 3
00:04:58   debug #7347 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path trace.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:04:58 verbose #7348 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "trace.dib", "--retries", "3"])) }
00:04:58 verbose #7349 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:04:58 verbose #7350 >     "repl",
00:04:58 verbose #7351 >     "--exit-after-run",
00:04:58 verbose #7352 >     "--run",
00:04:58 verbose #7353 >     "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib",
00:04:58 verbose #7354 >     "--output-path",
00:04:58 verbose #7355 >     "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb",
00:04:58 verbose #7356 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:04:59 verbose #7357 > >
00:04:59 verbose #7358 > > ── markdown ────────────────────────────────────────────────────────────────────
00:04:59 verbose #7359 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:04:59 verbose #7360 > > │ # trace                                                                      │
00:04:59 verbose #7361 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:02 verbose #7362 > >
00:05:02 verbose #7363 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:02 verbose #7364 > > //// test
00:05:02 verbose #7365 > >
00:05:02 verbose #7366 > > open testing
00:05:02 verbose #7367 > >
00:05:02 verbose #7368 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:02 verbose #7369 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:02 verbose #7370 > > │ ## trace                                                                     │
00:05:02 verbose #7371 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:02 verbose #7372 > >
00:05:02 verbose #7373 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:02 verbose #7374 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:02 verbose #7375 > > │ ### trace_level                                                              │
00:05:02 verbose #7376 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:02 verbose #7377 > >
00:05:02 verbose #7378 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:02 verbose #7379 > > union trace_level =
00:05:02 verbose #7380 > >     | Verbose
00:05:02 verbose #7381 > >     | Debug
00:05:02 verbose #7382 > >     | Info
00:05:02 verbose #7383 > >     | Warning
00:05:02 verbose #7384 > >     | Critical
00:05:02 verbose #7385 > >
00:05:02 verbose #7386 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:02 verbose #7387 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:02 verbose #7388 > > │ ### read_state                                                               │
00:05:02 verbose #7389 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:02 verbose #7390 > >
00:05:02 verbose #7391 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:02 verbose #7392 > > inl read_state () =
00:05:02 verbose #7393 > >     run_target function
00:05:02 verbose #7394 > >         | Rust (Wasm) => fun () =>
00:05:02 verbose #7395 > >             {
00:05:02 verbose #7396 > >                 trace_level = None
00:05:02 verbose #7397 > >                 repl_start = None
00:05:02 verbose #7398 > >             }
00:05:02 verbose #7399 > >         | Rust (Contract) => fun () =>
00:05:02 verbose #7400 > >             {
00:05:02 verbose #7401 > >                 trace_level = None
00:05:02 verbose #7402 > >                 repl_start =
00:05:02 verbose #7403 > >                     open rust.rust_operators
00:05:02 verbose #7404 > >                     inl automation = env.get_environment_variable_comptime
00:05:02 verbose #7405 > > "AUTOMATION"
00:05:02 verbose #7406 > >                     if automation <>. "True"
00:05:02 verbose #7407 > >                     then None
00:05:02 verbose #7408 > >                     else
00:05:02 verbose #7409 > >                         inl timestamp : u64 =
00:05:02 verbose #7410 > > !\($'$"near_sdk::env::block_timestamp()"')
00:05:02 verbose #7411 > >                         timestamp |> i64 |> Some
00:05:02 verbose #7412 > >             }
00:05:02 verbose #7413 > >         | _ => fun () =>
00:05:02 verbose #7414 > >             {
00:05:02 verbose #7415 > >                 trace_level =
00:05:02 verbose #7416 > >                     (join "TRACE_LEVEL")
00:05:02 verbose #7417 > >                     |> env.get_environment_variable
00:05:02 verbose #7418 > >                     |> reflection.union_try_pick
00:05:02 verbose #7419 > >                 repl_start =
00:05:02 verbose #7420 > >                     inl automation = env.get_environment_variable (join
00:05:02 verbose #7421 > > "AUTOMATION")
00:05:02 verbose #7422 > >                     if automation = "True"
00:05:02 verbose #7423 > >                     then date_time.now () |> date_time.ticks |> fun
00:05:02 verbose #7424 > > (date_time.timestamp x) => x |> Some
00:05:02 verbose #7425 > >                     else None
00:05:02 verbose #7426 > >             }
00:05:03 verbose #7427 > >
00:05:03 verbose #7428 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:03 verbose #7429 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:03 verbose #7430 > > │ ### trace_state                                                              │
00:05:03 verbose #7431 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:03 verbose #7432 > >
00:05:03 verbose #7433 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:03 verbose #7434 > > type trace_state =
00:05:03 verbose #7435 > >     {
00:05:03 verbose #7436 > >         count : mut i64
00:05:03 verbose #7437 > >         trace_file : mut (string -> ())
00:05:03 verbose #7438 > >         enabled : mut bool
00:05:03 verbose #7439 > >         level : mut trace_level
00:05:03 verbose #7440 > >         repl_start : optionm'.option' i64
00:05:03 verbose #7441 > >     }
00:05:03 verbose #7442 > >
00:05:03 verbose #7443 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:03 verbose #7444 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:03 verbose #7445 > > │ ### new_trace_state                                                          │
00:05:03 verbose #7446 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:03 verbose #7447 > >
00:05:03 verbose #7448 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:03 verbose #7449 > > let new_trace_state trace_level' =
00:05:03 verbose #7450 > >     inl { repl_start trace_level } = read_state ()
00:05:03 verbose #7451 > >     {
00:05:03 verbose #7452 > >         enabled = mut true
00:05:03 verbose #7453 > >         count = mut 0i64
00:05:03 verbose #7454 > >         level = trace_level |> optionm'.default_value trace_level' |> mut
00:05:03 verbose #7455 > >         trace_file = mut ignore
00:05:03 verbose #7456 > >         repl_start = repl_start |> optionm'.box
00:05:03 verbose #7457 > >     } : trace_state
00:05:03 verbose #7458 > >
00:05:03 verbose #7459 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:03 verbose #7460 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:03 verbose #7461 > > │ ### init_trace_state                                                         │
00:05:03 verbose #7462 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:03 verbose #7463 > >
00:05:03 verbose #7464 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:03 verbose #7465 > > inl init_trace_state trace_level : () =
00:05:03 verbose #7466 > >     inl trace_level = trace_level |> optionm'.default_value Verbose
00:05:03 verbose #7467 > >     backend_switch {
00:05:03 verbose #7468 > >         Fsharp = fun () =>
00:05:03 verbose #7469 > >             backend_switch {
00:05:03 verbose #7470 > >                 Fsharp = fun () =>
00:05:03 verbose #7471 > >                     global "module State = let mutable trace_state = None"
00:05:03 verbose #7472 > >             }
00:05:03 verbose #7473 > >             fun () =>
00:05:03 verbose #7474 > >                 if $'State.trace_state.IsNone' then
00:05:03 verbose #7475 > >                     inl trace_state = new_trace_state trace_level |>
00:05:03 verbose #7476 > > optionm'.some'
00:05:03 verbose #7477 > >                     $'State.trace_state <- !trace_state ' : ()
00:05:03 verbose #7478 > >             |> exec_unit
00:05:03 verbose #7479 > >         Python = fun () =>
00:05:03 verbose #7480 > >             global "class State: trace_state = None"
00:05:03 verbose #7481 > >             $'if State.trace_state is None: State.trace_state =
00:05:03 verbose #7482 > > !new_trace_state(!trace_level)' : ()
00:05:03 verbose #7483 > >     }
00:05:03 verbose #7484 > >
00:05:03 verbose #7485 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:03 verbose #7486 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:03 verbose #7487 > > │ ### get_trace_state_or_init                                                  │
00:05:03 verbose #7488 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:03 verbose #7489 > >
00:05:03 verbose #7490 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:03 verbose #7491 > > inl get_trace_state_or_init trace_level : trace_state =
00:05:03 verbose #7492 > >     init_trace_state trace_level
00:05:03 verbose #7493 > >     // $'match State.trace_state with Some x -> x | None -> failwith
00:05:03 verbose #7494 > > "trace.get_trace_state_or_init / State.trace_state=None"'
00:05:03 verbose #7495 > >     backend_switch {
00:05:03 verbose #7496 > >         Fsharp = fun () =>
00:05:03 verbose #7497 > >             $'State.trace_state.Value' : trace_state
00:05:03 verbose #7498 > >         Python = fun () =>
00:05:03 verbose #7499 > >             $'State.trace_state' : trace_state
00:05:03 verbose #7500 > >     }
00:05:03 verbose #7501 > >
00:05:03 verbose #7502 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:03 verbose #7503 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:03 verbose #7504 > > │ ### test_trace_level                                                         │
00:05:03 verbose #7505 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:03 verbose #7506 > >
00:05:03 verbose #7507 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:03 verbose #7508 > > inl test_trace_level level : bool =
00:05:03 verbose #7509 > >     inl state = get_trace_state_or_init None
00:05:03 verbose #7510 > >     inl level' = *state.level
00:05:03 verbose #7511 > >     if *state.enabled |> not
00:05:03 verbose #7512 > >     then false
00:05:03 verbose #7513 > >     else
00:05:03 verbose #7514 > >         inl level : i32 = real real_core.union_tag level
00:05:03 verbose #7515 > >         inl level' : i32 = real real_core.union_tag level'
00:05:03 verbose #7516 > >         level >= level'
00:05:03 verbose #7517 > >
00:05:03 verbose #7518 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:03 verbose #7519 > > //// test
00:05:03 verbose #7520 > > ///! fsharp
00:05:03 verbose #7521 > > ///! cuda
00:05:03 verbose #7522 > > ///! rust
00:05:03 verbose #7523 > > ///! typescript
00:05:03 verbose #7524 > > ///! python
00:05:03 verbose #7525 > >
00:05:03 verbose #7526 > > test_trace_level Critical |> _assert_eq true
00:05:03 verbose #7527 > > test_trace_level Verbose |> _assert_eq true
00:05:03 verbose #7528 > >
00:05:03 verbose #7529 > > inl level = get_trace_state_or_init None .level
00:05:03 verbose #7530 > > level <- Debug
00:05:03 verbose #7531 > > test_trace_level Verbose |> _assert_eq false
00:05:03 verbose #7532 > > level <- Verbose
00:05:03 verbose #7533 > > test_trace_level Verbose |> _assert_eq true
00:05:17 verbose #7534 > >
00:05:17 verbose #7535 > > ╭─[ 13.16s - return value ]────────────────────────────────────────────────────╮
00:05:17 verbose #7536 > > │                                                                              │
00:05:17 verbose #7537 > > │ .py output (Cuda):                                                           │
00:05:17 verbose #7538 > > │ __assert_eq / actual: True / expected: True                                  │
00:05:17 verbose #7539 > > │ __assert_eq / actual: True / expected: True                                  │
00:05:17 verbose #7540 > > │ __assert_eq / actual: False / expected: False                                │
00:05:17 verbose #7541 > > │ __assert_eq / actual: True / expected: True                                  │
00:05:17 verbose #7542 > > │                                                                              │
00:05:17 verbose #7543 > > │                                                                              │
00:05:17 verbose #7544 > > │ .rs output:                                                                  │
00:05:17 verbose #7545 > > │ __assert_eq / actual: true / expected: true                                  │
00:05:17 verbose #7546 > > │ __assert_eq / actual: true / expected: true                                  │
00:05:17 verbose #7547 > > │ __assert_eq / actual: false / expected: false                                │
00:05:17 verbose #7548 > > │ __assert_eq / actual: true / expected: true                                  │
00:05:17 verbose #7549 > > │                                                                              │
00:05:17 verbose #7550 > > │                                                                              │
00:05:17 verbose #7551 > > │ .ts output:                                                                  │
00:05:17 verbose #7552 > > │ __assert_eq / actual: true / expected: true                                  │
00:05:17 verbose #7553 > > │ __assert_eq / actual: true / expected: true                                  │
00:05:17 verbose #7554 > > │ __assert_eq / actual: false / expected: false                                │
00:05:17 verbose #7555 > > │ __assert_eq / actual: true / expected: true                                  │
00:05:17 verbose #7556 > > │                                                                              │
00:05:17 verbose #7557 > > │                                                                              │
00:05:17 verbose #7558 > > │ .py output:                                                                  │
00:05:17 verbose #7559 > > │ __assert_eq / actual: true / expected: true                                  │
00:05:17 verbose #7560 > > │ __assert_eq / actual: true / expected: true                                  │
00:05:17 verbose #7561 > > │ __assert_eq / actual: false / expected: false                                │
00:05:17 verbose #7562 > > │ __assert_eq / actual: true / expected: true                                  │
00:05:17 verbose #7563 > > │                                                                              │
00:05:17 verbose #7564 > > │                                                                              │
00:05:17 verbose #7565 > > │                                                                              │
00:05:17 verbose #7566 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:17 verbose #7567 > >
00:05:17 verbose #7568 > > ╭─[ 13.16s - stdout ]──────────────────────────────────────────────────────────╮
00:05:17 verbose #7569 > > │ .fsx output:                                                                 │
00:05:17 verbose #7570 > > │ __assert_eq / actual: true / expected: true                                  │
00:05:17 verbose #7571 > > │ __assert_eq / actual: true / expected: true                                  │
00:05:17 verbose #7572 > > │ __assert_eq / actual: false / expected: false                                │
00:05:17 verbose #7573 > > │ __assert_eq / actual: true / expected: true                                  │
00:05:17 verbose #7574 > > │                                                                              │
00:05:17 verbose #7575 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:17 verbose #7576 > >
00:05:17 verbose #7577 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:17 verbose #7578 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:17 verbose #7579 > > │ ### trace_raw                                                                │
00:05:17 verbose #7580 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:17 verbose #7581 > >
00:05:17 verbose #7582 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:17 verbose #7583 > > inl trace_raw level fn =
00:05:17 verbose #7584 > >     fun () =>
00:05:17 verbose #7585 > >         inl trace_state = get_trace_state_or_init None
00:05:17 verbose #7586 > >         if level |> test_trace_level then
00:05:17 verbose #7587 > >             inl count = trace_state.count
00:05:17 verbose #7588 > >             fun () => count <- *count + 1
00:05:17 verbose #7589 > >             |> exec_unit
00:05:17 verbose #7590 > >
00:05:17 verbose #7591 > >             inl text = fn ()
00:05:17 verbose #7592 > >             open rust
00:05:17 verbose #7593 > >             open rust.rust_operators
00:05:17 verbose #7594 > >             run_target_args (fun () => text, console.write_line) function
00:05:17 verbose #7595 > >                 | Rust (Contract) => fun text, _ =>
00:05:17 verbose #7596 > >                     !\\(text, $'$"near_sdk::log\!(\\\"{{}}\\\", $0)"')
00:05:17 verbose #7597 > >                 | Rust _ => fun text, _ =>
00:05:17 verbose #7598 > >                     !\\(text, $'\@"println\!(""{}"", $0)"')
00:05:17 verbose #7599 > >                 | _ => fun text, write_line =>
00:05:17 verbose #7600 > >                     text |> write_line
00:05:17 verbose #7601 > >             *trace_state.trace_file text
00:05:17 verbose #7602 > >     |> exec_unit
00:05:17 verbose #7603 > >
00:05:17 verbose #7604 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:17 verbose #7605 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:17 verbose #7606 > > │ ### trace                                                                    │
00:05:17 verbose #7607 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:17 verbose #7608 > >
00:05:17 verbose #7609 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:17 verbose #7610 > > inl trace (level : trace_level) (text_fn : () -> string) (locals : () -> _) =
00:05:17 verbose #7611 > >     fun () =>
00:05:17 verbose #7612 > >         inl trace_state = get_trace_state_or_init None
00:05:17 verbose #7613 > >         inl time =
00:05:17 verbose #7614 > >             run_target fun target =>
00:05:17 verbose #7615 > >                 match target with
00:05:17 verbose #7616 > >                 | Rust (Contract) => fun () =>
00:05:17 verbose #7617 > >                     open rust.rust_operators
00:05:17 verbose #7618 > >                     open rust
00:05:17 verbose #7619 > >                     inl timestamp : u64 =
00:05:17 verbose #7620 > > !\($'$"near_sdk::env::block_timestamp()"')
00:05:17 verbose #7621 > >                     inl timestamp =
00:05:17 verbose #7622 > >                         match trace_state.repl_start |> optionm'.unbox with
00:05:17 verbose #7623 > >                         | Some repl_start => timestamp - u64 repl_start
00:05:17 verbose #7624 > >                         | None => timestamp
00:05:17 verbose #7625 > >                     inl timestamp_s = timestamp / 1_000_000_000
00:05:17 verbose #7626 > >                     inl s = timestamp_s % 60
00:05:17 verbose #7627 > >                     inl m = (timestamp_s / 60) % 60
00:05:17 verbose #7628 > >                     inl h = (timestamp_s / 3600) % 24
00:05:17 verbose #7629 > >                     inl str : sm'.std_string =
00:05:17 verbose #7630 > >                         !\\((h, m, s),
00:05:17 verbose #7631 > > $'$"format\!(\\\"{{:02}}:{{:02}}:{{:02}}\\\", $0, $1, $2)"')
00:05:17 verbose #7632 > >                     str |> sm'.from_std_string
00:05:17 verbose #7633 > >                 | _ => fun () =>
00:05:17 verbose #7634 > >                     match trace_state.repl_start |> optionm'.unbox with
00:05:17 verbose #7635 > >                     | Some repl_start =>
00:05:17 verbose #7636 > >                         inl t =
00:05:17 verbose #7637 > >                             (date_time.now () |> date_time.ticks |> fun
00:05:17 verbose #7638 > > (date_time.timestamp x) => x)
00:05:17 verbose #7639 > >                             - repl_start |> date_time.time_span
00:05:17 verbose #7640 > >                         date_time.date_time_milliseconds
00:05:17 verbose #7641 > >                             1i32 1i32 1i32
00:05:17 verbose #7642 > >                             (t |> date_time.hours)
00:05:17 verbose #7643 > >                             (t |> date_time.minutes)
00:05:17 verbose #7644 > >                             (t |> date_time.seconds)
00:05:17 verbose #7645 > >                             (t |> date_time.milliseconds)
00:05:17 verbose #7646 > >                     | None => date_time.now ()
00:05:17 verbose #7647 > >                     |> date_time.format (
00:05:17 verbose #7648 > >                         backend_switch {
00:05:17 verbose #7649 > >                             Fsharp = fun () =>
00:05:17 verbose #7650 > >                                 match target with
00:05:17 verbose #7651 > >                                 | Rust _ => join "hh:mm:ss"
00:05:17 verbose #7652 > >                                 | _ => join "HH:mm:ss"
00:05:17 verbose #7653 > >                             Python = fun () => "%H:%M:%S"
00:05:17 verbose #7654 > >                         }
00:05:17 verbose #7655 > >                     )
00:05:17 verbose #7656 > >         inl level_str = level |> reflection.union_to_string |> sm'.to_lower |>
00:05:17 verbose #7657 > > sm'.pad_left 7 ' '
00:05:17 verbose #7658 > >         inl level_str =
00:05:17 verbose #7659 > >             run_target function
00:05:17 verbose #7660 > >             | Rust _ => fun () =>
00:05:17 verbose #7661 > >                 open rust
00:05:17 verbose #7662 > >                 open rust.rust_operators
00:05:17 verbose #7663 > >                 inl color : rust.ref sm'.str =
00:05:17 verbose #7664 > >                     match level with
00:05:17 verbose #7665 > >                     | Verbose =>
00:05:17 verbose #7666 > > !\($'"inline_colorization::color_bright_black"')
00:05:17 verbose #7667 > >                     | Debug => !\($'"inline_colorization::color_bright_blue"')
00:05:17 verbose #7668 > >                     | Info => !\($'"inline_colorization::color_bright_green"')
00:05:17 verbose #7669 > >                     | Warning => !\($'"inline_colorization::color_yellow"')
00:05:17 verbose #7670 > >                     | Critical => !\($'"inline_colorization::color_bright_red"')
00:05:17 verbose #7671 > >                 inl level_str = level_str |> sm'.as_str
00:05:17 verbose #7672 > >                 inl color_reset : rust.ref sm'.str =
00:05:17 verbose #7673 > > !\($'"inline_colorization::color_reset"')
00:05:17 verbose #7674 > >                 $'"\\\"{!color}{!level_str}{!color_reset}\\\""'
00:05:17 verbose #7675 > >                 |> sm'.format''
00:05:17 verbose #7676 > >                 |> sm'.from_std_string
00:05:17 verbose #7677 > >             | _ => fun () =>
00:05:17 verbose #7678 > >                 inl color =
00:05:17 verbose #7679 > >                     match level with
00:05:17 verbose #7680 > >                     | Verbose => $'"\\u001b[[90m"'
00:05:17 verbose #7681 > >                     | Debug => $'"\\u001b[[94m"'
00:05:17 verbose #7682 > >                     | Info => $'"\\u001b[[92m"'
00:05:17 verbose #7683 > >                     | Warning => $'"\\u001b[[93m"'
00:05:17 verbose #7684 > >                     | Critical => $'"\\u001b[[91m"'
00:05:17 verbose #7685 > >                 inl color_reset = join $'"\\u001b[[0m"'
00:05:17 verbose #7686 > >                 color +. level_str +. color_reset
00:05:17 verbose #7687 > >         inl count = *trace_state.count
00:05:17 verbose #7688 > >         inl locals = locals () |> sm'.format
00:05:17 verbose #7689 > >         backend_switch {
00:05:17 verbose #7690 > >             Fsharp = fun () => $'$"{!time} {!level_str} #{!count} %s{!text_fn
00:05:17 verbose #7691 > > ()} / {!locals}"' : string
00:05:17 verbose #7692 > >             Python = fun () => $'f"{!time} {!level_str} #{!count} {!text_fn()}
00:05:17 verbose #7693 > > {!locals}"' : string
00:05:17 verbose #7694 > >         }
00:05:17 verbose #7695 > >         |> sm'.trim_start [[]]
00:05:17 verbose #7696 > >         |> sm'.trim_end [[ ' '; '/' ]]
00:05:17 verbose #7697 > >     |> trace_raw level
00:05:17 verbose #7698 > >
00:05:17 verbose #7699 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:17 verbose #7700 > > //// test
00:05:17 verbose #7701 > > ///! fsharp
00:05:17 verbose #7702 > > ///! cuda
00:05:17 verbose #7703 > > ///! rust
00:05:17 verbose #7704 > > ///! typescript
00:05:17 verbose #7705 > > ///! python
00:05:17 verbose #7706 > >
00:05:17 verbose #7707 > > trace Debug (fun () => "test1") id
00:05:17 verbose #7708 > > trace Debug (fun () => "test2") id
00:05:17 verbose #7709 > > get_trace_state_or_init None .count
00:05:17 verbose #7710 > > |> fun x => *x
00:05:17 verbose #7711 > > |> _assert_eq 2
00:05:29 verbose #7712 > >
00:05:29 verbose #7713 > > ╭─[ 12.06s - return value ]────────────────────────────────────────────────────╮
00:05:29 verbose #7714 > > │                                                                              │
00:05:29 verbose #7715 > > │ .py output (Cuda):                                                           │
00:05:29 verbose #7716 > > │ 00:00:01   debug #1 test1                                               │
00:05:29 verbose #7717 > > │ 00:00:06   debug #2 test2                                               │
00:05:29 verbose #7718 > > │ __assert_eq / actual: 2 / expected: 2                                        │
00:05:29 verbose #7719 > > │                                                                              │
00:05:29 verbose #7720 > > │                                                                              │
00:05:29 verbose #7721 > > │ .rs output:                                                                  │
00:05:29 verbose #7722 > > │ 00:00:00   debug #1 test1                                              │
00:05:29 verbose #7723 > > │ 00:00:00   debug #2 test2                                              │
00:05:29 verbose #7724 > > │ __assert_eq / actual: 2 / expected: 2                                        │
00:05:29 verbose #7725 > > │                                                                              │
00:05:29 verbose #7726 > > │                                                                              │
00:05:29 verbose #7727 > > │ .ts output:                                                                  │
00:05:29 verbose #7728 > > │ 00:00:00   debug #1 test1                                               │
00:05:29 verbose #7729 > > │ 00:00:00   debug #2 test2                                               │
00:05:29 verbose #7730 > > │ __assert_eq / actual: 2 / expected: 2                                        │
00:05:29 verbose #7731 > > │                                                                              │
00:05:29 verbose #7732 > > │                                                                              │
00:05:29 verbose #7733 > > │ .py output:                                                                  │
00:05:29 verbose #7734 > > │ 00:00:00   debug #1 test1                                               │
00:05:29 verbose #7735 > > │ 00:00:00   debug #2 test2                                               │
00:05:29 verbose #7736 > > │ __assert_eq / actual: 2 / expected: 2                                        │
00:05:29 verbose #7737 > > │                                                                              │
00:05:29 verbose #7738 > > │                                                                              │
00:05:29 verbose #7739 > > │                                                                              │
00:05:29 verbose #7740 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:29 verbose #7741 > >
00:05:29 verbose #7742 > > ╭─[ 12.06s - stdout ]──────────────────────────────────────────────────────────╮
00:05:29 verbose #7743 > > │ .fsx output:                                                                 │
00:05:29 verbose #7744 > > │ 00:00:00   debug #1 test1                                               │
00:05:29 verbose #7745 > > │ 00:00:00   debug #2 test2                                               │
00:05:29 verbose #7746 > > │ __assert_eq / actual: 2L / expected: 2L                                      │
00:05:29 verbose #7747 > > │                                                                              │
00:05:29 verbose #7748 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:29 verbose #7749 > >
00:05:29 verbose #7750 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:29 verbose #7751 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:29 verbose #7752 > > │ ## main                                                                      │
00:05:29 verbose #7753 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:29 verbose #7754 > >
00:05:29 verbose #7755 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:29 verbose #7756 > > inl main () =
00:05:29 verbose #7757 > >     init_trace_state None
00:05:29 verbose #7758 > >     inl trace level text_fn (locals : () -> string) = trace level text_fn locals
00:05:29 verbose #7759 > >     $'let trace x = !trace x' : ()
00:05:29 verbose #7760 > 00:00:31 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 22854 }
00:05:29 verbose #7761 > 00:00:31   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:05:29 verbose #7762 >     "nbconvert",
00:05:29 verbose #7763 >     "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb",
00:05:29 verbose #7764 >     "--to",
00:05:29 verbose #7765 >     "html",
00:05:29 verbose #7766 >     "--HTMLExporter.theme=dark",
00:05:29 verbose #7767 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:30 verbose #7768 > 00:00:32 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb to html
00:05:30 verbose #7769 > 00:00:32 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:05:30 verbose #7770 > 00:00:32 verbose #7 !   validate(nb)
00:05:30 verbose #7771 > 00:00:32 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:05:30 verbose #7772 > 00:00:32 verbose #9 !   return _pygments_highlight(
00:05:31 verbose #7773 > 00:00:32 verbose #10 ! [NbConvertApp] Writing 320630 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.html
00:05:31 verbose #7774 > 00:00:32 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 894 }
00:05:31 verbose #7775 > 00:00:32   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 894 }
00:05:31 verbose #7776 > 00:00:32   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:05:31 verbose #7777 >     "-c",
00:05:31 verbose #7778 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:05:31 verbose #7779 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:31 verbose #7780 > 00:00:33 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:05:31 verbose #7781 > 00:00:33   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:05:31 verbose #7782 > 00:00:33   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 23807 }
00:05:31   debug #7783 runtime.execute_with_options_async / { exit_code = 0; output_length = 27448 }
00:05:31   debug #9 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path trace.dib --retries 3
00:05:31   debug #7784 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path am'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:05:31 verbose #7785 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "am'.dib", "--retries", "3"])) }
00:05:31 verbose #7786 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:05:31 verbose #7787 >     "repl",
00:05:31 verbose #7788 >     "--exit-after-run",
00:05:31 verbose #7789 >     "--run",
00:05:31 verbose #7790 >     "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib",
00:05:31 verbose #7791 >     "--output-path",
00:05:31 verbose #7792 >     "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb",
00:05:31 verbose #7793 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:05:32 verbose #7794 > >
00:05:32 verbose #7795 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:32 verbose #7796 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:32 verbose #7797 > > │ # am'                                                                        │
00:05:32 verbose #7798 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:35 verbose #7799 > >
00:05:35 verbose #7800 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:35 verbose #7801 > > //// test
00:05:35 verbose #7802 > >
00:05:35 verbose #7803 > > open testing
00:05:35 verbose #7804 > >
00:05:35 verbose #7805 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:35 verbose #7806 > > open rust
00:05:35 verbose #7807 > > open rust_operators
00:05:36 verbose #7808 > >
00:05:36 verbose #7809 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:36 verbose #7810 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:36 verbose #7811 > > │ ## am'                                                                       │
00:05:36 verbose #7812 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:36 verbose #7813 > >
00:05:36 verbose #7814 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:36 verbose #7815 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:36 verbose #7816 > > │ ### length                                                                   │
00:05:36 verbose #7817 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:36 verbose #7818 > >
00:05:36 verbose #7819 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:36 verbose #7820 > > inl length forall dim {int} el. (a : a dim el) : dim =
00:05:36 verbose #7821 > >     a |> length
00:05:36 verbose #7822 > >
00:05:36 verbose #7823 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:36 verbose #7824 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:36 verbose #7825 > > │ ### index                                                                    │
00:05:36 verbose #7826 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:36 verbose #7827 > >
00:05:36 verbose #7828 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:36 verbose #7829 > > inl index forall dim {int} el. (i : dim) (a : a dim el) : el =
00:05:36 verbose #7830 > >     backend_switch {
00:05:36 verbose #7831 > >         Fsharp = fun () => index a i
00:05:36 verbose #7832 > >         Python = fun () => $'!a[[!i]]' : el
00:05:36 verbose #7833 > >     }
00:05:36 verbose #7834 > >
00:05:36 verbose #7835 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:36 verbose #7836 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:36 verbose #7837 > > │ ### index_base                                                               │
00:05:36 verbose #7838 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:36 verbose #7839 > >
00:05:36 verbose #7840 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:36 verbose #7841 > > inl index_base forall el. (i : int) (ar : array_base el) : el =
00:05:36 verbose #7842 > >     ar |> a |> index i
00:05:36 verbose #7843 > >
00:05:36 verbose #7844 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:36 verbose #7845 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:36 verbose #7846 > > │ ### base                                                                     │
00:05:36 verbose #7847 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:36 verbose #7848 > >
00:05:36 verbose #7849 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:36 verbose #7850 > > inl base forall dim {int} el. ((a a) : a dim el) : array_base el =
00:05:36 verbose #7851 > >     a
00:05:36 verbose #7852 > >
00:05:36 verbose #7853 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:36 verbose #7854 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:36 verbose #7855 > > │ ### base'                                                                    │
00:05:36 verbose #7856 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:36 verbose #7857 > >
00:05:36 verbose #7858 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:36 verbose #7859 > > inl base' forall el. ((a a) : a int el) : array_base el =
00:05:36 verbose #7860 > >     a
00:05:36 verbose #7861 > >
00:05:36 verbose #7862 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:36 verbose #7863 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:36 verbose #7864 > > │ ### generic_equable                                                          │
00:05:36 verbose #7865 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:36 verbose #7866 > >
00:05:36 verbose #7867 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:36 verbose #7868 > > inl generic_equable x1 x2 =
00:05:36 verbose #7869 > >     if length x1 <>.. length x2
00:05:36 verbose #7870 > >     then false
00:05:36 verbose #7871 > >     else
00:05:36 verbose #7872 > >         let rec loop i =
00:05:36 verbose #7873 > >             if i < length x1
00:05:36 verbose #7874 > >             then index i x1 = index i x2 && loop (i + 1)
00:05:36 verbose #7875 > >             else true
00:05:36 verbose #7876 > >         loop 0
00:05:36 verbose #7877 > >
00:05:36 verbose #7878 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:36 verbose #7879 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:36 verbose #7880 > > │ ### equable                                                                  │
00:05:36 verbose #7881 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:36 verbose #7882 > >
00:05:36 verbose #7883 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:36 verbose #7884 > > instance equable a dim {number; int} t = generic_equable
00:05:36 verbose #7885 > >
00:05:36 verbose #7886 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:36 verbose #7887 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:36 verbose #7888 > > │ ### append                                                                   │
00:05:36 verbose #7889 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:36 verbose #7890 > >
00:05:36 verbose #7891 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:36 verbose #7892 > > instance append a dim {int; number} t = am.append
00:05:36 verbose #7893 > >
00:05:36 verbose #7894 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:36 verbose #7895 > > //// test
00:05:36 verbose #7896 > > ///! fsharp
00:05:36 verbose #7897 > > ///! cuda
00:05:36 verbose #7898 > > ///! rust
00:05:36 verbose #7899 > > ///! typescript
00:05:36 verbose #7900 > > ///! python
00:05:36 verbose #7901 > >
00:05:36 verbose #7902 > > a' ;[[ -1i64; 0 ]] ++ a' ;[[ 1; 2 ]]
00:05:36 verbose #7903 > > |> _assert_eq (a' ;[[ -1; 0; 1; 2 ]])
00:05:50 verbose #7904 > >
00:05:50 verbose #7905 > > ╭─[ 14.06s - return value ]────────────────────────────────────────────────────╮
00:05:50 verbose #7906 > > │                                                                              │
00:05:50 verbose #7907 > > │ .py output (Cuda):                                                           │
00:05:50 verbose #7908 > > │ Traceback (most recent call last):                                     │
00:05:50 verbose #7909 > > │   File                                                                   │
00:05:50 verbose #7910 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/68b9bb09c50 │
00:05:50 verbose #7911 > > │ 2ee0e564185d4d3fcabb90047190021dd0f7720e2e9dc1b639e8e/main.py", line 159, in │
00:05:50 verbose #7912 > > │ <module>                                                                   │
00:05:50 verbose #7913 > > │     if __name__ == '__main__': result = main(); None if result is None   │
00:05:50 verbose #7914 > > │ else print(result)                                                         │
00:05:50 verbose #7915 > > │                                         ^^^^^^                         │
00:05:50 verbose #7916 > > │   File                                                                   │
00:05:50 verbose #7917 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/68b9bb09c50 │
00:05:50 verbose #7918 > > │ 2ee0e564185d4d3fcabb90047190021dd0f7720e2e9dc1b639e8e/main.py", line 157, in │
00:05:50 verbose #7919 > > │ main                                                                       │
00:05:50 verbose #7920 > > │     return method0()                                                   │
00:05:50 verbose #7921 > > │            ^^^^^^^^^                                                   │
00:05:50 verbose #7922 > > │   File                                                                   │
00:05:50 verbose #7923 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/68b9bb09c50 │
00:05:50 verbose #7924 > > │ 2ee0e564185d4d3fcabb90047190021dd0f7720e2e9dc1b639e8e/main.py", line 96, in  │
00:05:50 verbose #7925 > > │ method0                                                                    │
00:05:50 verbose #7926 > > │     v0 = cp.array([-1, 0],dtype=cp.int64)                              │
00:05:50 verbose #7927 > > │          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                              │
00:05:50 verbose #7928 > > │   File                                                                   │
00:05:50 verbose #7929 > > │ "/opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/cupy/_c │
00:05:50 verbose #7930 > > │ reation/from_data.py", line 53, in array                                   │
00:05:50 verbose #7931 > > │     return _core.array(obj, dtype, copy, order, subok, ndmin, blocking)38;5;2m│
00:05:50 verbose #7932 > > │ 0m                                                                           │
00:05:50 verbose #7933 > > │            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^38;5;2m│
00:05:50 verbose #7934 > > │ 0m                                                                           │
00:05:50 verbose #7935 > > │   File "cupy/_core/core.pyx", line 2408, in cupy._core.core.array      │
00:05:50 verbose #7936 > > │   File "cupy/_core/core.pyx", line 2435, in cupy._core.core.array      │
00:05:50 verbose #7937 > > │   File "cupy/_core/core.pyx", line 2578, in                              │
00:05:50 verbose #7938 > > │ cupy._core.core._array_default                                             │
00:05:50 verbose #7939 > > │   File "cupy/_core/core.pyx", line 137, in                               │
00:05:50 verbose #7940 > > │ cupy._core.core.ndarray.__new__                                            │
00:05:50 verbose #7941 > > │   File "cupy/_core/core.pyx", line 225, in                               │
00:05:50 verbose #7942 > > │ cupy._core.core._ndarray_base._init                                        │
00:05:50 verbose #7943 > > │   File "cupy/cuda/memory.pyx", line 738, in cupy.cuda.memory.alloc     │
00:05:50 verbose #7944 > > │   File "cupy/cuda/memory.pyx", line 1424, in                             │
00:05:50 verbose #7945 > > │ cupy.cuda.memory.MemoryPool.malloc                                         │
00:05:50 verbose #7946 > > │   File "cupy/cuda/memory.pyx", line 1444, in                             │
00:05:50 verbose #7947 > > │ cupy.cuda.memory.MemoryPool.malloc                                         │
00:05:50 verbose #7948 > > │   File "cupy/cuda/device.pyx", line 40, in cupy.cuda.device.get_device_id │
00:05:50 verbose #7949 > > │ [0m                                                                          │
00:05:50 verbose #7950 > > │   File "cupy_backends/cuda/api/runtime.pyx", line 202, in                │
00:05:50 verbose #7951 > > │ cupy_backends.cuda.api.runtime.getDevice                                   │
00:05:50 verbose #7952 > > │   File "cupy_backends/cuda/api/runtime.pyx", line 146, in                │
00:05:50 verbose #7953 > > │ cupy_backends.cuda.api.runtime.check_status                                │
00:05:50 verbose #7954 > > │ cupy_backends.cuda.api.runtime.CUDARuntimeError:                         │
00:05:50 verbose #7955 > > │ cudaErrorInsufficientDriver: CUDA driver version is insufficient for CUDA    │
00:05:50 verbose #7956 > > │ runtime version                                                            │
00:05:50 verbose #7957 > > │                                                                              │
00:05:50 verbose #7958 > > │ .rs output:                                                                  │
00:05:50 verbose #7959 > > │ __assert_eq / actual: Array(MutCell([-1, 0, 1, 2])) / expected:              │
00:05:50 verbose #7960 > > │ Array(MutCell([-1, 0, 1, 2]))                                                │
00:05:50 verbose #7961 > > │                                                                              │
00:05:50 verbose #7962 > > │ .ts output:                                                                  │
00:05:50 verbose #7963 > > │ __assert_eq / actual: -1,0,1,2 / expected: -1,0,1,2                          │
00:05:50 verbose #7964 > > │                                                                              │
00:05:50 verbose #7965 > > │ .py output:                                                                  │
00:05:50 verbose #7966 > > │ __assert_eq / actual: [-1, 0, 1, 2] / expected: array('q', [-1, 0, 1, 2])    │
00:05:50 verbose #7967 > > │                                                                              │
00:05:50 verbose #7968 > > │                                                                              │
00:05:50 verbose #7969 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:50 verbose #7970 > >
00:05:50 verbose #7971 > > ╭─[ 14.07s - stdout ]──────────────────────────────────────────────────────────╮
00:05:50 verbose #7972 > > │ .fsx output:                                                                 │
00:05:50 verbose #7973 > > │ __assert_eq / actual: [|-1L; 0L; 1L; 2L|] / expected: [|-1L; 0L; 1L; 2L|]    │
00:05:50 verbose #7974 > > │                                                                              │
00:05:50 verbose #7975 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:50 verbose #7976 > >
00:05:50 verbose #7977 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:50 verbose #7978 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:50 verbose #7979 > > │ ### map_base                                                                 │
00:05:50 verbose #7980 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:50 verbose #7981 > >
00:05:50 verbose #7982 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:50 verbose #7983 > > inl map_base forall t u. (fn : t -> u) (x : array_base t) : array_base u =
00:05:50 verbose #7984 > >     a x
00:05:50 verbose #7985 > >     |> am.map fn
00:05:50 verbose #7986 > >     |> fun (a x : _ int _) => x
00:05:51 verbose #7987 > >
00:05:51 verbose #7988 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:51 verbose #7989 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:51 verbose #7990 > > │ ### collect                                                                  │
00:05:51 verbose #7991 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:51 verbose #7992 > >
00:05:51 verbose #7993 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:51 verbose #7994 > > inl collect forall t r. (fn : t -> a int r) (items : a int t) : a int r =
00:05:51 verbose #7995 > >     items
00:05:51 verbose #7996 > >     |> am.map fn
00:05:51 verbose #7997 > >     |> am.fold (++) (a ;[[]])
00:05:51 verbose #7998 > >
00:05:51 verbose #7999 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:51 verbose #8000 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:51 verbose #8001 > > │ ### init                                                                     │
00:05:51 verbose #8002 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:51 verbose #8003 > >
00:05:51 verbose #8004 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:51 verbose #8005 > > inl init n : array_base _ =
00:05:51 verbose #8006 > >     am.init n id
00:05:51 verbose #8007 > >     |> fun (a x : _ int _) => x
00:05:51 verbose #8008 > >
00:05:51 verbose #8009 > > ── markdown ────────────────────────────────────────────────────────────────────
00:05:51 verbose #8010 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:05:51 verbose #8011 > > │ ### choose                                                                   │
00:05:51 verbose #8012 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:05:51 verbose #8013 > >
00:05:51 verbose #8014 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:51 verbose #8015 > > inl choose f l =
00:05:51 verbose #8016 > >     (l, [[]])
00:05:51 verbose #8017 > >     ||> am.foldBack fun x acc =>
00:05:51 verbose #8018 > >         match f x with
00:05:51 verbose #8019 > >         | Some y => y :: acc
00:05:51 verbose #8020 > >         | None => acc
00:05:51 verbose #8021 > >     |> listm.toArray
00:05:51 verbose #8022 > >
00:05:51 verbose #8023 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:05:51 verbose #8024 > > //// test
00:05:51 verbose #8025 > > ///! fsharp
00:05:51 verbose #8026 > > ///! cuda
00:05:51 verbose #8027 > > ////! rust // v0.get_mut()[[v2.get().clone() as usize]] = match
00:05:51 verbose #8028 > > v1.get().clone().as_ref() { ^ expected `i32`, found `usize`
00:05:51 verbose #8029 > > ///! typescript
00:05:51 verbose #8030 > > ///! python
00:05:51 verbose #8031 > >
00:05:51 verbose #8032 > > 10
00:05:51 verbose #8033 > > |> init
00:05:51 verbose #8034 > > |> fun x => a x : _ int _
00:05:51 verbose #8035 > > |> choose (fun x => if x % 2 = 0 then Some x else None)
00:05:51 verbose #8036 > > |> _assert_eq (a' ;[[ 0; 2; 4; 6; 8 ]])
00:06:00 verbose #8037 > >
00:06:00 verbose #8038 > > ╭─[ 8.71s - return value ]─────────────────────────────────────────────────────╮
00:06:00 verbose #8039 > > │                                                                              │
00:06:00 verbose #8040 > > │ .py output (Cuda):                                                           │
00:06:00 verbose #8041 > > │ Traceback (most recent call last):                                     │
00:06:00 verbose #8042 > > │   File                                                                   │
00:06:00 verbose #8043 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/9d4ad739531 │
00:06:00 verbose #8044 > > │ a383d55562d2d54e83a808122db5c2290b3d9af7adfba08f40e71/main.py", line 240, in │
00:06:00 verbose #8045 > > │ <module>                                                                   │
00:06:00 verbose #8046 > > │     if __name__ == '__main__': result = main(); None if result is None   │
00:06:00 verbose #8047 > > │ else print(result)                                                         │
00:06:00 verbose #8048 > > │                                         ^^^^^^                         │
00:06:00 verbose #8049 > > │   File                                                                   │
00:06:00 verbose #8050 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/9d4ad739531 │
00:06:00 verbose #8051 > > │ a383d55562d2d54e83a808122db5c2290b3d9af7adfba08f40e71/main.py", line 238, in │
00:06:00 verbose #8052 > > │ main                                                                       │
00:06:00 verbose #8053 > > │     return method0()                                                   │
00:06:00 verbose #8054 > > │            ^^^^^^^^^                                                   │
00:06:00 verbose #8055 > > │   File                                                                   │
00:06:00 verbose #8056 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/9d4ad739531 │
00:06:00 verbose #8057 > > │ a383d55562d2d54e83a808122db5c2290b3d9af7adfba08f40e71/main.py", line 155, in │
00:06:00 verbose #8058 > > │ method0                                                                    │
00:06:00 verbose #8059 > > │     v0 = cp.empty(10,dtype=cp.int32)                                   │
00:06:00 verbose #8060 > > │          ^^^^^^^^^^^^^^^^^^^^^^^^^^^                                   │
00:06:00 verbose #8061 > > │   File                                                                   │
00:06:00 verbose #8062 > > │ "/opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/cupy/_c │
00:06:00 verbose #8063 > > │ reation/basic.py", line 31, in empty                                       │
00:06:00 verbose #8064 > > │     return cupy.ndarray(shape, dtype, order=order)                     │
00:06:00 verbose #8065 > > │            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                     │
00:06:00 verbose #8066 > > │   File "cupy/_core/core.pyx", line 137, in                               │
00:06:00 verbose #8067 > > │ cupy._core.core.ndarray.__new__                                            │
00:06:00 verbose #8068 > > │   File "cupy/_core/core.pyx", line 225, in                               │
00:06:00 verbose #8069 > > │ cupy._core.core._ndarray_base._init                                        │
00:06:00 verbose #8070 > > │   File "cupy/cuda/memory.pyx", line 738, in cupy.cuda.memory.alloc     │
00:06:00 verbose #8071 > > │   File "cupy/cuda/memory.pyx", line 1424, in                             │
00:06:00 verbose #8072 > > │ cupy.cuda.memory.MemoryPool.malloc                                         │
00:06:00 verbose #8073 > > │   File "cupy/cuda/memory.pyx", line 1444, in                             │
00:06:00 verbose #8074 > > │ cupy.cuda.memory.MemoryPool.malloc                                         │
00:06:00 verbose #8075 > > │   File "cupy/cuda/device.pyx", line 40, in cupy.cuda.device.get_device_id │
00:06:00 verbose #8076 > > │ [0m                                                                          │
00:06:00 verbose #8077 > > │   File "cupy_backends/cuda/api/runtime.pyx", line 202, in                │
00:06:00 verbose #8078 > > │ cupy_backends.cuda.api.runtime.getDevice                                   │
00:06:00 verbose #8079 > > │   File "cupy_backends/cuda/api/runtime.pyx", line 146, in                │
00:06:00 verbose #8080 > > │ cupy_backends.cuda.api.runtime.check_status                                │
00:06:00 verbose #8081 > > │ cupy_backends.cuda.api.runtime.CUDARuntimeError:                         │
00:06:00 verbose #8082 > > │ cudaErrorInsufficientDriver: CUDA driver version is insufficient for CUDA    │
00:06:00 verbose #8083 > > │ runtime version                                                            │
00:06:00 verbose #8084 > > │                                                                              │
00:06:00 verbose #8085 > > │ .ts output:                                                                  │
00:06:00 verbose #8086 > > │ __assert_eq / actual: 0,2,4,6,8 / expected: 0,2,4,6,8                        │
00:06:00 verbose #8087 > > │                                                                              │
00:06:00 verbose #8088 > > │ .py output:                                                                  │
00:06:00 verbose #8089 > > │ __assert_eq / actual: [0, 2, 4, 6, 8] / expected: array('l', [0, 2, 4, 6,    │
00:06:00 verbose #8090 > > │ 8])                                                                          │
00:06:00 verbose #8091 > > │                                                                              │
00:06:00 verbose #8092 > > │                                                                              │
00:06:00 verbose #8093 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:00 verbose #8094 > >
00:06:00 verbose #8095 > > ╭─[ 8.71s - stdout ]───────────────────────────────────────────────────────────╮
00:06:00 verbose #8096 > > │ .fsx output:                                                                 │
00:06:00 verbose #8097 > > │ __assert_eq / actual: [|0; 2; 4; 6; 8|] / expected: [|0; 2; 4; 6; 8|]        │
00:06:00 verbose #8098 > > │                                                                              │
00:06:00 verbose #8099 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:00 verbose #8100 > >
00:06:00 verbose #8101 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:00 verbose #8102 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:00 verbose #8103 > > │ ### sum                                                                      │
00:06:00 verbose #8104 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:00 verbose #8105 > >
00:06:00 verbose #8106 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:00 verbose #8107 > > inl sum a =
00:06:00 verbose #8108 > >     a |> am.fold (+) 0
00:06:00 verbose #8109 > >
00:06:00 verbose #8110 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:00 verbose #8111 > > //// test
00:06:00 verbose #8112 > > ///! fsharp
00:06:00 verbose #8113 > > ///! cuda
00:06:00 verbose #8114 > > ///! rust
00:06:00 verbose #8115 > > ///! typescript
00:06:00 verbose #8116 > > ///! python
00:06:00 verbose #8117 > >
00:06:00 verbose #8118 > > 10
00:06:00 verbose #8119 > > |> init
00:06:00 verbose #8120 > > |> fun x => a x : _ int _
00:06:00 verbose #8121 > > |> sum
00:06:00 verbose #8122 > > |> _assert_eq 45
00:06:11 verbose #8123 > >
00:06:11 verbose #8124 > > ╭─[ 11.61s - return value ]────────────────────────────────────────────────────╮
00:06:11 verbose #8125 > > │                                                                              │
00:06:11 verbose #8126 > > │ .py output (Cuda):                                                           │
00:06:11 verbose #8127 > > │ Traceback (most recent call last):                                     │
00:06:11 verbose #8128 > > │   File                                                                   │
00:06:11 verbose #8129 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/d2ff92bc98e │
00:06:11 verbose #8130 > > │ a55b61391a67d3568f034e4f65522e461ab8b56245677d24c8308/main.py", line 124, in │
00:06:11 verbose #8131 > > │ <module>                                                                   │
00:06:11 verbose #8132 > > │     if __name__ == '__main__': result = main(); None if result is None   │
00:06:11 verbose #8133 > > │ else print(result)                                                         │
00:06:11 verbose #8134 > > │                                         ^^^^^^                         │
00:06:11 verbose #8135 > > │   File                                                                   │
00:06:11 verbose #8136 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/d2ff92bc98e │
00:06:11 verbose #8137 > > │ a55b61391a67d3568f034e4f65522e461ab8b56245677d24c8308/main.py", line 122, in │
00:06:11 verbose #8138 > > │ main                                                                       │
00:06:11 verbose #8139 > > │     return method0()                                                   │
00:06:11 verbose #8140 > > │            ^^^^^^^^^                                                   │
00:06:11 verbose #8141 > > │   File                                                                   │
00:06:11 verbose #8142 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/d2ff92bc98e │
00:06:11 verbose #8143 > > │ a55b61391a67d3568f034e4f65522e461ab8b56245677d24c8308/main.py", line 77, in  │
00:06:11 verbose #8144 > > │ method0                                                                    │
00:06:11 verbose #8145 > > │     v0 = cp.empty(10,dtype=cp.int32)                                   │
00:06:11 verbose #8146 > > │          ^^^^^^^^^^^^^^^^^^^^^^^^^^^                                   │
00:06:11 verbose #8147 > > │   File                                                                   │
00:06:11 verbose #8148 > > │ "/opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/cupy/_c │
00:06:11 verbose #8149 > > │ reation/basic.py", line 31, in empty                                       │
00:06:11 verbose #8150 > > │     return cupy.ndarray(shape, dtype, order=order)                     │
00:06:11 verbose #8151 > > │            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                     │
00:06:11 verbose #8152 > > │   File "cupy/_core/core.pyx", line 137, in                               │
00:06:11 verbose #8153 > > │ cupy._core.core.ndarray.__new__                                            │
00:06:11 verbose #8154 > > │   File "cupy/_core/core.pyx", line 225, in                               │
00:06:11 verbose #8155 > > │ cupy._core.core._ndarray_base._init                                        │
00:06:11 verbose #8156 > > │   File "cupy/cuda/memory.pyx", line 738, in cupy.cuda.memory.alloc     │
00:06:11 verbose #8157 > > │   File "cupy/cuda/memory.pyx", line 1424, in                             │
00:06:11 verbose #8158 > > │ cupy.cuda.memory.MemoryPool.malloc                                         │
00:06:11 verbose #8159 > > │   File "cupy/cuda/memory.pyx", line 1444, in                             │
00:06:11 verbose #8160 > > │ cupy.cuda.memory.MemoryPool.malloc                                         │
00:06:11 verbose #8161 > > │   File "cupy/cuda/device.pyx", line 40, in cupy.cuda.device.get_device_id │
00:06:11 verbose #8162 > > │ [0m                                                                          │
00:06:11 verbose #8163 > > │   File "cupy_backends/cuda/api/runtime.pyx", line 202, in                │
00:06:11 verbose #8164 > > │ cupy_backends.cuda.api.runtime.getDevice                                   │
00:06:11 verbose #8165 > > │   File "cupy_backends/cuda/api/runtime.pyx", line 146, in                │
00:06:11 verbose #8166 > > │ cupy_backends.cuda.api.runtime.check_status                                │
00:06:11 verbose #8167 > > │ cupy_backends.cuda.api.runtime.CUDARuntimeError:                         │
00:06:11 verbose #8168 > > │ cudaErrorInsufficientDriver: CUDA driver version is insufficient for CUDA    │
00:06:11 verbose #8169 > > │ runtime version                                                            │
00:06:11 verbose #8170 > > │                                                                              │
00:06:11 verbose #8171 > > │ .rs output:                                                                  │
00:06:11 verbose #8172 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:06:11 verbose #8173 > > │                                                                              │
00:06:11 verbose #8174 > > │ .ts output:                                                                  │
00:06:11 verbose #8175 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:06:11 verbose #8176 > > │                                                                              │
00:06:11 verbose #8177 > > │ .py output:                                                                  │
00:06:11 verbose #8178 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:06:11 verbose #8179 > > │                                                                              │
00:06:11 verbose #8180 > > │                                                                              │
00:06:11 verbose #8181 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:11 verbose #8182 > >
00:06:11 verbose #8183 > > ╭─[ 11.61s - stdout ]──────────────────────────────────────────────────────────╮
00:06:11 verbose #8184 > > │ .fsx output:                                                                 │
00:06:11 verbose #8185 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:06:11 verbose #8186 > > │                                                                              │
00:06:11 verbose #8187 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:11 verbose #8188 > >
00:06:11 verbose #8189 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:11 verbose #8190 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:11 verbose #8191 > > │ ### init_series                                                              │
00:06:11 verbose #8192 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:11 verbose #8193 > >
00:06:11 verbose #8194 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:11 verbose #8195 > > inl init_series start end inc : array_base _ =
00:06:11 verbose #8196 > >     inl total = conv ((end - start) / inc) + 1
00:06:11 verbose #8197 > >     am.init total (conv >> (*) inc >> (+) start)
00:06:11 verbose #8198 > >     |> fun (a x : _ int _) => x
00:06:11 verbose #8199 > >
00:06:11 verbose #8200 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:11 verbose #8201 > > //// test
00:06:11 verbose #8202 > > ///! fsharp
00:06:11 verbose #8203 > > ///! cuda
00:06:11 verbose #8204 > > ///! rust
00:06:11 verbose #8205 > > ///! typescript
00:06:11 verbose #8206 > > ///! python
00:06:11 verbose #8207 > >
00:06:11 verbose #8208 > > init_series 0 4 2
00:06:11 verbose #8209 > > |> _assert_eq' ;[[ 0i32; 2; 4 ]]
00:06:22 verbose #8210 > >
00:06:22 verbose #8211 > > ╭─[ 10.57s - return value ]────────────────────────────────────────────────────╮
00:06:22 verbose #8212 > > │                                                                              │
00:06:22 verbose #8213 > > │ .py output (Cuda):                                                           │
00:06:22 verbose #8214 > > │ Traceback (most recent call last):                                     │
00:06:22 verbose #8215 > > │   File                                                                   │
00:06:22 verbose #8216 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/cc6bc9f685a │
00:06:22 verbose #8217 > > │ 23ff0387e2d5adeefc74ebf5530960aa10194948f6cbeed681926/main.py", line 101, in │
00:06:22 verbose #8218 > > │ <module>                                                                   │
00:06:22 verbose #8219 > > │     if __name__ == '__main__': result = main(); None if result is None   │
00:06:22 verbose #8220 > > │ else print(result)                                                         │
00:06:22 verbose #8221 > > │                                         ^^^^^^                         │
00:06:22 verbose #8222 > > │   File                                                                   │
00:06:22 verbose #8223 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/cc6bc9f685a │
00:06:22 verbose #8224 > > │ 23ff0387e2d5adeefc74ebf5530960aa10194948f6cbeed681926/main.py", line 99, in  │
00:06:22 verbose #8225 > > │ main                                                                       │
00:06:22 verbose #8226 > > │     return method0()                                                   │
00:06:22 verbose #8227 > > │            ^^^^^^^^^                                                   │
00:06:22 verbose #8228 > > │   File                                                                   │
00:06:22 verbose #8229 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/cc6bc9f685a │
00:06:22 verbose #8230 > > │ 23ff0387e2d5adeefc74ebf5530960aa10194948f6cbeed681926/main.py", line 67, in  │
00:06:22 verbose #8231 > > │ method0                                                                    │
00:06:22 verbose #8232 > > │     v0 = cp.empty(3,dtype=cp.int32)                                    │
00:06:22 verbose #8233 > > │          ^^^^^^^^^^^^^^^^^^^^^^^^^^                                    │
00:06:22 verbose #8234 > > │   File                                                                   │
00:06:22 verbose #8235 > > │ "/opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/cupy/_c │
00:06:22 verbose #8236 > > │ reation/basic.py", line 31, in empty                                       │
00:06:22 verbose #8237 > > │     return cupy.ndarray(shape, dtype, order=order)                     │
00:06:22 verbose #8238 > > │            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                     │
00:06:22 verbose #8239 > > │   File "cupy/_core/core.pyx", line 137, in                               │
00:06:22 verbose #8240 > > │ cupy._core.core.ndarray.__new__                                            │
00:06:22 verbose #8241 > > │   File "cupy/_core/core.pyx", line 225, in                               │
00:06:22 verbose #8242 > > │ cupy._core.core._ndarray_base._init                                        │
00:06:22 verbose #8243 > > │   File "cupy/cuda/memory.pyx", line 738, in cupy.cuda.memory.alloc     │
00:06:22 verbose #8244 > > │   File "cupy/cuda/memory.pyx", line 1424, in                             │
00:06:22 verbose #8245 > > │ cupy.cuda.memory.MemoryPool.malloc                                         │
00:06:22 verbose #8246 > > │   File "cupy/cuda/memory.pyx", line 1444, in                             │
00:06:22 verbose #8247 > > │ cupy.cuda.memory.MemoryPool.malloc                                         │
00:06:22 verbose #8248 > > │   File "cupy/cuda/device.pyx", line 40, in cupy.cuda.device.get_device_id │
00:06:22 verbose #8249 > > │ [0m                                                                          │
00:06:22 verbose #8250 > > │   File "cupy_backends/cuda/api/runtime.pyx", line 202, in                │
00:06:22 verbose #8251 > > │ cupy_backends.cuda.api.runtime.getDevice                                   │
00:06:22 verbose #8252 > > │   File "cupy_backends/cuda/api/runtime.pyx", line 146, in                │
00:06:22 verbose #8253 > > │ cupy_backends.cuda.api.runtime.check_status                                │
00:06:22 verbose #8254 > > │ cupy_backends.cuda.api.runtime.CUDARuntimeError:                         │
00:06:22 verbose #8255 > > │ cudaErrorInsufficientDriver: CUDA driver version is insufficient for CUDA    │
00:06:22 verbose #8256 > > │ runtime version                                                            │
00:06:22 verbose #8257 > > │                                                                              │
00:06:22 verbose #8258 > > │ .rs output:                                                                  │
00:06:22 verbose #8259 > > │ __assert_eq' / actual: Array(MutCell([0, 2, 4])) / expected: Array(MutCell([ │
00:06:22 verbose #8260 > > │ 0, 2, 4]))                                                                   │
00:06:22 verbose #8261 > > │                                                                              │
00:06:22 verbose #8262 > > │ .ts output:                                                                  │
00:06:22 verbose #8263 > > │ __assert_eq' / actual: 0,2,4 / expected: 0,2,4                               │
00:06:22 verbose #8264 > > │                                                                              │
00:06:22 verbose #8265 > > │ .py output:                                                                  │
00:06:22 verbose #8266 > > │ __assert_eq' / actual: [0, 2, 4] / expected: array('l', [0, 2, 4])           │
00:06:22 verbose #8267 > > │                                                                              │
00:06:22 verbose #8268 > > │                                                                              │
00:06:22 verbose #8269 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:22 verbose #8270 > >
00:06:22 verbose #8271 > > ╭─[ 10.57s - stdout ]──────────────────────────────────────────────────────────╮
00:06:22 verbose #8272 > > │ .fsx output:                                                                 │
00:06:22 verbose #8273 > > │ __assert_eq' / actual: [|0; 2; 4|] / expected: [|0; 2; 4|]                   │
00:06:22 verbose #8274 > > │                                                                              │
00:06:22 verbose #8275 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:22 verbose #8276 > >
00:06:22 verbose #8277 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:22 verbose #8278 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:22 verbose #8279 > > │ ### head                                                                     │
00:06:22 verbose #8280 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:22 verbose #8281 > >
00:06:22 verbose #8282 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:22 verbose #8283 > > inl head (ar : a _ _) =
00:06:22 verbose #8284 > >     if var_is ar || length ar > 0
00:06:22 verbose #8285 > >     then ar |> index 0
00:06:22 verbose #8286 > >     else error_type "The length of the array should be greater than 0."
00:06:22 verbose #8287 > >
00:06:22 verbose #8288 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:22 verbose #8289 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:22 verbose #8290 > > │ ### last                                                                     │
00:06:22 verbose #8291 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:22 verbose #8292 > >
00:06:22 verbose #8293 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:22 verbose #8294 > > inl last (ar : a _ _) =
00:06:22 verbose #8295 > >     inl len = length ar
00:06:22 verbose #8296 > >     if var_is ar || len > 0
00:06:22 verbose #8297 > >     then ar |> index (len - 1)
00:06:22 verbose #8298 > >     else error_type "The length of the array should be greater than 0."
00:06:22 verbose #8299 > >
00:06:22 verbose #8300 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:22 verbose #8301 > > //// test
00:06:22 verbose #8302 > > ///! fsharp
00:06:22 verbose #8303 > > ///! cuda
00:06:22 verbose #8304 > > ///! rust
00:06:22 verbose #8305 > > ///! typescript
00:06:22 verbose #8306 > > ///! python
00:06:22 verbose #8307 > >
00:06:22 verbose #8308 > > 10
00:06:22 verbose #8309 > > |> init
00:06:22 verbose #8310 > > |> fun x => a x : _ int _
00:06:22 verbose #8311 > > |> last
00:06:22 verbose #8312 > > |> _assert_eq 9
00:06:33 verbose #8313 > >
00:06:33 verbose #8314 > > ╭─[ 11.05s - return value ]────────────────────────────────────────────────────╮
00:06:33 verbose #8315 > > │                                                                              │
00:06:33 verbose #8316 > > │ .py output (Cuda):                                                           │
00:06:33 verbose #8317 > > │ Traceback (most recent call last):                                     │
00:06:33 verbose #8318 > > │   File                                                                   │
00:06:33 verbose #8319 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ed1d2494880 │
00:06:33 verbose #8320 > > │ 22df51e5f876496d2021ed16162ab1f9734f72e17cda34328ce10/main.py", line 103, in │
00:06:33 verbose #8321 > > │ <module>                                                                   │
00:06:33 verbose #8322 > > │     if __name__ == '__main__': result = main(); None if result is None   │
00:06:33 verbose #8323 > > │ else print(result)                                                         │
00:06:33 verbose #8324 > > │                                         ^^^^^^                         │
00:06:33 verbose #8325 > > │   File                                                                   │
00:06:33 verbose #8326 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ed1d2494880 │
00:06:33 verbose #8327 > > │ 22df51e5f876496d2021ed16162ab1f9734f72e17cda34328ce10/main.py", line 101, in │
00:06:33 verbose #8328 > > │ main                                                                       │
00:06:33 verbose #8329 > > │     return method0()                                                   │
00:06:33 verbose #8330 > > │            ^^^^^^^^^                                                   │
00:06:33 verbose #8331 > > │   File                                                                   │
00:06:33 verbose #8332 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ed1d2494880 │
00:06:33 verbose #8333 > > │ 22df51e5f876496d2021ed16162ab1f9734f72e17cda34328ce10/main.py", line 67, in  │
00:06:33 verbose #8334 > > │ method0                                                                    │
00:06:33 verbose #8335 > > │     v0 = cp.empty(10,dtype=cp.int32)                                   │
00:06:33 verbose #8336 > > │          ^^^^^^^^^^^^^^^^^^^^^^^^^^^                                   │
00:06:33 verbose #8337 > > │   File                                                                   │
00:06:33 verbose #8338 > > │ "/opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/cupy/_c │
00:06:33 verbose #8339 > > │ reation/basic.py", line 31, in empty                                       │
00:06:33 verbose #8340 > > │     return cupy.ndarray(shape, dtype, order=order)                     │
00:06:33 verbose #8341 > > │            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                     │
00:06:33 verbose #8342 > > │   File "cupy/_core/core.pyx", line 137, in                               │
00:06:33 verbose #8343 > > │ cupy._core.core.ndarray.__new__                                            │
00:06:33 verbose #8344 > > │   File "cupy/_core/core.pyx", line 225, in                               │
00:06:33 verbose #8345 > > │ cupy._core.core._ndarray_base._init                                        │
00:06:33 verbose #8346 > > │   File "cupy/cuda/memory.pyx", line 738, in cupy.cuda.memory.alloc     │
00:06:33 verbose #8347 > > │   File "cupy/cuda/memory.pyx", line 1424, in                             │
00:06:33 verbose #8348 > > │ cupy.cuda.memory.MemoryPool.malloc                                         │
00:06:33 verbose #8349 > > │   File "cupy/cuda/memory.pyx", line 1444, in                             │
00:06:33 verbose #8350 > > │ cupy.cuda.memory.MemoryPool.malloc                                         │
00:06:33 verbose #8351 > > │   File "cupy/cuda/device.pyx", line 40, in cupy.cuda.device.get_device_id │
00:06:33 verbose #8352 > > │ [0m                                                                          │
00:06:33 verbose #8353 > > │   File "cupy_backends/cuda/api/runtime.pyx", line 202, in                │
00:06:33 verbose #8354 > > │ cupy_backends.cuda.api.runtime.getDevice                                   │
00:06:33 verbose #8355 > > │   File "cupy_backends/cuda/api/runtime.pyx", line 146, in                │
00:06:33 verbose #8356 > > │ cupy_backends.cuda.api.runtime.check_status                                │
00:06:33 verbose #8357 > > │ cupy_backends.cuda.api.runtime.CUDARuntimeError:                         │
00:06:33 verbose #8358 > > │ cudaErrorInsufficientDriver: CUDA driver version is insufficient for CUDA    │
00:06:33 verbose #8359 > > │ runtime version                                                            │
00:06:33 verbose #8360 > > │                                                                              │
00:06:33 verbose #8361 > > │ .rs output:                                                                  │
00:06:33 verbose #8362 > > │ __assert_eq / actual: 9 / expected: 9                                        │
00:06:33 verbose #8363 > > │                                                                              │
00:06:33 verbose #8364 > > │ .ts output:                                                                  │
00:06:33 verbose #8365 > > │ __assert_eq / actual: 9 / expected: 9                                        │
00:06:33 verbose #8366 > > │                                                                              │
00:06:33 verbose #8367 > > │ .py output:                                                                  │
00:06:33 verbose #8368 > > │ __assert_eq / actual: 9 / expected: 9                                        │
00:06:33 verbose #8369 > > │                                                                              │
00:06:33 verbose #8370 > > │                                                                              │
00:06:33 verbose #8371 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:33 verbose #8372 > >
00:06:33 verbose #8373 > > ╭─[ 11.05s - stdout ]──────────────────────────────────────────────────────────╮
00:06:33 verbose #8374 > > │ .fsx output:                                                                 │
00:06:33 verbose #8375 > > │ __assert_eq / actual: 9 / expected: 9                                        │
00:06:33 verbose #8376 > > │                                                                              │
00:06:33 verbose #8377 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:33 verbose #8378 > >
00:06:33 verbose #8379 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:33 verbose #8380 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:33 verbose #8381 > > │ ### try_pick                                                                 │
00:06:33 verbose #8382 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:33 verbose #8383 > >
00:06:33 verbose #8384 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:33 verbose #8385 > > inl try_pick forall t u. (fn : t -> option u) (array : a _ t) : option u =
00:06:33 verbose #8386 > >     (array, None)
00:06:33 verbose #8387 > >     ||> am.foldBack fun x acc =>
00:06:33 verbose #8388 > >         match acc with
00:06:33 verbose #8389 > >         | Some _ => acc
00:06:33 verbose #8390 > >         | None => x |> fn
00:06:33 verbose #8391 > >
00:06:33 verbose #8392 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:33 verbose #8393 > > //// test
00:06:33 verbose #8394 > > ///! fsharp
00:06:33 verbose #8395 > > ///! cuda
00:06:33 verbose #8396 > > ////! rust // match &v23 { Spiral_builder::US0::US0_0(x) => x.clone(), _ =>
00:06:33 verbose #8397 > > unreachable!(), } == 5_i32
00:06:33 verbose #8398 > > ///! typescript
00:06:33 verbose #8399 > > ///! python
00:06:33 verbose #8400 > >
00:06:33 verbose #8401 > > 10
00:06:33 verbose #8402 > > |> init
00:06:33 verbose #8403 > > |> fun x => a x : _ int _
00:06:33 verbose #8404 > > |> try_pick (fun x => if x = 5i32 then Some x else None)
00:06:33 verbose #8405 > > |> _assert_eq (Some 5i32)
00:06:41 verbose #8406 > >
00:06:41 verbose #8407 > > ╭─[ 8.02s - return value ]─────────────────────────────────────────────────────╮
00:06:41 verbose #8408 > > │                                                                              │
00:06:41 verbose #8409 > > │ .py output (Cuda):                                                           │
00:06:41 verbose #8410 > > │ Traceback (most recent call last):                                     │
00:06:41 verbose #8411 > > │   File                                                                   │
00:06:41 verbose #8412 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/f574f6aa78d │
00:06:41 verbose #8413 > > │ d2d474cc9a15e9816e77781ab6f25f1c539d19fe6f862f7ac5433/main.py", line 157, in │
00:06:41 verbose #8414 > > │ <module>                                                                   │
00:06:41 verbose #8415 > > │     if __name__ == '__main__': result = main(); None if result is None   │
00:06:41 verbose #8416 > > │ else print(result)                                                         │
00:06:41 verbose #8417 > > │                                         ^^^^^^                         │
00:06:41 verbose #8418 > > │   File                                                                   │
00:06:41 verbose #8419 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/f574f6aa78d │
00:06:41 verbose #8420 > > │ d2d474cc9a15e9816e77781ab6f25f1c539d19fe6f862f7ac5433/main.py", line 155, in │
00:06:41 verbose #8421 > > │ main                                                                       │
00:06:41 verbose #8422 > > │     return method0()                                                   │
00:06:41 verbose #8423 > > │            ^^^^^^^^^                                                   │
00:06:41 verbose #8424 > > │   File                                                                   │
00:06:41 verbose #8425 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/f574f6aa78d │
00:06:41 verbose #8426 > > │ d2d474cc9a15e9816e77781ab6f25f1c539d19fe6f862f7ac5433/main.py", line 83, in  │
00:06:41 verbose #8427 > > │ method0                                                                    │
00:06:41 verbose #8428 > > │     v0 = cp.empty(10,dtype=cp.int32)                                   │
00:06:41 verbose #8429 > > │          ^^^^^^^^^^^^^^^^^^^^^^^^^^^                                   │
00:06:41 verbose #8430 > > │   File                                                                   │
00:06:41 verbose #8431 > > │ "/opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/cupy/_c │
00:06:41 verbose #8432 > > │ reation/basic.py", line 31, in empty                                       │
00:06:41 verbose #8433 > > │     return cupy.ndarray(shape, dtype, order=order)                     │
00:06:41 verbose #8434 > > │            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                     │
00:06:41 verbose #8435 > > │   File "cupy/_core/core.pyx", line 137, in                               │
00:06:41 verbose #8436 > > │ cupy._core.core.ndarray.__new__                                            │
00:06:41 verbose #8437 > > │   File "cupy/_core/core.pyx", line 225, in                               │
00:06:41 verbose #8438 > > │ cupy._core.core._ndarray_base._init                                        │
00:06:41 verbose #8439 > > │   File "cupy/cuda/memory.pyx", line 738, in cupy.cuda.memory.alloc     │
00:06:41 verbose #8440 > > │   File "cupy/cuda/memory.pyx", line 1424, in                             │
00:06:41 verbose #8441 > > │ cupy.cuda.memory.MemoryPool.malloc                                         │
00:06:41 verbose #8442 > > │   File "cupy/cuda/memory.pyx", line 1444, in                             │
00:06:41 verbose #8443 > > │ cupy.cuda.memory.MemoryPool.malloc                                         │
00:06:41 verbose #8444 > > │   File "cupy/cuda/device.pyx", line 40, in cupy.cuda.device.get_device_id │
00:06:41 verbose #8445 > > │ [0m                                                                          │
00:06:41 verbose #8446 > > │   File "cupy_backends/cuda/api/runtime.pyx", line 202, in                │
00:06:41 verbose #8447 > > │ cupy_backends.cuda.api.runtime.getDevice                                   │
00:06:41 verbose #8448 > > │   File "cupy_backends/cuda/api/runtime.pyx", line 146, in                │
00:06:41 verbose #8449 > > │ cupy_backends.cuda.api.runtime.check_status                                │
00:06:41 verbose #8450 > > │ cupy_backends.cuda.api.runtime.CUDARuntimeError:                         │
00:06:41 verbose #8451 > > │ cudaErrorInsufficientDriver: CUDA driver version is insufficient for CUDA    │
00:06:41 verbose #8452 > > │ runtime version                                                            │
00:06:41 verbose #8453 > > │                                                                              │
00:06:41 verbose #8454 > > │ .ts output:                                                                  │
00:06:41 verbose #8455 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5                            │
00:06:41 verbose #8456 > > │                                                                              │
00:06:41 verbose #8457 > > │ .py output:                                                                  │
00:06:41 verbose #8458 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5                            │
00:06:41 verbose #8459 > > │                                                                              │
00:06:41 verbose #8460 > > │                                                                              │
00:06:41 verbose #8461 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:41 verbose #8462 > >
00:06:41 verbose #8463 > > ╭─[ 8.02s - stdout ]───────────────────────────────────────────────────────────╮
00:06:41 verbose #8464 > > │ .fsx output:                                                                 │
00:06:41 verbose #8465 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5                            │
00:06:41 verbose #8466 > > │                                                                              │
00:06:41 verbose #8467 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:41 verbose #8468 > >
00:06:41 verbose #8469 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:41 verbose #8470 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:41 verbose #8471 > > │ ### indexed                                                                  │
00:06:41 verbose #8472 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:41 verbose #8473 > >
00:06:41 verbose #8474 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:41 verbose #8475 > > inl indexed forall t u {number}. (ar : array_base t) : array_base (u * t) =
00:06:41 verbose #8476 > >     ((0, a ;[[]]), (a ar : _ int _))
00:06:41 verbose #8477 > >     ||> am.fold fun (i, acc) x =>
00:06:41 verbose #8478 > >         i + 1, acc ++ a ;[[i, x]]
00:06:41 verbose #8479 > >     |> snd
00:06:41 verbose #8480 > >     |> fun (a x : _ int _) => x
00:06:41 verbose #8481 > >
00:06:41 verbose #8482 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:41 verbose #8483 > > //// test
00:06:41 verbose #8484 > > ///! fsharp
00:06:41 verbose #8485 > > ////! cuda // Only stack allocated primitive types (i8,i16,i32,i64 and
00:06:41 verbose #8486 > > u8,u16,u32,u64 and f32,f64 and bool) are allowed in CuPy arrays.
00:06:41 verbose #8487 > > ///! rust
00:06:41 verbose #8488 > > ///! typescript
00:06:41 verbose #8489 > > ///! python
00:06:41 verbose #8490 > >
00:06:41 verbose #8491 > > am.init 3i32 ((*) 2)
00:06:41 verbose #8492 > > |> fun (a x : _ int _) => x
00:06:41 verbose #8493 > > |> indexed
00:06:41 verbose #8494 > > |> _assert_eq' ;[[0i32, 0; 1, 2; 2, 4]]
00:06:52 verbose #8495 > >
00:06:52 verbose #8496 > > ╭─[ 10.87s - return value ]────────────────────────────────────────────────────╮
00:06:52 verbose #8497 > > │ .rs output:                                                                  │
00:06:52 verbose #8498 > > │ __assert_eq' / actual: Array(MutCell([(0, 0), (1, 2), (2, 4)])) / expected:  │
00:06:52 verbose #8499 > > │ Array(MutCell([(0, 0), (1, 2), (2, 4)]))                                     │
00:06:52 verbose #8500 > > │                                                                              │
00:06:52 verbose #8501 > > │ .ts output:                                                                  │
00:06:52 verbose #8502 > > │ __assert_eq' / actual: 0,0,1,2,2,4 / expected: 0,0,1,2,2,4                   │
00:06:52 verbose #8503 > > │                                                                              │
00:06:52 verbose #8504 > > │ .py output:                                                                  │
00:06:52 verbose #8505 > > │ __assert_eq' / actual: [(0, 0), (1, 2), (2, 4)] / expected: [(0, 0), (1, 2), │
00:06:52 verbose #8506 > > │ (2, 4)]                                                                      │
00:06:52 verbose #8507 > > │                                                                              │
00:06:52 verbose #8508 > > │                                                                              │
00:06:52 verbose #8509 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:52 verbose #8510 > >
00:06:52 verbose #8511 > > ╭─[ 10.87s - stdout ]──────────────────────────────────────────────────────────╮
00:06:52 verbose #8512 > > │ .fsx output:                                                                 │
00:06:52 verbose #8513 > > │ __assert_eq' / actual: [|struct (0, 0); struct (1, 2); struct (2, 4)|] /     │
00:06:52 verbose #8514 > > │ expected: [|struct (0, 0); struct (1, 2); struct (2, 4)|]                    │
00:06:52 verbose #8515 > > │                                                                              │
00:06:52 verbose #8516 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:52 verbose #8517 > >
00:06:52 verbose #8518 > > ── markdown ────────────────────────────────────────────────────────────────────
00:06:52 verbose #8519 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:06:52 verbose #8520 > > │ ### slice                                                                    │
00:06:52 verbose #8521 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:06:52 verbose #8522 > >
00:06:52 verbose #8523 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:52 verbose #8524 > > inl slice forall dim {int; number} el. from nearTo s : a dim el =
00:06:52 verbose #8525 > >     am.slice { from nearTo } s
00:06:52 verbose #8526 > >
00:06:52 verbose #8527 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:06:52 verbose #8528 > > //// test
00:06:52 verbose #8529 > > ///! fsharp
00:06:52 verbose #8530 > > ///! cuda
00:06:52 verbose #8531 > > ///! rust
00:06:52 verbose #8532 > > ///! typescript
00:06:52 verbose #8533 > > ///! python
00:06:52 verbose #8534 > >
00:06:52 verbose #8535 > > inl x : _ i32 _ = a ;[[ 1i32; 2; 3 ]]
00:06:52 verbose #8536 > > x |> slice 0 0 |> _assert_eq (a ;[[]])
00:06:52 verbose #8537 > > x |> slice 0 1 |> _assert_eq (a ;[[ 1 ]])
00:06:52 verbose #8538 > > x |> slice 1 1 |> _assert_eq (a ;[[]])
00:06:52 verbose #8539 > > x |> slice 1 2 |> _assert_eq (a ;[[ 2 ]])
00:06:52 verbose #8540 > > x |> slice 2 2 |> _assert_eq (a ;[[]])
00:06:52 verbose #8541 > > x |> slice 0 2 |> _assert_eq (a ;[[ 1; 2 ]])
00:07:03 verbose #8542 > >
00:07:03 verbose #8543 > > ╭─[ 11.20s - return value ]────────────────────────────────────────────────────╮
00:07:03 verbose #8544 > > │                                                                              │
00:07:03 verbose #8545 > > │ .py output (Cuda):                                                           │
00:07:03 verbose #8546 > > │ Traceback (most recent call last):                                     │
00:07:03 verbose #8547 > > │   File                                                                   │
00:07:03 verbose #8548 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a8adc9f979f │
00:07:03 verbose #8549 > > │ b0d14587fb26fafe8b2f1cddc6a9cfe0d328177faf8a154a65c7b/main.py", line 367, in │
00:07:03 verbose #8550 > > │ <module>                                                                   │
00:07:03 verbose #8551 > > │     if __name__ == '__main__': result = main(); None if result is None   │
00:07:03 verbose #8552 > > │ else print(result)                                                         │
00:07:03 verbose #8553 > > │                                         ^^^^^^                         │
00:07:03 verbose #8554 > > │   File                                                                   │
00:07:03 verbose #8555 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a8adc9f979f │
00:07:03 verbose #8556 > > │ b0d14587fb26fafe8b2f1cddc6a9cfe0d328177faf8a154a65c7b/main.py", line 365, in │
00:07:03 verbose #8557 > > │ main                                                                       │
00:07:03 verbose #8558 > > │     return method0()                                                   │
00:07:03 verbose #8559 > > │            ^^^^^^^^^                                                   │
00:07:03 verbose #8560 > > │   File                                                                   │
00:07:03 verbose #8561 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a8adc9f979f │
00:07:03 verbose #8562 > > │ b0d14587fb26fafe8b2f1cddc6a9cfe0d328177faf8a154a65c7b/main.py", line 108, in │
00:07:03 verbose #8563 > > │ method0                                                                    │
00:07:03 verbose #8564 > > │     v0 = cp.array([1, 2, 3],dtype=cp.int32)                            │
00:07:03 verbose #8565 > > │          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                            │
00:07:03 verbose #8566 > > │   File                                                                   │
00:07:03 verbose #8567 > > │ "/opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/cupy/_c │
00:07:03 verbose #8568 > > │ reation/from_data.py", line 53, in array                                   │
00:07:03 verbose #8569 > > │     return _core.array(obj, dtype, copy, order, subok, ndmin, blocking)38;5;2m│
00:07:03 verbose #8570 > > │ 0m                                                                           │
00:07:03 verbose #8571 > > │            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^38;5;2m│
00:07:03 verbose #8572 > > │ 0m                                                                           │
00:07:03 verbose #8573 > > │   File "cupy/_core/core.pyx", line 2408, in cupy._core.core.array      │
00:07:03 verbose #8574 > > │   File "cupy/_core/core.pyx", line 2435, in cupy._core.core.array      │
00:07:03 verbose #8575 > > │   File "cupy/_core/core.pyx", line 2578, in                              │
00:07:03 verbose #8576 > > │ cupy._core.core._array_default                                             │
00:07:03 verbose #8577 > > │   File "cupy/_core/core.pyx", line...moryPool.malloc                   │
00:07:03 verbose #8578 > > │   File "cupy/cuda/device.pyx", line 40, in cupy.cuda.device.get_device_id │
00:07:03 verbose #8579 > > │ [0m                                                                          │
00:07:03 verbose #8580 > > │   File "cupy_backends/cuda/api/runtime.pyx", line 202, in                │
00:07:03 verbose #8581 > > │ cupy_backends.cuda.api.runtime.getDevice                                   │
00:07:03 verbose #8582 > > │   File "cupy_backends/cuda/api/runtime.pyx", line 146, in                │
00:07:03 verbose #8583 > > │ cupy_backends.cuda.api.runtime.check_status                                │
00:07:03 verbose #8584 > > │ cupy_backends.cuda.api.runtime.CUDARuntimeError:                         │
00:07:03 verbose #8585 > > │ cudaErrorInsufficientDriver: CUDA driver version is insufficient for CUDA    │
00:07:03 verbose #8586 > > │ runtime version                                                            │
00:07:03 verbose #8587 > > │                                                                              │
00:07:03 verbose #8588 > > │                                                                              │
00:07:03 verbose #8589 > > │ .rs output:                                                                  │
00:07:03 verbose #8590 > > │ __assert_eq / actual: Array(MutCell([])) / expected: Array(MutCell([]))      │
00:07:03 verbose #8591 > > │ __assert_eq / actual: Array(MutCell([1])) / expected: Array(MutCell([1]))    │
00:07:03 verbose #8592 > > │ __assert_eq / actual: Array(MutCell([])) / expected: Array(MutCell([]))      │
00:07:03 verbose #8593 > > │ __assert_eq / actual: Array(MutCell([2])) / expected: Array(MutCell([2]))    │
00:07:03 verbose #8594 > > │ __assert_eq / actual: Array(MutCell([])) / expected: Array(MutCell([]))      │
00:07:03 verbose #8595 > > │ __assert_eq / actual: Array(MutCell([1, 2])) / expected: Array(MutCell([1,   │
00:07:03 verbose #8596 > > │ 2]))                                                                         │
00:07:03 verbose #8597 > > │                                                                              │
00:07:03 verbose #8598 > > │                                                                              │
00:07:03 verbose #8599 > > │ .ts output:                                                                  │
00:07:03 verbose #8600 > > │ __assert_eq / actual:  / expected:                                           │
00:07:03 verbose #8601 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:07:03 verbose #8602 > > │ __assert_eq / actual:  / expected:                                           │
00:07:03 verbose #8603 > > │ __assert_eq / actual: 2 / expected: 2                                        │
00:07:03 verbose #8604 > > │ __assert_eq / actual:  / expected:                                           │
00:07:03 verbose #8605 > > │ __assert_eq / actual: 1,2 / expected: 1,2                                    │
00:07:03 verbose #8606 > > │                                                                              │
00:07:03 verbose #8607 > > │                                                                              │
00:07:03 verbose #8608 > > │ .py output:                                                                  │
00:07:03 verbose #8609 > > │ __assert_eq / actual: [] / expected: array('l')                              │
00:07:03 verbose #8610 > > │ __assert_eq / actual: [1] / expected: array('l', [1])                        │
00:07:03 verbose #8611 > > │ __assert_eq / actual: [] / expected: array('l')                              │
00:07:03 verbose #8612 > > │ __assert_eq / actual: [2] / expected: array('l', [2])                        │
00:07:03 verbose #8613 > > │ __assert_eq / actual: [] / expected: array('l')                              │
00:07:03 verbose #8614 > > │ __assert_eq / actual: [1, 2] / expected: array('l', [1, 2])                  │
00:07:03 verbose #8615 > > │                                                                              │
00:07:03 verbose #8616 > > │                                                                              │
00:07:03 verbose #8617 > > │                                                                              │
00:07:03 verbose #8618 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:03 verbose #8619 > >
00:07:03 verbose #8620 > > ╭─[ 11.20s - stdout ]──────────────────────────────────────────────────────────╮
00:07:03 verbose #8621 > > │ .fsx output:                                                                 │
00:07:03 verbose #8622 > > │ __assert_eq / actual: [||] / expected: [||]                                  │
00:07:03 verbose #8623 > > │ __assert_eq / actual: [|1|] / expected: [|1|]                                │
00:07:03 verbose #8624 > > │ __assert_eq / actual: [||] / expected: [||]                                  │
00:07:03 verbose #8625 > > │ __assert_eq / actual: [|2|] / expected: [|2|]                                │
00:07:03 verbose #8626 > > │ __assert_eq / actual: [||] / expected: [||]                                  │
00:07:03 verbose #8627 > > │ __assert_eq / actual: [|1; 2|] / expected: [|1; 2|]                          │
00:07:03 verbose #8628 > > │                                                                              │
00:07:03 verbose #8629 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:03 verbose #8630 > >
00:07:03 verbose #8631 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:03 verbose #8632 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:03 verbose #8633 > > │ ### range                                                                    │
00:07:03 verbose #8634 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:03 verbose #8635 > >
00:07:03 verbose #8636 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:03 verbose #8637 > > union range dim =
00:07:03 verbose #8638 > >     | Start : dim
00:07:03 verbose #8639 > >     | End : dim -> dim
00:07:03 verbose #8640 > >
00:07:03 verbose #8641 > > inl range start end s =
00:07:03 verbose #8642 > >     inl start, end =
00:07:03 verbose #8643 > >         match start, end with
00:07:03 verbose #8644 > >         | Start start, End fn =>
00:07:03 verbose #8645 > >             start, s |> length |> conv |> fn
00:07:03 verbose #8646 > >         | End start_fn, End end_fn =>
00:07:03 verbose #8647 > >             inl len = s |> length |> conv
00:07:03 verbose #8648 > >             start_fn len, end_fn len
00:07:03 verbose #8649 > >     s |> slice (start |> unbox) (end |> unbox)
00:07:04 verbose #8650 > >
00:07:04 verbose #8651 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:04 verbose #8652 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:04 verbose #8653 > > │ ## rust                                                                      │
00:07:04 verbose #8654 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:04 verbose #8655 > >
00:07:04 verbose #8656 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:04 verbose #8657 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:04 verbose #8658 > > │ ### vec                                                                      │
00:07:04 verbose #8659 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:04 verbose #8660 > >
00:07:04 verbose #8661 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:04 verbose #8662 > > nominal vec t =
00:07:04 verbose #8663 > >     `(
00:07:04 verbose #8664 > >         backend_switch `(()) `({}) {
00:07:04 verbose #8665 > >             Fsharp =
00:07:04 verbose #8666 > >                 (fun () =>
00:07:04 verbose #8667 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:04 verbose #8668 > > Fable.Core.Emit(\"Vec<$0>\")>]]\n#endif\ntype Vec<'T> = class end"
00:07:04 verbose #8669 > >                 ) : () -> ()
00:07:04 verbose #8670 > >         }
00:07:04 verbose #8671 > >         $'' : $'Vec<`t>'
00:07:04 verbose #8672 > >     )
00:07:04 verbose #8673 > >
00:07:04 verbose #8674 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:04 verbose #8675 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:04 verbose #8676 > > │ ### from_vec                                                                 │
00:07:04 verbose #8677 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:04 verbose #8678 > >
00:07:04 verbose #8679 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:04 verbose #8680 > > inl from_vec forall dim el. (vec : vec el) : a dim el =
00:07:04 verbose #8681 > >     !\\(vec, $'"fable_library_rust::NativeArray_::array_from($0)"')
00:07:04 verbose #8682 > >
00:07:04 verbose #8683 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:04 verbose #8684 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:04 verbose #8685 > > │ ### to_vec                                                                   │
00:07:04 verbose #8686 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:04 verbose #8687 > >
00:07:04 verbose #8688 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:04 verbose #8689 > > inl to_vec forall t. (ab : array_base t) : vec t =
00:07:04 verbose #8690 > >     !\\(ab, $'"$0.to_vec()"')
00:07:04 verbose #8691 > >
00:07:04 verbose #8692 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:04 verbose #8693 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:04 verbose #8694 > > │ ### vec_push                                                                 │
00:07:04 verbose #8695 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:04 verbose #8696 > >
00:07:04 verbose #8697 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:04 verbose #8698 > > inl vec_push forall el. (el : el) (vec : vec el) : vec el =
00:07:04 verbose #8699 > >     inl el = join el
00:07:04 verbose #8700 > >     inl vec = join vec
00:07:04 verbose #8701 > >     (!\($'"true; let mut !vec = !vec"') : bool) |> ignore
00:07:04 verbose #8702 > >     // inl vec = vec |> rust.to_mut
00:07:04 verbose #8703 > >     (!\($'"true; !vec.push(!el)"') : bool) |> ignore
00:07:04 verbose #8704 > >     !\($'"!vec"')
00:07:04 verbose #8705 > >
00:07:04 verbose #8706 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:04 verbose #8707 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:04 verbose #8708 > > │ ### vec_reverse                                                              │
00:07:04 verbose #8709 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:04 verbose #8710 > >
00:07:04 verbose #8711 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:04 verbose #8712 > > inl vec_reverse forall el. (vec : vec el) : vec el =
00:07:04 verbose #8713 > >     inl vec = join vec
00:07:04 verbose #8714 > >     (!\($'"true; let mut !vec = !vec"') : bool) |> ignore
00:07:04 verbose #8715 > >     (!\($'"true; !vec.reverse()"') : bool) |> ignore
00:07:04 verbose #8716 > >     !\($'"!vec"')
00:07:04 verbose #8717 > >
00:07:04 verbose #8718 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:04 verbose #8719 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:04 verbose #8720 > > │ ### vec_retain                                                               │
00:07:04 verbose #8721 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:04 verbose #8722 > >
00:07:04 verbose #8723 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:04 verbose #8724 > > inl vec_retain forall el. (fn : el -> bool) (vec : vec el) : vec el =
00:07:04 verbose #8725 > >     inl vec = join vec
00:07:04 verbose #8726 > >     inl fn = join fn
00:07:04 verbose #8727 > >     (!\($'"true; let mut !vec = !vec"') : bool) |> ignore
00:07:04 verbose #8728 > >     // inl vec = vec |> rust.to_mut
00:07:04 verbose #8729 > >     (!\($'"true; !vec.retain(|x| !fn(x.clone()))"') : bool) |> ignore
00:07:04 verbose #8730 > >     !\($'"!vec"')
00:07:04 verbose #8731 > >
00:07:04 verbose #8732 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:04 verbose #8733 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:04 verbose #8734 > > │ ### vec_sort_by_key                                                          │
00:07:04 verbose #8735 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:04 verbose #8736 > >
00:07:04 verbose #8737 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:04 verbose #8738 > > inl vec_sort_by_key forall el t. (fn : el -> t) (vec : vec el) : vec el =
00:07:04 verbose #8739 > >     inl vec = join vec
00:07:04 verbose #8740 > >     inl fn = join fn
00:07:04 verbose #8741 > >     (!\($'"true; let mut !vec = !vec"') : bool) |> ignore
00:07:04 verbose #8742 > >     // inl vec = vec |> rust.to_mut
00:07:04 verbose #8743 > >     (!\($'"true; !vec.sort_by_key(|x| !fn(x.clone()))"') : bool) |> ignore
00:07:04 verbose #8744 > >     !\($'"!vec"')
00:07:04 verbose #8745 > >
00:07:04 verbose #8746 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:04 verbose #8747 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:04 verbose #8748 > > │ ### vec_extend                                                               │
00:07:04 verbose #8749 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:04 verbose #8750 > >
00:07:04 verbose #8751 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:04 verbose #8752 > > inl vec_extend forall el. (el : vec el) (vec : vec el) : vec el =
00:07:04 verbose #8753 > >     inl el = join el
00:07:04 verbose #8754 > >     inl vec = join vec
00:07:04 verbose #8755 > >     (!\($'"true; let mut !vec = !vec"') : bool) |> ignore
00:07:04 verbose #8756 > >     // inl vec = vec |> rust.to_mut
00:07:04 verbose #8757 > >     (!\($'"true; !vec.extend(!el)"') : bool) |> ignore
00:07:04 verbose #8758 > >     !\($'"!vec"')
00:07:05 verbose #8759 > >
00:07:05 verbose #8760 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:05 verbose #8761 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:05 verbose #8762 > > │ ### vec_collect                                                              │
00:07:05 verbose #8763 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:05 verbose #8764 > >
00:07:05 verbose #8765 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:05 verbose #8766 > > inl vec_collect fn vec =
00:07:05 verbose #8767 > >     ((;[[]] |> to_vec), (vec |> from_vec : _ i32 _))
00:07:05 verbose #8768 > >     ||> am.fold fun acc x =>
00:07:05 verbose #8769 > >         acc |> vec_extend (fn x)
00:07:05 verbose #8770 > >
00:07:05 verbose #8771 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:05 verbose #8772 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:05 verbose #8773 > > │ ### vec_collect_option                                                       │
00:07:05 verbose #8774 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:05 verbose #8775 > >
00:07:05 verbose #8776 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:05 verbose #8777 > > inl vec_collect_option vec =
00:07:05 verbose #8778 > >     ((;[[]] |> to_vec |> Ok), (vec |> from_vec : _ i32 _))
00:07:05 verbose #8779 > >     ||> am.fold fun acc x =>
00:07:05 verbose #8780 > >         x
00:07:05 verbose #8781 > >         |> resultm.unbox
00:07:05 verbose #8782 > >         |> fun x =>
00:07:05 verbose #8783 > >             match acc, x |> resultm.map optionm'.unbox with
00:07:05 verbose #8784 > >             | Ok acc, Ok (Some x) => acc |> vec_extend x |> Ok
00:07:05 verbose #8785 > >             | _, Error error => error |> Error
00:07:05 verbose #8786 > >             | _ => acc
00:07:05 verbose #8787 > >
00:07:05 verbose #8788 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:05 verbose #8789 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:05 verbose #8790 > > │ ### vec_collect_into                                                         │
00:07:05 verbose #8791 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:05 verbose #8792 > >
00:07:05 verbose #8793 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:05 verbose #8794 > > inl vec_collect_into forall (c : * -> * -> *) t e.
00:07:05 verbose #8795 > >     (x : vec (c t e))
00:07:05 verbose #8796 > >     : c (vec t) e
00:07:05 verbose #8797 > >     =
00:07:05 verbose #8798 > >     !\($'"!x.into_iter().collect()"')
00:07:05 verbose #8799 > >
00:07:05 verbose #8800 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:05 verbose #8801 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:05 verbose #8802 > > │ ### vec_mapi                                                                 │
00:07:05 verbose #8803 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:05 verbose #8804 > >
00:07:05 verbose #8805 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:05 verbose #8806 > > inl vec_mapi forall dim t u. (fn : dim -> t -> u) (ar : vec t) : vec u =
00:07:05 verbose #8807 > >     inl fn = join fn
00:07:05 verbose #8808 > >     inl ar = join ar
00:07:05 verbose #8809 > >     !\($'"!ar.iter().enumerate().map(|(i, x)|
00:07:05 verbose #8810 > > !fn(i.try_into().unwrap())(x.clone())).collect::<Vec<_>>()"')
00:07:05 verbose #8811 > >
00:07:05 verbose #8812 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:05 verbose #8813 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:05 verbose #8814 > > │ ### vec_map                                                                  │
00:07:05 verbose #8815 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:05 verbose #8816 > >
00:07:05 verbose #8817 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:05 verbose #8818 > > inl vec_map forall t u. (fn : t -> u) (ar : vec t) : vec u =
00:07:05 verbose #8819 > >     (!\\(ar, $'"true; let _vec_map : Vec<_> = $0.into_iter().map(|x| { //"') :
00:07:05 verbose #8820 > > bool) |> ignore
00:07:05 verbose #8821 > >     inl result = fn !\($'"x"')
00:07:05 verbose #8822 > >     inl is_unit =
00:07:05 verbose #8823 > >         real
00:07:05 verbose #8824 > >             typecase u with
00:07:05 verbose #8825 > >             | () => true
00:07:05 verbose #8826 > >             | _ => false
00:07:05 verbose #8827 > >     if is_unit
00:07:05 verbose #8828 > >     then (!\($'"true; }}).collect::<Vec<_>>()"') : bool) |> ignore
00:07:05 verbose #8829 > >     else (!\\(result, $'"true; $0 }).collect::<Vec<_>>()"') : bool) |> ignore
00:07:05 verbose #8830 > >     !\($'"_vec_map"')
00:07:05 verbose #8831 > >
00:07:05 verbose #8832 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:05 verbose #8833 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:05 verbose #8834 > > │ ### vec_map'                                                                 │
00:07:05 verbose #8835 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:05 verbose #8836 > >
00:07:05 verbose #8837 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:05 verbose #8838 > > inl vec_map' forall t u. (fn : t -> u) (ar : vec t) : vec u =
00:07:05 verbose #8839 > >     !\\((ar, fn), $'"$0.into_iter().map(|x|
00:07:05 verbose #8840 > > $1(x.clone())).collect::<Vec<_>>()"')
00:07:05 verbose #8841 > >
00:07:05 verbose #8842 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:05 verbose #8843 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:05 verbose #8844 > > │ ### vec_fold'                                                                │
00:07:05 verbose #8845 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:05 verbose #8846 > >
00:07:05 verbose #8847 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:05 verbose #8848 > > inl vec_fold' forall t u. (fn : u -> t -> u) (init : u) (ar : vec t) : u =
00:07:05 verbose #8849 > >     (!\\(ar, $'"true; let _vec_fold_ = $0.into_iter().fold(!init, |acc, x| {
00:07:05 verbose #8850 > > //"') : bool) |> ignore
00:07:05 verbose #8851 > >     (!\\(fn !\($'"acc"') !\($'"x"'), $'"true; $0 })"') : bool) |> ignore
00:07:05 verbose #8852 > >     !\($'"_vec_fold_"')
00:07:05 verbose #8853 > >
00:07:05 verbose #8854 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:05 verbose #8855 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:05 verbose #8856 > > │ ### vec_for_each                                                             │
00:07:05 verbose #8857 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:05 verbose #8858 > >
00:07:05 verbose #8859 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:05 verbose #8860 > > inl vec_for_each forall t. (fn : t -> ()) (ar : vec t) : () =
00:07:05 verbose #8861 > >     (!\\((ar, fn), $'"true; $0.iter().for_each(|x| { $1(x.clone()); }); //"') :
00:07:05 verbose #8862 > > bool) |> ignore
00:07:05 verbose #8863 > >
00:07:05 verbose #8864 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:05 verbose #8865 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:05 verbose #8866 > > │ ### vec_for_each'                                                            │
00:07:05 verbose #8867 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:05 verbose #8868 > >
00:07:05 verbose #8869 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:05 verbose #8870 > > inl vec_for_each' forall t. (fn : t -> ()) (ar : vec t) : () =
00:07:05 verbose #8871 > >     (!\\(ar, $'"true; $0.into_iter().for_each(|x| { //"') : bool) |> ignore
00:07:05 verbose #8872 > >     (!\\(fn !\($'"x"'), $'$"true;"') : bool) |> ignore
00:07:05 verbose #8873 > >     (!\($'"true; }}); { //"') : bool) |> ignore
00:07:05 verbose #8874 > >
00:07:05 verbose #8875 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:05 verbose #8876 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:05 verbose #8877 > > │ ### vec_filter                                                               │
00:07:05 verbose #8878 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:05 verbose #8879 > >
00:07:05 verbose #8880 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:05 verbose #8881 > > inl vec_filter forall t. (fn : t -> bool) (ar : vec t) : vec t =
00:07:05 verbose #8882 > >     inl fn = join fn
00:07:05 verbose #8883 > >     inl ar = join ar
00:07:05 verbose #8884 > >     !\($'"!ar.into_iter().filter(|x|
00:07:05 verbose #8885 > > !fn(x.clone().clone())).collect::<Vec<_>>()"')
00:07:06 verbose #8886 > >
00:07:06 verbose #8887 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:06 verbose #8888 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:06 verbose #8889 > > │ ### vec_len                                                                  │
00:07:06 verbose #8890 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:06 verbose #8891 > >
00:07:06 verbose #8892 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:06 verbose #8893 > > inl vec_len forall t. (vec : vec t) : unativeint =
00:07:06 verbose #8894 > >     !\\(vec, $'"$0.len()"')
00:07:06 verbose #8895 > >
00:07:06 verbose #8896 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:06 verbose #8897 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:06 verbose #8898 > > │ ### vec_chunks                                                               │
00:07:06 verbose #8899 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:06 verbose #8900 > >
00:07:06 verbose #8901 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:06 verbose #8902 > > inl vec_chunks forall t. (n : i32) (vec : vec t) : vec (vec t) =
00:07:06 verbose #8903 > >     !\\(vec, $'"$0.chunks(!n).map(|x| x.into_iter().map(|x|
00:07:06 verbose #8904 > > x.clone()).collect::<Vec<_>>()).collect::<Vec<_>>()"')
00:07:06 verbose #8905 > >
00:07:06 verbose #8906 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:06 verbose #8907 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:06 verbose #8908 > > │ ### slice                                                                    │
00:07:06 verbose #8909 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:06 verbose #8910 > >
00:07:06 verbose #8911 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:06 verbose #8912 > > nominal slice t =
00:07:06 verbose #8913 > >     `(
00:07:06 verbose #8914 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:06 verbose #8915 > > Fable.Core.Emit(\"[[$0]]\")>]]\n#endif\ntype Slice<'T> = class end"
00:07:06 verbose #8916 > >         $'' : $'Slice<`t>'
00:07:06 verbose #8917 > >     )
00:07:06 verbose #8918 > >
00:07:06 verbose #8919 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:06 verbose #8920 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:06 verbose #8921 > > │ ### slice'                                                                   │
00:07:06 verbose #8922 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:06 verbose #8923 > >
00:07:06 verbose #8924 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:06 verbose #8925 > > nominal slice' el dim =
00:07:06 verbose #8926 > >     `(
00:07:06 verbose #8927 > >         backend_switch `(()) `({}) {
00:07:06 verbose #8928 > >             Fsharp =
00:07:06 verbose #8929 > >                 (fun () =>
00:07:06 verbose #8930 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:06 verbose #8931 > > Fable.Core.Emit(\"_\")>]]\n#endif\ntype Slice'<'T> = class end"
00:07:06 verbose #8932 > >                 ) : () -> ()
00:07:06 verbose #8933 > >         }
00:07:06 verbose #8934 > >         $'' : $'Slice\'<`el>'
00:07:06 verbose #8935 > >     )
00:07:06 verbose #8936 > >
00:07:06 verbose #8937 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:06 verbose #8938 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:06 verbose #8939 > > │ ### slice_singleton                                                          │
00:07:06 verbose #8940 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:06 verbose #8941 > >
00:07:06 verbose #8942 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:06 verbose #8943 > > inl slice_singleton forall dim el. (x : option el) : slice' el dim =
00:07:06 verbose #8944 > >     match x with
00:07:06 verbose #8945 > >     | Some x => !\($'"[[!x]]"')
00:07:06 verbose #8946 > >     | None =>
00:07:06 verbose #8947 > >         !\($'"[[\\\"\\\".to_string()]]"') : slice' el dim
00:07:06 verbose #8948 > >             // emit_expr `(()) `(slice' el dim) () ($'"[[@dim]]"' : string) :
00:07:06 verbose #8949 > > slice' el 10
00:07:06 verbose #8950 > >             // !\( : string) : slice' el i32 // !\($'"[[]]"')
00:07:06 verbose #8951 > >
00:07:06 verbose #8952 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:06 verbose #8953 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:06 verbose #8954 > > │ ### slice_length                                                             │
00:07:06 verbose #8955 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:06 verbose #8956 > >
00:07:06 verbose #8957 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:06 verbose #8958 > > inl slice_length forall t dim. (x : slice' t dim) : unativeint =
00:07:06 verbose #8959 > >     !\($'"!x.len()"')
00:07:06 verbose #8960 > >
00:07:06 verbose #8961 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:06 verbose #8962 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:06 verbose #8963 > > │ ### slice_range                                                              │
00:07:06 verbose #8964 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:06 verbose #8965 > >
00:07:06 verbose #8966 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:06 verbose #8967 > > inl slice_range forall t dim. (start : range t) (end : range t) (s : slice' t
00:07:06 verbose #8968 > > dim) : rust.ref (slice' t dim) =
00:07:06 verbose #8969 > >     inl len = s |> slice_length
00:07:06 verbose #8970 > >     inl start, (end : unativeint) =
00:07:06 verbose #8971 > >         match start, end with
00:07:06 verbose #8972 > >         | Start start, End fn => start, len |> convert |> fn |> convert
00:07:06 verbose #8973 > >         | End start_fn, End end_fn => len |> convert |> start_fn, len |> convert
00:07:06 verbose #8974 > > |> end_fn |> convert
00:07:06 verbose #8975 > >     match start, end with
00:07:06 verbose #8976 > >     | start, end when unbox end =. len => !\($'"&!s[[!start..]]"')
00:07:06 verbose #8977 > >     | start, end => !\\((start, end), $'"&!s[[$0..$1]]"')
00:07:06 verbose #8978 > >
00:07:06 verbose #8979 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:06 verbose #8980 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:06 verbose #8981 > > │ ### new_slice                                                                │
00:07:06 verbose #8982 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:06 verbose #8983 > >
00:07:06 verbose #8984 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:06 verbose #8985 > > inl new_slice forall el dim. (el : el) : slice' el dim =
00:07:06 verbose #8986 > >     !\\(el, $'"[[$0; @dim]]"')
00:07:06 verbose #8987 > >
00:07:06 verbose #8988 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:06 verbose #8989 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:06 verbose #8990 > > │ ### as_slice                                                                 │
00:07:06 verbose #8991 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:06 verbose #8992 > >
00:07:06 verbose #8993 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:06 verbose #8994 > > inl as_slice forall t. (x : array_base t) : rust.ref (slice t) =
00:07:06 verbose #8995 > >     inl x = x |> to_vec
00:07:06 verbose #8996 > >     !\($'"!x.as_slice()"')
00:07:06 verbose #8997 > >
00:07:06 verbose #8998 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:06 verbose #8999 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:06 verbose #9000 > > │ ### slice_to_vec                                                             │
00:07:06 verbose #9001 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:06 verbose #9002 > >
00:07:06 verbose #9003 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:06 verbose #9004 > > inl slice_to_vec forall t. (slice : rust.ref (slice t)) : vec t =
00:07:06 verbose #9005 > >     !\\(slice, $'"$0.iter().map(|x| *x).collect::<Vec<_>>()"')
00:07:07 verbose #9006 > >
00:07:07 verbose #9007 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:07 verbose #9008 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:07 verbose #9009 > > │ ### any                                                                      │
00:07:07 verbose #9010 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:07 verbose #9011 > >
00:07:07 verbose #9012 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:07 verbose #9013 > > inl any forall t. (fn : t -> bool) (source : array_base t) : bool =
00:07:07 verbose #9014 > >     !\($'"!source.any(|x| !fn(x))"')
00:07:07 verbose #9015 > >
00:07:07 verbose #9016 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:07 verbose #9017 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:07 verbose #9018 > > │ ### iter_collect vec                                                         │
00:07:07 verbose #9019 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:07 verbose #9020 > >
00:07:07 verbose #9021 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:07 verbose #9022 > > instance iter_collect vec = fun (iter : into_iterator u) =>
00:07:07 verbose #9023 > >     !\($'"!iter.collect::<Vec<_>>()"')
00:07:07 verbose #9024 > >
00:07:07 verbose #9025 > > instance iter_collect'' vec = fun (iter : into_iterator (t (u v))) =>
00:07:07 verbose #9026 > >     !\($'"!iter.collect::<Vec<_>>()"')
00:07:07 verbose #9027 > >
00:07:07 verbose #9028 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:07 verbose #9029 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:07 verbose #9030 > > │ ### new_vec                                                                  │
00:07:07 verbose #9031 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:07 verbose #9032 > >
00:07:07 verbose #9033 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:07 verbose #9034 > > inl new_vec forall t. (items : list t) : vec t =
00:07:07 verbose #9035 > >     inl items =
00:07:07 verbose #9036 > >         (items, ("", 0i32))
00:07:07 verbose #9037 > >         ||> listm.foldBack fun (x : t) (acc, i) =>
00:07:07 verbose #9038 > >             inl x = join x
00:07:07 verbose #9039 > >             $'"!x"' +. (if i = 0 then "" else ", ") +. acc, i + 1
00:07:07 verbose #9040 > >         |> fst
00:07:07 verbose #9041 > >     !\($'"vec\![[" + !items + "]]"')
00:07:07 verbose #9042 > >
00:07:07 verbose #9043 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:07 verbose #9044 > > //// test
00:07:07 verbose #9045 > > ///! rust
00:07:07 verbose #9046 > >
00:07:07 verbose #9047 > > [[ 0i32; 1 ]]
00:07:07 verbose #9048 > > |> new_vec
00:07:07 verbose #9049 > > |> sm'.format_debug'
00:07:07 verbose #9050 > > |> sm'.from_std_string
00:07:07 verbose #9051 > > |> _assert_eq "[[0, 1]]"
00:07:14 verbose #9052 > >
00:07:14 verbose #9053 > > ╭─[ 6.87s - return value ]─────────────────────────────────────────────────────╮
00:07:14 verbose #9054 > > │ __assert_eq / actual: "[0, 1]" / expected: "[0, 1]"                          │
00:07:14 verbose #9055 > > │                                                                              │
00:07:14 verbose #9056 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:14 verbose #9057 > >
00:07:14 verbose #9058 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:14 verbose #9059 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:14 verbose #9060 > > │ ## fsharp                                                                    │
00:07:14 verbose #9061 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:14 verbose #9062 > >
00:07:14 verbose #9063 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:14 verbose #9064 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:14 verbose #9065 > > │ ### average                                                                  │
00:07:14 verbose #9066 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:14 verbose #9067 > >
00:07:14 verbose #9068 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:14 verbose #9069 > > inl average forall el {number}. (a : a _ el) : el =
00:07:14 verbose #9070 > >     $'!a |> Array.average'
00:07:14 verbose #9071 > >
00:07:14 verbose #9072 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:14 verbose #9073 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:14 verbose #9074 > > │ ### distinct                                                                 │
00:07:14 verbose #9075 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:14 verbose #9076 > >
00:07:14 verbose #9077 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:14 verbose #9078 > > inl distinct forall dim el. (a : a dim el) : a dim el =
00:07:14 verbose #9079 > >     $'!a |> Array.distinct'
00:07:14 verbose #9080 > >
00:07:14 verbose #9081 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:14 verbose #9082 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:14 verbose #9083 > > │ ### skip                                                                     │
00:07:14 verbose #9084 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:14 verbose #9085 > >
00:07:14 verbose #9086 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:14 verbose #9087 > > inl skip forall dim el. (n : dim) (a : a dim el) : a dim el =
00:07:14 verbose #9088 > >     $'!a |> Array.skip !n '
00:07:14 verbose #9089 > >
00:07:14 verbose #9090 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:14 verbose #9091 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:14 verbose #9092 > > │ ### skip_while                                                               │
00:07:14 verbose #9093 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:14 verbose #9094 > >
00:07:14 verbose #9095 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:14 verbose #9096 > > inl skip_while forall dim el. (fn : el -> bool) (a : a dim el) : a dim el =
00:07:14 verbose #9097 > >     $'!a |> Array.skipWhile !fn '
00:07:14 verbose #9098 > >
00:07:14 verbose #9099 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:14 verbose #9100 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:14 verbose #9101 > > │ ### to_list'                                                                 │
00:07:14 verbose #9102 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:14 verbose #9103 > >
00:07:14 verbose #9104 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:14 verbose #9105 > > inl to_list' forall dim t. (items : a dim t) : listm'.list' t =
00:07:14 verbose #9106 > >     $'!items |> Array.toList'
00:07:14 verbose #9107 > >
00:07:14 verbose #9108 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:14 verbose #9109 > > //// test
00:07:14 verbose #9110 > > ///! fsharp
00:07:14 verbose #9111 > > ////! cuda
00:07:14 verbose #9112 > > ///! rust
00:07:14 verbose #9113 > > ///! typescript
00:07:14 verbose #9114 > > ///! python
00:07:14 verbose #9115 > >
00:07:14 verbose #9116 > > a' ;[[ -3i32; 6 ]]
00:07:14 verbose #9117 > > |> to_list'
00:07:14 verbose #9118 > > |> listm'.unbox
00:07:14 verbose #9119 > > |> _assert_eq [[ -3; 6 ]]
00:07:25 verbose #9120 > >
00:07:25 verbose #9121 > > ╭─[ 10.84s - return value ]────────────────────────────────────────────────────╮
00:07:25 verbose #9122 > > │ .rs output:                                                                  │
00:07:25 verbose #9123 > > │ __assert_eq / actual: UH0_1(-3, UH0_1(6, UH0_0)) / expected: UH0_1(-3,       │
00:07:25 verbose #9124 > > │ UH0_1(6, UH0_0))                                                             │
00:07:25 verbose #9125 > > │                                                                              │
00:07:25 verbose #9126 > > │ .ts output:                                                                  │
00:07:25 verbose #9127 > > │ __assert_eq / actual: UH0_1 (-3, UH0_1 (6, UH0_0)) / expected: UH0_1 (-3,    │
00:07:25 verbose #9128 > > │ UH0_1 (6, UH0_0))                                                            │
00:07:25 verbose #9129 > > │                                                                              │
00:07:25 verbose #9130 > > │ .py output:                                                                  │
00:07:25 verbose #9131 > > │ __assert_eq / actual: UH0_1 (-3, UH0_1 (6, UH0_0)) / expected: UH0_1 (-3,    │
00:07:25 verbose #9132 > > │ UH0_1 (6, UH0_0))                                                            │
00:07:25 verbose #9133 > > │                                                                              │
00:07:25 verbose #9134 > > │                                                                              │
00:07:25 verbose #9135 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:25 verbose #9136 > >
00:07:25 verbose #9137 > > ╭─[ 10.84s - stdout ]──────────────────────────────────────────────────────────╮
00:07:25 verbose #9138 > > │ .fsx output:                                                                 │
00:07:25 verbose #9139 > > │ __assert_eq / actual: UH0_1 (-3, UH0_1 (6, UH0_0)) / expected: UH0_1 (-3,    │
00:07:25 verbose #9140 > > │ UH0_1 (6, UH0_0))                                                            │
00:07:25 verbose #9141 > > │                                                                              │
00:07:25 verbose #9142 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:25 verbose #9143 > >
00:07:25 verbose #9144 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:25 verbose #9145 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:25 verbose #9146 > > │ ### parallel_map                                                             │
00:07:25 verbose #9147 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:25 verbose #9148 > >
00:07:25 verbose #9149 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:25 verbose #9150 > > inl parallel_map forall dim el el'. (fn : el -> el') (a : a dim el) : a dim el'
00:07:25 verbose #9151 > > =
00:07:25 verbose #9152 > >     $'!a |> Array.Parallel.map !fn '
00:07:25 verbose #9153 > >
00:07:25 verbose #9154 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:25 verbose #9155 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:25 verbose #9156 > > │ ### map'                                                                     │
00:07:25 verbose #9157 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:25 verbose #9158 > >
00:07:25 verbose #9159 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:25 verbose #9160 > > inl map' forall dim el el'. (fn : el -> el') (a : a dim el) : a dim el' =
00:07:25 verbose #9161 > >     $'!a |> Array.map !fn '
00:07:25 verbose #9162 > >
00:07:25 verbose #9163 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:25 verbose #9164 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:25 verbose #9165 > > │ ### sort_by                                                                  │
00:07:25 verbose #9166 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:25 verbose #9167 > >
00:07:25 verbose #9168 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:25 verbose #9169 > > inl sort_by forall dim el. (fn : el -> _) (a : a dim el) : a dim el =
00:07:25 verbose #9170 > >     $'!a |> Array.sortBy !fn '
00:07:25 verbose #9171 > >
00:07:25 verbose #9172 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:25 verbose #9173 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:25 verbose #9174 > > │ ### sort                                                                     │
00:07:25 verbose #9175 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:25 verbose #9176 > >
00:07:25 verbose #9177 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:25 verbose #9178 > > inl sort forall dim el. (a : a dim el) : a dim el =
00:07:25 verbose #9179 > >     $'!a |> Array.sort'
00:07:25 verbose #9180 > >
00:07:25 verbose #9181 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:25 verbose #9182 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:25 verbose #9183 > > │ ### sort_descending                                                          │
00:07:25 verbose #9184 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:25 verbose #9185 > >
00:07:25 verbose #9186 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:25 verbose #9187 > > inl sort_descending forall dim el. (a : a dim el) : a dim el =
00:07:25 verbose #9188 > >     $'!a |> Array.sortDescending'
00:07:25 verbose #9189 > >
00:07:25 verbose #9190 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:25 verbose #9191 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:25 verbose #9192 > > │ ### transpose                                                                │
00:07:25 verbose #9193 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:25 verbose #9194 > >
00:07:25 verbose #9195 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:25 verbose #9196 > > inl transpose forall el. (a : array_base (array_base el)) : array_base
00:07:25 verbose #9197 > > (array_base el) =
00:07:25 verbose #9198 > >     $'!a |> Array.transpose'
00:07:26 verbose #9199 > >
00:07:26 verbose #9200 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:26 verbose #9201 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:26 verbose #9202 > > │ ### try_item                                                                 │
00:07:26 verbose #9203 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:26 verbose #9204 > >
00:07:26 verbose #9205 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:26 verbose #9206 > > inl try_item forall dim el. (i : i32) (a : a dim el) : option el =
00:07:26 verbose #9207 > >     $'!a |> Array.tryItem !i ' |> optionm'.unbox
00:07:26 verbose #9208 > 00:01:54 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 101942 }
00:07:26 verbose #9209 > 00:01:54   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:07:26 verbose #9210 >     "nbconvert",
00:07:26 verbose #9211 >     "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb",
00:07:26 verbose #9212 >     "--to",
00:07:26 verbose #9213 >     "html",
00:07:26 verbose #9214 >     "--HTMLExporter.theme=dark",
00:07:26 verbose #9215 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:07:26 verbose #9216 > 00:01:55 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb to html
00:07:26 verbose #9217 > 00:01:55 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:07:26 verbose #9218 > 00:01:55 verbose #7 !   validate(nb)
00:07:27 verbose #9219 > 00:01:55 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:07:27 verbose #9220 > 00:01:55 verbose #9 !   return _pygments_highlight(
00:07:27 verbose #9221 > 00:01:56 verbose #10 ! [NbConvertApp] Writing 460884 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.html
00:07:28 verbose #9222 > 00:01:56 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 }
00:07:28 verbose #9223 > 00:01:56   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 }
00:07:28 verbose #9224 > 00:01:56   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:07:28 verbose #9225 >     "-c",
00:07:28 verbose #9226 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/am''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:07:28 verbose #9227 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/am''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:07:28 verbose #9228 > 00:01:56 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:07:28 verbose #9229 > 00:01:56   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:07:28 verbose #9230 > 00:01:56   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 102891 }
00:07:28   debug #9231 runtime.execute_with_options_async / { exit_code = 0; output_length = 108540 }
00:07:28   debug #10 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path am'.dib --retries 3
00:07:28   debug #9232 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path crypto.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:07:28 verbose #9233 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "crypto.dib", "--retries", "3"])) }
00:07:28 verbose #9234 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:07:28 verbose #9235 >     "repl",
00:07:28 verbose #9236 >     "--exit-after-run",
00:07:28 verbose #9237 >     "--run",
00:07:28 verbose #9238 >     "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib",
00:07:28 verbose #9239 >     "--output-path",
00:07:28 verbose #9240 >     "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb",
00:07:28 verbose #9241 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:07:29 verbose #9242 > >
00:07:29 verbose #9243 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:29 verbose #9244 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:29 verbose #9245 > > │ # crypto                                                                     │
00:07:29 verbose #9246 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:32 verbose #9247 > >
00:07:32 verbose #9248 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:32 verbose #9249 > > open rust
00:07:32 verbose #9250 > > open rust_operators
00:07:32 verbose #9251 > >
00:07:32 verbose #9252 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:32 verbose #9253 > > //// test
00:07:32 verbose #9254 > >
00:07:32 verbose #9255 > > open testing
00:07:32 verbose #9256 > > open file_system_operators
00:07:32 verbose #9257 > >
00:07:32 verbose #9258 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:32 verbose #9259 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:32 verbose #9260 > > │ ## fsharp                                                                    │
00:07:32 verbose #9261 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:32 verbose #9262 > >
00:07:32 verbose #9263 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:32 verbose #9264 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:32 verbose #9265 > > │ ### sha256                                                                   │
00:07:32 verbose #9266 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:32 verbose #9267 > >
00:07:32 verbose #9268 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:32 verbose #9269 > > nominal sha256 = $'System.Security.Cryptography.SHA256'
00:07:32 verbose #9270 > >
00:07:32 verbose #9271 > > inl sha256 () : sha256 =
00:07:32 verbose #9272 > >     $'`sha256.Create' ()
00:07:33 verbose #9273 > >
00:07:33 verbose #9274 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:33 verbose #9275 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:33 verbose #9276 > > │ ### sha256_compute_hash                                                      │
00:07:33 verbose #9277 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:33 verbose #9278 > >
00:07:33 verbose #9279 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:33 verbose #9280 > > inl sha256_compute_hash (x : sha256) (data : a i32 u8) : a i32 u8 =
00:07:33 verbose #9281 > >     data |> $'!x.ComputeHash'
00:07:33 verbose #9282 > >
00:07:33 verbose #9283 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:33 verbose #9284 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:33 verbose #9285 > > │ ## rust                                                                      │
00:07:33 verbose #9286 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:33 verbose #9287 > >
00:07:33 verbose #9288 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:33 verbose #9289 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:33 verbose #9290 > > │ ### get_file_hash'                                                           │
00:07:33 verbose #9291 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:33 verbose #9292 > >
00:07:33 verbose #9293 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:33 verbose #9294 > > inl get_file_hash' (path : string) : result string string =
00:07:33 verbose #9295 > >     inl path = path |> file_system.normalize_path
00:07:33 verbose #9296 > >     inl exit_code, result =
00:07:33 verbose #9297 > >         runtime.execution_options fun x => { x with
00:07:33 verbose #9298 > >             command = $'$"pwsh -c \\\"(Get-FileHash \'{!path}\' -Algorithm
00:07:33 verbose #9299 > > SHA256).Hash\\\""'
00:07:33 verbose #9300 > >         }
00:07:33 verbose #9301 > >         |> runtime.execute_with_options
00:07:33 verbose #9302 > >     if exit_code = 0
00:07:33 verbose #9303 > >     then result |> sm'.to_lower |> Ok
00:07:33 verbose #9304 > >     else result |> Error
00:07:33 verbose #9305 > >
00:07:33 verbose #9306 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:33 verbose #9307 > > //// test
00:07:33 verbose #9308 > >
00:07:33 verbose #9309 > > inl file_name = "test.txt"
00:07:33 verbose #9310 > > inl text = "\n"
00:07:33 verbose #9311 > >
00:07:33 verbose #9312 > > inl temp_dir, disposable =
00:07:33 verbose #9313 > >     (file_name, text)
00:07:33 verbose #9314 > >     |> sm'.format_debug
00:07:33 verbose #9315 > >     |> crypto.hash_text
00:07:33 verbose #9316 > >     |> file_system.create_temp_dir'
00:07:33 verbose #9317 > > disposable |> use |> ignore
00:07:33 verbose #9318 > > inl path = temp_dir </> file_name
00:07:33 verbose #9319 > > text |> file_system.write_all_text_async path |> async.run_synchronously
00:07:33 verbose #9320 > > path
00:07:33 verbose #9321 > > |> get_file_hash'
00:07:33 verbose #9322 > > |> resultm.get
00:07:33 verbose #9323 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
00:07:40 verbose #9324 > >
00:07:40 verbose #9325 > > ╭─[ 7.81s - stdout ]───────────────────────────────────────────────────────────╮
00:07:40 verbose #9326 > > │ 00:00:00   debug #1 runtime.execute_with_options_async / { options = {  │
00:07:40 verbose #9327 > > │ command = pwsh -c "(Get-FileHash                                             │
00:07:40 verbose #9328 > > │ '/tmp/!create_temp_path_/dotnet-repl/9ca8b18d-ee77-4684-ad12-21e1354945fc/te │
00:07:40 verbose #9329 > > │ st.txt' -Algorithm SHA256).Hash"; cancellation_token = None;                 │
00:07:40 verbose #9330 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:07:40 verbose #9331 > > │ working_directory = None } }                                                 │
00:07:40 verbose #9332 > > │ 00:00:00 verbose #2 >                                                   │
00:07:40 verbose #9333 > > │ 01BA4719C80B6FE911B091A7C05124B64EEECE964E09C058EF8F9805DACA546B             │
00:07:40 verbose #9334 > > │ 00:00:00   debug #3 runtime.execute_with_options_async / { exit_code =  │
00:07:40 verbose #9335 > > │ 0; output_length = 64 }                                                      │
00:07:40 verbose #9336 > > │ __assert_eq / actual:                                                        │
00:07:40 verbose #9337 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" /         │
00:07:40 verbose #9338 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │
00:07:40 verbose #9339 > > │                                                                              │
00:07:40 verbose #9340 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:40 verbose #9341 > >
00:07:40 verbose #9342 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:40 verbose #9343 > > //// test
00:07:40 verbose #9344 > > ///! rust -d chrono encoding_rs encoding_rs_io regex sha2
00:07:40 verbose #9345 > >
00:07:40 verbose #9346 > > inl file_name = "test.txt"
00:07:40 verbose #9347 > > inl text = "\n"
00:07:40 verbose #9348 > >
00:07:40 verbose #9349 > > inl temp_dir, disposable =
00:07:40 verbose #9350 > >     (file_name, text)
00:07:40 verbose #9351 > >     |> sm'.format_debug
00:07:40 verbose #9352 > >     |> crypto.hash_text
00:07:40 verbose #9353 > >     |> file_system.create_temp_dir'
00:07:40 verbose #9354 > > inl path = temp_dir </> file_name
00:07:40 verbose #9355 > > text |> file_system.write_all_text path
00:07:40 verbose #9356 > > path
00:07:40 verbose #9357 > > |> get_file_hash'
00:07:40 verbose #9358 > > |> resultm.get
00:07:40 verbose #9359 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
00:07:40 verbose #9360 > > disposable |> use |> ignore
00:07:57 verbose #9361 > >
00:07:57 verbose #9362 > > ╭─[ 16.83s - return value ]────────────────────────────────────────────────────╮
00:07:57 verbose #9363 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir =                   │
00:07:57 verbose #9364 > > │ /tmp/!create_temp_path_/spiral_builder_b97c4da8ad0d16c12bdf59d72381ee374d7f3 │
00:07:57 verbose #9365 > > │ 2edb99c30da17e97fc85f7b19bb/ba0aa16a-6c5a-be3f-b526-70110c680e36 }           │
00:07:57 verbose #9366 > > │ 00:00:00   debug #2 runtime.execute_with_options / { file_name = pwsh; │
00:07:57 verbose #9367 > > │ arguments = [                                                                │
00:07:57 verbose #9368 > > │     "-c",                                                                    │
00:07:57 verbose #9369 > > │     "(Get-FileHash                                                           │
00:07:57 verbose #9370 > > │ '/tmp/!create_temp_path_/spiral_builder_b97c4da8ad0d16c12bdf59d72381ee374d7f │
00:07:57 verbose #9371 > > │ 32edb99c30da17e97fc85f7b19bb/ba0aa16a-6c5a-be3f-b526-70110c680e36/test.txt'  │
00:07:57 verbose #9372 > > │ -Algorithm SHA256).Hash",                                                    │
00:07:57 verbose #9373 > > │ ]; options = { command = pwsh -c "(Get-FileHash                              │
00:07:57 verbose #9374 > > │ '/tmp/!create_temp_path_/spiral_builder_b97c4da8ad0d16c12bdf59d72381ee374d7f │
00:07:57 verbose #9375 > > │ 32edb99c30da17e97fc85f7b19bb/ba0aa16a-6c5a-be3f-b526-70110c680e36/test.txt'  │
00:07:57 verbose #9376 > > │ -Algorithm SHA256).Hash"; cancellation_token = None; environment_variables = │
00:07:57 verbose #9377 > > │ Array(MutCell([])); on_line = None; stdin = None; trace = true;              │
00:07:57 verbose #9378 > > │ working_directory = None } }                                                 │
00:07:57 verbose #9379 > > │ 00:00:00 verbose #3 >                                                  │
00:07:57 verbose #9380 > > │ 01BA4719C80B6FE911B091A7C05124B64EEECE964E09C058EF8F9805DACA546B             │
00:07:57 verbose #9381 > > │ 00:00:00 verbose #4 runtime.execute_with_options / result / {          │
00:07:57 verbose #9382 > > │ exit_code = 0; std_trace_length = 64 }                                       │
00:07:57 verbose #9383 > > │ __assert_eq / actual:                                                        │
00:07:57 verbose #9384 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" /         │
00:07:57 verbose #9385 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │
00:07:57 verbose #9386 > > │                                                                              │
00:07:57 verbose #9387 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:57 verbose #9388 > >
00:07:57 verbose #9389 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:57 verbose #9390 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:57 verbose #9391 > > │ ### sha256'                                                                  │
00:07:57 verbose #9392 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:57 verbose #9393 > >
00:07:57 verbose #9394 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:57 verbose #9395 > > nominal sha256' =
00:07:57 verbose #9396 > >     `(
00:07:57 verbose #9397 > >         backend_switch `(()) `({}) {
00:07:57 verbose #9398 > >             Fsharp =
00:07:57 verbose #9399 > >                 (fun () =>
00:07:57 verbose #9400 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:07:57 verbose #9401 > > Fable.Core.Emit(\"sha2::Sha256\")>]]\n#endif\ntype sha2_Sha256 = class end"
00:07:57 verbose #9402 > >                 ) : () -> ()
00:07:57 verbose #9403 > >         }
00:07:57 verbose #9404 > >         $'' : $'sha2_Sha256'
00:07:57 verbose #9405 > >     )
00:07:57 verbose #9406 > >
00:07:57 verbose #9407 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:57 verbose #9408 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:57 verbose #9409 > > │ ### new_sha256                                                               │
00:07:57 verbose #9410 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:57 verbose #9411 > >
00:07:57 verbose #9412 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:57 verbose #9413 > > inl new_sha256 () : sha256' =
00:07:57 verbose #9414 > >     !\($'"let result : sha2::Sha256 = sha2::Digest::new()"')
00:07:57 verbose #9415 > >     !\($'"result"')
00:07:57 verbose #9416 > >
00:07:57 verbose #9417 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:57 verbose #9418 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:57 verbose #9419 > > │ ### hasher_update                                                            │
00:07:57 verbose #9420 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:57 verbose #9421 > >
00:07:57 verbose #9422 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:57 verbose #9423 > > inl hasher_update forall el dim. (slice : rust.ref (am'.slice' el dim)) (hasher
00:07:57 verbose #9424 > > : sha256') : () =
00:07:57 verbose #9425 > >     !\($'"sha2::Digest::update(&mut !hasher, !slice)"')
00:07:58 verbose #9426 > >
00:07:58 verbose #9427 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:58 verbose #9428 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:58 verbose #9429 > > │ ### hasher_finalize                                                          │
00:07:58 verbose #9430 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:58 verbose #9431 > >
00:07:58 verbose #9432 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:58 verbose #9433 > > inl hasher_finalize (hasher : sha256') : rust.ref (am'.slice u8) =
00:07:58 verbose #9434 > >     !\($'"&sha2::Digest::finalize(!hasher)"')
00:07:58 verbose #9435 > >
00:07:58 verbose #9436 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:58 verbose #9437 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:58 verbose #9438 > > │ ### hash_read                                                                │
00:07:58 verbose #9439 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:58 verbose #9440 > >
00:07:58 verbose #9441 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:58 verbose #9442 > > inl hash_read data : resultm.result' string stream.io_error =
00:07:58 verbose #9443 > >     inl reader = data |> stream.new_buf_reader
00:07:58 verbose #9444 > >     (!\($'"true; let mut !reader = !reader"') : bool) |> ignore
00:07:58 verbose #9445 > >     inl hasher = new_sha256 ()
00:07:58 verbose #9446 > >     (!\($'"true; let mut !hasher = !hasher"') : bool) |> ignore
00:07:58 verbose #9447 > >
00:07:58 verbose #9448 > >     real
00:07:58 verbose #9449 > >         inl size = 1024
00:07:58 verbose #9450 > >         inl zero = convert `i32 `unativeint 0
00:07:58 verbose #9451 > >         inl buffer = am'.new_slice `u8 `@size 0u8
00:07:58 verbose #9452 > >
00:07:58 verbose #9453 > >         rust.loop 2 fun () =>
00:07:58 verbose #9454 > >             inl count = stream.buf_reader_read `u8 `@size buffer reader
00:07:58 verbose #9455 > >             inl count = resultm.unwrap' `unativeint `(stream.io_error) count
00:07:58 verbose #9456 > >
00:07:58 verbose #9457 > >             if (=.) `unativeint count zero then rust.break ()
00:07:58 verbose #9458 > >
00:07:58 verbose #9459 > >             hasher_update `u8 `@size
00:07:58 verbose #9460 > >                 (
00:07:58 verbose #9461 > >                     am'.slice_range `u8 `@size
00:07:58 verbose #9462 > >                         (am'.Start `unativeint zero)
00:07:58 verbose #9463 > >                         (am'.End `unativeint ((fun _ => count) : unativeint ->
00:07:58 verbose #9464 > > unativeint))
00:07:58 verbose #9465 > >                         buffer
00:07:58 verbose #9466 > >                 )
00:07:58 verbose #9467 > >                 hasher
00:07:58 verbose #9468 > >
00:07:58 verbose #9469 > >     hasher
00:07:58 verbose #9470 > >     |> hasher_finalize
00:07:58 verbose #9471 > >     |> am'.slice_to_vec
00:07:58 verbose #9472 > >     |> am'.vec_map (sm'.format_hex' >> sm'.from_std_string)
00:07:58 verbose #9473 > >     |> am'.from_vec
00:07:58 verbose #9474 > >     |> fun x => x : _ i32 _
00:07:58 verbose #9475 > >     |> seq.of_array'
00:07:58 verbose #9476 > >     |> sm'.concat (join "")
00:07:58 verbose #9477 > >     |> Ok
00:07:58 verbose #9478 > >     |> resultm.box
00:07:58 verbose #9479 > >
00:07:58 verbose #9480 > > ── markdown ────────────────────────────────────────────────────────────────────
00:07:58 verbose #9481 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:07:58 verbose #9482 > > │ ### get_file_hash                                                            │
00:07:58 verbose #9483 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:07:58 verbose #9484 > >
00:07:58 verbose #9485 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:58 verbose #9486 > > inl get_file_hash (path : string) =
00:07:58 verbose #9487 > >     inl path = path |> file_system.normalize_path
00:07:58 verbose #9488 > >     inl file = path |> file_system.file_open |> resultm.unwrap'
00:07:58 verbose #9489 > >     inl reader = file |> stream.new_buf_reader
00:07:58 verbose #9490 > >     reader
00:07:58 verbose #9491 > >     |> hash_read
00:07:58 verbose #9492 > >
00:07:58 verbose #9493 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:07:58 verbose #9494 > > //// test
00:07:58 verbose #9495 > > ///! rust -d chrono regex sha2
00:07:58 verbose #9496 > >
00:07:58 verbose #9497 > > inl file_name = join "test.txt"
00:07:58 verbose #9498 > > inl text = "\n"
00:07:58 verbose #9499 > >
00:07:58 verbose #9500 > > inl temp_dir, disposable =
00:07:58 verbose #9501 > >     (file_name, text)
00:07:58 verbose #9502 > >     |> sm'.format_debug
00:07:58 verbose #9503 > >     |> crypto.hash_text
00:07:58 verbose #9504 > >     |> file_system.create_temp_dir'
00:07:58 verbose #9505 > >
00:07:58 verbose #9506 > > inl path = temp_dir </> file_name
00:07:58 verbose #9507 > > text |> file_system.write_all_text path
00:07:58 verbose #9508 > >
00:07:58 verbose #9509 > > path
00:07:58 verbose #9510 > > |> get_file_hash
00:07:58 verbose #9511 > > |> resultm.unwrap'
00:07:58 verbose #9512 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
00:07:58 verbose #9513 > > disposable |> use |> ignore
00:08:07 verbose #9514 > >
00:08:07 verbose #9515 > > ╭─[ 9.53s - return value ]─────────────────────────────────────────────────────╮
00:08:07 verbose #9516 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir =                   │
00:08:07 verbose #9517 > > │ /tmp/!create_temp_path_/spiral_builder_81c8b6082da238438a508899ab4a79cd7a06e │
00:08:07 verbose #9518 > > │ f64555e21fd12d4f1278d053cae/ba0aa16a-6c5a-be3f-b526-70110c680e36 }           │
00:08:07 verbose #9519 > > │ __assert_eq / actual:                                                        │
00:08:07 verbose #9520 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" /         │
00:08:07 verbose #9521 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │
00:08:07 verbose #9522 > > │                                                                              │
00:08:07 verbose #9523 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:07 verbose #9524 > >
00:08:07 verbose #9525 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:07 verbose #9526 > > //// test
00:08:07 verbose #9527 > > ///! rust -d chrono regex sha2
00:08:07 verbose #9528 > >
00:08:07 verbose #9529 > > inl file_name = join "test.txt"
00:08:07 verbose #9530 > > inl text = ""
00:08:07 verbose #9531 > >
00:08:07 verbose #9532 > > inl temp_dir, disposable =
00:08:07 verbose #9533 > >     (file_name, text)
00:08:07 verbose #9534 > >     |> sm'.format_debug
00:08:07 verbose #9535 > >     |> crypto.hash_text
00:08:07 verbose #9536 > >     |> file_system.create_temp_dir'
00:08:07 verbose #9537 > >
00:08:07 verbose #9538 > > inl path = temp_dir </> file_name
00:08:07 verbose #9539 > > text |> file_system.write_all_text path
00:08:07 verbose #9540 > > path
00:08:07 verbose #9541 > > |> get_file_hash
00:08:07 verbose #9542 > > |> resultm.unwrap'
00:08:07 verbose #9543 > > |> _assert_eq "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
00:08:07 verbose #9544 > > disposable |> use |> ignore
00:08:17 verbose #9545 > >
00:08:17 verbose #9546 > > ╭─[ 9.53s - return value ]─────────────────────────────────────────────────────╮
00:08:17 verbose #9547 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir =                   │
00:08:17 verbose #9548 > > │ /tmp/!create_temp_path_/spiral_builder_665cb3f007374c31147d80efe6504bb8f003a │
00:08:17 verbose #9549 > > │ 1263c3d66315f072b40bea0bf82/c0e26dac-4cb1-4b09-be07-ff616700f056 }           │
00:08:17 verbose #9550 > > │ __assert_eq / actual:                                                        │
00:08:17 verbose #9551 > > │ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" /         │
00:08:17 verbose #9552 > > │ expected: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" │
00:08:17 verbose #9553 > > │                                                                              │
00:08:17 verbose #9554 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:17 verbose #9555 > >
00:08:17 verbose #9556 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:17 verbose #9557 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:17 verbose #9558 > > │ ## typescript                                                                │
00:08:17 verbose #9559 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:17 verbose #9560 > >
00:08:17 verbose #9561 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:17 verbose #9562 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:17 verbose #9563 > > │ ### create_hash                                                              │
00:08:17 verbose #9564 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:17 verbose #9565 > >
00:08:17 verbose #9566 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:17 verbose #9567 > > inl create_hash (x : string) : any =
00:08:17 verbose #9568 > >     open typescript_operators
00:08:17 verbose #9569 > >     global "type ICryptoCreateHash = abstract createHash: x: string -> obj"
00:08:17 verbose #9570 > >     inl crypto : $'ICryptoCreateHash' = typescript.import_all "crypto"
00:08:17 verbose #9571 > >     !\\(x, $'"!crypto.createHash($0)"')
00:08:17 verbose #9572 > >
00:08:17 verbose #9573 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:17 verbose #9574 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:17 verbose #9575 > > │ ### hash_update                                                              │
00:08:17 verbose #9576 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:17 verbose #9577 > >
00:08:17 verbose #9578 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:17 verbose #9579 > > inl hash_update (s : string) (x : any) : any =
00:08:17 verbose #9580 > >     open typescript_operators
00:08:17 verbose #9581 > >     !\\((x, s), $'"$0.update($1, \'utf8\')"')
00:08:17 verbose #9582 > >
00:08:17 verbose #9583 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:17 verbose #9584 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:17 verbose #9585 > > │ ### hash_digest                                                              │
00:08:17 verbose #9586 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:17 verbose #9587 > >
00:08:17 verbose #9588 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:17 verbose #9589 > > inl hash_digest (s : string) (x : any) : string =
00:08:17 verbose #9590 > >     open typescript_operators
00:08:17 verbose #9591 > >     !\\((x, s), $'"$0.digest($1)"')
00:08:17 verbose #9592 > >
00:08:17 verbose #9593 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:17 verbose #9594 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:17 verbose #9595 > > │ ## python                                                                    │
00:08:17 verbose #9596 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:17 verbose #9597 > >
00:08:17 verbose #9598 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:17 verbose #9599 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:17 verbose #9600 > > │ ### py_sha256                                                                │
00:08:17 verbose #9601 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:17 verbose #9602 > >
00:08:17 verbose #9603 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:17 verbose #9604 > > nominal py_sha256 = any
00:08:17 verbose #9605 > >
00:08:17 verbose #9606 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:17 verbose #9607 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:17 verbose #9608 > > │ ### hashlib_sha256                                                           │
00:08:17 verbose #9609 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:17 verbose #9610 > >
00:08:17 verbose #9611 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:17 verbose #9612 > > inl hashlib_sha256 () : py_sha256 =
00:08:17 verbose #9613 > >     backend_switch {
00:08:17 verbose #9614 > >         Fsharp = fun () =>
00:08:17 verbose #9615 > >             open python_operators
00:08:17 verbose #9616 > >             global "type IHashlibSha256 = abstract sha256: x: unit -> obj"
00:08:17 verbose #9617 > >             inl hashlib : $'IHashlibSha256' = python.import_all "hashlib"
00:08:17 verbose #9618 > >             !\($'"!hashlib.sha256()"') : py_sha256
00:08:17 verbose #9619 > >         Python = fun () =>
00:08:17 verbose #9620 > >             global "import hashlib"
00:08:17 verbose #9621 > >             $'hashlib.sha256()' : py_sha256
00:08:17 verbose #9622 > >     }
00:08:17 verbose #9623 > >
00:08:17 verbose #9624 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:17 verbose #9625 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:17 verbose #9626 > > │ ### sha256_update                                                            │
00:08:17 verbose #9627 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:17 verbose #9628 > >
00:08:17 verbose #9629 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:17 verbose #9630 > > inl sha256_update (x : string) (sha256 : py_sha256) : py_sha256 =
00:08:17 verbose #9631 > >     backend_switch {
00:08:17 verbose #9632 > >         Fsharp = fun () =>
00:08:17 verbose #9633 > >             open python_operators
00:08:17 verbose #9634 > >             !\\(x, $'"!sha256.update($0)"') : ()
00:08:17 verbose #9635 > >         Python = fun () =>
00:08:17 verbose #9636 > >             $'!sha256.update(!x)' : ()
00:08:17 verbose #9637 > >     }
00:08:17 verbose #9638 > >     sha256
00:08:17 verbose #9639 > >
00:08:17 verbose #9640 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:17 verbose #9641 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:17 verbose #9642 > > │ ### sha256_hexdigest                                                         │
00:08:17 verbose #9643 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:17 verbose #9644 > >
00:08:17 verbose #9645 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:17 verbose #9646 > > inl sha256_hexdigest (sha256 : py_sha256) : string =
00:08:17 verbose #9647 > >     backend_switch {
00:08:17 verbose #9648 > >         Fsharp = fun () =>
00:08:17 verbose #9649 > >             open python_operators
00:08:17 verbose #9650 > >             !\($'"!sha256.hexdigest()"') : string
00:08:17 verbose #9651 > >         Python = fun () =>
00:08:17 verbose #9652 > >             $'!sha256.hexdigest()' : string
00:08:17 verbose #9653 > >     }
00:08:18 verbose #9654 > >
00:08:18 verbose #9655 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:18 verbose #9656 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:18 verbose #9657 > > │ ## crypto                                                                    │
00:08:18 verbose #9658 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:18 verbose #9659 > >
00:08:18 verbose #9660 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:18 verbose #9661 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:18 verbose #9662 > > │ ### hash_text                                                                │
00:08:18 verbose #9663 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:18 verbose #9664 > >
00:08:18 verbose #9665 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:18 verbose #9666 > > let hash_text (~input : string) =
00:08:18 verbose #9667 > >     run_target function
00:08:18 verbose #9668 > >         | Fsharp (Native) => fun () =>
00:08:18 verbose #9669 > >             inl sha256 = sha256 () |> use
00:08:18 verbose #9670 > >             input
00:08:18 verbose #9671 > >             |> sm'.utf8_get_bytes
00:08:18 verbose #9672 > >             |> sha256_compute_hash sha256
00:08:18 verbose #9673 > >             |> am.map (sm'.byte_to_string "x2")
00:08:18 verbose #9674 > >             |> seq.of_array'
00:08:18 verbose #9675 > >             |> sm'.concat (join "")
00:08:18 verbose #9676 > >         | TypeScript (Native) => fun () =>
00:08:18 verbose #9677 > >             create_hash "sha256"
00:08:18 verbose #9678 > >             |> hash_update input
00:08:18 verbose #9679 > >             |> hash_digest "hex"
00:08:18 verbose #9680 > >         | Rust (Native) => fun () =>
00:08:18 verbose #9681 > >             input
00:08:18 verbose #9682 > >             |> sm'.utf8_get_bytes
00:08:18 verbose #9683 > >             |> fun (a x) => x
00:08:18 verbose #9684 > >             |> am'.to_vec
00:08:18 verbose #9685 > >             |> stream.new_cursor
00:08:18 verbose #9686 > >             |> hash_read
00:08:18 verbose #9687 > >             |> resultm.unwrap'
00:08:18 verbose #9688 > >         | Python (Native) | Cuda (Native) => fun () =>
00:08:18 verbose #9689 > >             hashlib_sha256 ()
00:08:18 verbose #9690 > >             |> sha256_update (input |> sm'.encode_utf8)
00:08:18 verbose #9691 > >             |> sha256_hexdigest
00:08:18 verbose #9692 > >         | _ => fun () => null ()
00:08:18 verbose #9693 > >
00:08:18 verbose #9694 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:18 verbose #9695 > > //// test
00:08:18 verbose #9696 > > ///! fsharp
00:08:18 verbose #9697 > > ///! cuda
00:08:18 verbose #9698 > > ///! rust -d sha2
00:08:18 verbose #9699 > > ///! typescript
00:08:18 verbose #9700 > > ///! python
00:08:18 verbose #9701 > >
00:08:18 verbose #9702 > > "\n"
00:08:18 verbose #9703 > > |> hash_text
00:08:18 verbose #9704 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
00:08:18 verbose #9705 > >
00:08:18 verbose #9706 > > ""
00:08:18 verbose #9707 > > |> hash_text
00:08:18 verbose #9708 > > |> _assert_eq "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
00:08:30 verbose #9709 > >
00:08:30 verbose #9710 > > ╭─[ 12.12s - return value ]────────────────────────────────────────────────────╮
00:08:30 verbose #9711 > > │                                                                              │
00:08:30 verbose #9712 > > │ .py output (Cuda):                                                           │
00:08:30 verbose #9713 > > │ __assert_eq / actual:                                                        │
00:08:30 verbose #9714 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b / expected: │
00:08:30 verbose #9715 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b             │
00:08:30 verbose #9716 > > │ __assert_eq / actual:                                                        │
00:08:30 verbose #9717 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 / expected: │
00:08:30 verbose #9718 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855             │
00:08:30 verbose #9719 > > │                                                                              │
00:08:30 verbose #9720 > > │                                                                              │
00:08:30 verbose #9721 > > │ .rs output (rust -d sha2):                                                   │
00:08:30 verbose #9722 > > │ __assert_eq / actual:                                                        │
00:08:30 verbose #9723 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" /         │
00:08:30 verbose #9724 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │
00:08:30 verbose #9725 > > │ __assert_eq / actual:                                                        │
00:08:30 verbose #9726 > > │ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" /         │
00:08:30 verbose #9727 > > │ expected: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" │
00:08:30 verbose #9728 > > │                                                                              │
00:08:30 verbose #9729 > > │                                                                              │
00:08:30 verbose #9730 > > │ .ts output:                                                                  │
00:08:30 verbose #9731 > > │ __assert_eq / actual:                                                        │
00:08:30 verbose #9732 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b / expected: │
00:08:30 verbose #9733 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b             │
00:08:30 verbose #9734 > > │ __assert_eq / actual:                                                        │
00:08:30 verbose #9735 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 / expected: │
00:08:30 verbose #9736 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855             │
00:08:30 verbose #9737 > > │                                                                              │
00:08:30 verbose #9738 > > │                                                                              │
00:08:30 verbose #9739 > > │ .py output:                                                                  │
00:08:30 verbose #9740 > > │ __assert_eq / actual:                                                        │
00:08:30 verbose #9741 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b / expected: │
00:08:30 verbose #9742 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b             │
00:08:30 verbose #9743 > > │ __assert_eq / actual:                                                        │
00:08:30 verbose #9744 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 / expected: │
00:08:30 verbose #9745 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855             │
00:08:30 verbose #9746 > > │                                                                              │
00:08:30 verbose #9747 > > │                                                                              │
00:08:30 verbose #9748 > > │                                                                              │
00:08:30 verbose #9749 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:30 verbose #9750 > >
00:08:30 verbose #9751 > > ╭─[ 12.12s - stdout ]──────────────────────────────────────────────────────────╮
00:08:30 verbose #9752 > > │ .fsx output:                                                                 │
00:08:30 verbose #9753 > > │ __assert_eq / actual:                                                        │
00:08:30 verbose #9754 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" /         │
00:08:30 verbose #9755 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │
00:08:30 verbose #9756 > > │ __assert_eq / actual:                                                        │
00:08:30 verbose #9757 > > │ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" /         │
00:08:30 verbose #9758 > > │ expected: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" │
00:08:30 verbose #9759 > > │                                                                              │
00:08:30 verbose #9760 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:30 verbose #9761 > >
00:08:30 verbose #9762 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:30 verbose #9763 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:30 verbose #9764 > > │ ### hash_to_port                                                             │
00:08:30 verbose #9765 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:30 verbose #9766 > >
00:08:30 verbose #9767 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:30 verbose #9768 > > inl hash_to_port (text : string) : u16 =
00:08:30 verbose #9769 > >     inl first_letter_code = text |> sm'.index 0i32 |> i32
00:08:30 verbose #9770 > >     inl hash_part = text |> sm'.slice 0i32 7
00:08:30 verbose #9771 > >     inl combined_value = convert_i32_base 16 hash_part + first_letter_code |>
00:08:30 verbose #9772 > > u16
00:08:30 verbose #9773 > >     trace Verbose
00:08:30 verbose #9774 > >         fun () => "crypto.hash_to_port"
00:08:30 verbose #9775 > >         fun () => { first_letter_code hash_part combined_value }
00:08:30 verbose #9776 > >     combined_value % 48128 + 1024
00:08:30 verbose #9777 > >
00:08:30 verbose #9778 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:30 verbose #9779 > > //// test
00:08:30 verbose #9780 > > ///! fsharp
00:08:30 verbose #9781 > > ////! cuda // Only stack allocated primitive types (i8,i16,i32,i64 and
00:08:30 verbose #9782 > > u8,u16,u32,u64 and f32,f64 and bool) are allowed in CuPy arrays.
00:08:30 verbose #9783 > > ///! rust -d sha2
00:08:30 verbose #9784 > > ///! typescript
00:08:30 verbose #9785 > > ///! python
00:08:30 verbose #9786 > >
00:08:30 verbose #9787 > > "\n"
00:08:30 verbose #9788 > > |> hash_text
00:08:30 verbose #9789 > > |> hash_to_port
00:08:30 verbose #9790 > > |> _assert_eq 19273
00:08:42 verbose #9791 > >
00:08:42 verbose #9792 > > ╭─[ 12.27s - return value ]────────────────────────────────────────────────────╮
00:08:42 verbose #9793 > > │                                                                              │
00:08:42 verbose #9794 > > │ .rs output (rust -d sha2):                                                   │
00:08:42 verbose #9795 > > │ 00:00:00 verbose #1 crypto.hash_to_port / { first_letter_code = 48;    │
00:08:42 verbose #9796 > > │ hash_part = 01ba4719; combined_value = 18249 }                               │
00:08:42 verbose #9797 > > │ __assert_eq / actual: 19273 / expected: 19273                                │
00:08:42 verbose #9798 > > │                                                                              │
00:08:42 verbose #9799 > > │                                                                              │
00:08:42 verbose #9800 > > │ .ts output:                                                                  │
00:08:42 verbose #9801 > > │ 00:00:00 verbose #1 crypto.hash_to_port / { first_letter_code = 48;     │
00:08:42 verbose #9802 > > │ hash_part = 01ba4719; combined_value = 18249 }                               │
00:08:42 verbose #9803 > > │ __assert_eq / actual: 19273 / expected: 19273                                │
00:08:42 verbose #9804 > > │                                                                              │
00:08:42 verbose #9805 > > │                                                                              │
00:08:42 verbose #9806 > > │ .py output:                                                                  │
00:08:42 verbose #9807 > > │ 00:00:00 verbose #1 crypto.hash_to_port / { first_letter_code = 48;     │
00:08:42 verbose #9808 > > │ hash_part = 01ba4719; combined_value = 18249 }                               │
00:08:42 verbose #9809 > > │ __assert_eq / actual: 19273 / expected: 19273                                │
00:08:42 verbose #9810 > > │                                                                              │
00:08:42 verbose #9811 > > │                                                                              │
00:08:42 verbose #9812 > > │                                                                              │
00:08:42 verbose #9813 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:42 verbose #9814 > >
00:08:42 verbose #9815 > > ╭─[ 12.27s - stdout ]──────────────────────────────────────────────────────────╮
00:08:42 verbose #9816 > > │ .fsx output:                                                                 │
00:08:42 verbose #9817 > > │ 00:00:00 verbose #1 crypto.hash_to_port / { first_letter_code = 48;     │
00:08:42 verbose #9818 > > │ hash_part = 01ba4719; combined_value = 18249 }                               │
00:08:42 verbose #9819 > > │ __assert_eq / actual: 19273us / expected: 19273us                            │
00:08:42 verbose #9820 > > │                                                                              │
00:08:42 verbose #9821 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:42 verbose #9822 > >
00:08:42 verbose #9823 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:42 verbose #9824 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:42 verbose #9825 > > │ ## main                                                                      │
00:08:42 verbose #9826 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:42 verbose #9827 > >
00:08:42 verbose #9828 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:42 verbose #9829 > > inl main () =
00:08:42 verbose #9830 > >     $'let hash_text x = !hash_text x' : ()
00:08:42 verbose #9831 > >     $'let hash_to_port x = !hash_to_port x' : ()
00:08:43 verbose #9832 > 00:01:14 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 35439 }
00:08:43 verbose #9833 > 00:01:14   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:08:43 verbose #9834 >     "nbconvert",
00:08:43 verbose #9835 >     "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb",
00:08:43 verbose #9836 >     "--to",
00:08:43 verbose #9837 >     "html",
00:08:43 verbose #9838 >     "--HTMLExporter.theme=dark",
00:08:43 verbose #9839 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:08:43 verbose #9840 > 00:01:15 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb to html
00:08:43 verbose #9841 > 00:01:15 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:08:43 verbose #9842 > 00:01:15 verbose #7 !   validate(nb)
00:08:44 verbose #9843 > 00:01:15 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:08:44 verbose #9844 > 00:01:15 verbose #9 !   return _pygments_highlight(
00:08:44 verbose #9845 > 00:01:16 verbose #10 ! [NbConvertApp] Writing 341946 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.html
00:08:44 verbose #9846 > 00:01:16 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 }
00:08:44 verbose #9847 > 00:01:16   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 }
00:08:44 verbose #9848 > 00:01:16   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:08:44 verbose #9849 >     "-c",
00:08:44 verbose #9850 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:08:44 verbose #9851 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:08:44 verbose #9852 > 00:01:16 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:08:44 verbose #9853 > 00:01:16   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:08:44 verbose #9854 > 00:01:16   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 36394 }
00:08:44   debug #9855 runtime.execute_with_options_async / { exit_code = 0; output_length = 40418 }
00:08:44   debug #11 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path crypto.dib --retries 3
00:08:44   debug #9856 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:08:44 verbose #9857 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "common.dib", "--retries", "3"])) }
00:08:44 verbose #9858 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:08:44 verbose #9859 >     "repl",
00:08:44 verbose #9860 >     "--exit-after-run",
00:08:44 verbose #9861 >     "--run",
00:08:44 verbose #9862 >     "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib",
00:08:44 verbose #9863 >     "--output-path",
00:08:44 verbose #9864 >     "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb",
00:08:44 verbose #9865 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:08:46 verbose #9866 > >
00:08:46 verbose #9867 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:46 verbose #9868 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:46 verbose #9869 > > │ # common                                                                     │
00:08:46 verbose #9870 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:48 verbose #9871 > >
00:08:48 verbose #9872 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:48 verbose #9873 > > //// test
00:08:48 verbose #9874 > >
00:08:48 verbose #9875 > > open testing
00:08:49 verbose #9876 > >
00:08:49 verbose #9877 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:49 verbose #9878 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:49 verbose #9879 > > │ ## common                                                                    │
00:08:49 verbose #9880 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:49 verbose #9881 > >
00:08:49 verbose #9882 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:49 verbose #9883 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:49 verbose #9884 > > │ ### (:>)                                                                     │
00:08:49 verbose #9885 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:49 verbose #9886 > >
00:08:49 verbose #9887 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:49 verbose #9888 > > prototype (~:>) r : forall t. t -> r
00:08:49 verbose #9889 > >
00:08:49 verbose #9890 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:49 verbose #9891 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:49 verbose #9892 > > │ ### to_any                                                                   │
00:08:49 verbose #9893 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:49 verbose #9894 > >
00:08:49 verbose #9895 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:49 verbose #9896 > > inl to_any forall t. (obj : t) : any =
00:08:49 verbose #9897 > >     $'!obj '
00:08:49 verbose #9898 > >
00:08:49 verbose #9899 > > instance (~:>) any = to_any
00:08:49 verbose #9900 > >
00:08:49 verbose #9901 > > ── markdown ────────────────────────────────────────────────────────────────────
00:08:49 verbose #9902 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:08:49 verbose #9903 > > │ ### (||>)                                                                    │
00:08:49 verbose #9904 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:08:49 verbose #9905 > >
00:08:49 verbose #9906 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:08:49 verbose #9907 > > //// test
00:08:49 verbose #9908 > > ///! fsharp
00:08:49 verbose #9909 > > ///! cuda
00:08:49 verbose #9910 > > ///! rust
00:08:49 verbose #9911 > > ///! typescript
00:08:49 verbose #9912 > > ///! python
00:08:49 verbose #9913 > >
00:08:49 verbose #9914 > > (3i32, 2i32)
00:08:49 verbose #9915 > > ||> fun a b => a - b
00:08:49 verbose #9916 > > |> _assert_eq 1
00:09:00 verbose #9917 > >
00:09:00 verbose #9918 > > ╭─[ 11.40s - return value ]────────────────────────────────────────────────────╮
00:09:00 verbose #9919 > > │ .py output (Cuda):                                                           │
00:09:00 verbose #9920 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:09:00 verbose #9921 > > │                                                                              │
00:09:00 verbose #9922 > > │ .rs output:                                                                  │
00:09:00 verbose #9923 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:09:00 verbose #9924 > > │                                                                              │
00:09:00 verbose #9925 > > │ .ts output:                                                                  │
00:09:00 verbose #9926 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:09:00 verbose #9927 > > │                                                                              │
00:09:00 verbose #9928 > > │ .py output:                                                                  │
00:09:00 verbose #9929 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:09:00 verbose #9930 > > │                                                                              │
00:09:00 verbose #9931 > > │                                                                              │
00:09:00 verbose #9932 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:00 verbose #9933 > >
00:09:00 verbose #9934 > > ╭─[ 11.41s - stdout ]──────────────────────────────────────────────────────────╮
00:09:00 verbose #9935 > > │ .fsx output:                                                                 │
00:09:00 verbose #9936 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:09:00 verbose #9937 > > │                                                                              │
00:09:00 verbose #9938 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:00 verbose #9939 > >
00:09:00 verbose #9940 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:00 verbose #9941 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:00 verbose #9942 > > │ ### flip                                                                     │
00:09:00 verbose #9943 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:00 verbose #9944 > >
00:09:00 verbose #9945 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:00 verbose #9946 > > inl flip fn a b =
00:09:00 verbose #9947 > >     fn b a
00:09:00 verbose #9948 > >
00:09:00 verbose #9949 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:00 verbose #9950 > > //// test
00:09:00 verbose #9951 > > ///! fsharp
00:09:00 verbose #9952 > > ///! cuda
00:09:00 verbose #9953 > > ///! rust
00:09:00 verbose #9954 > > ///! typescript
00:09:00 verbose #9955 > > ///! python
00:09:00 verbose #9956 > >
00:09:00 verbose #9957 > > (1i32, 2i32)
00:09:00 verbose #9958 > > ||> flip pair
00:09:00 verbose #9959 > > |> _assert_eq (2, 1)
00:09:11 verbose #9960 > >
00:09:11 verbose #9961 > > ╭─[ 10.60s - return value ]────────────────────────────────────────────────────╮
00:09:11 verbose #9962 > > │ .py output (Cuda):                                                           │
00:09:11 verbose #9963 > > │ __assert_eq / actual: (2, 1) / expected: (2, 1)                              │
00:09:11 verbose #9964 > > │                                                                              │
00:09:11 verbose #9965 > > │ .rs output:                                                                  │
00:09:11 verbose #9966 > > │ __assert_eq / actual: (2, 1) / expected: (2, 1)                              │
00:09:11 verbose #9967 > > │                                                                              │
00:09:11 verbose #9968 > > │ .ts output:                                                                  │
00:09:11 verbose #9969 > > │ __assert_eq / actual: 2,1 / expected: 2,1                                    │
00:09:11 verbose #9970 > > │                                                                              │
00:09:11 verbose #9971 > > │ .py output:                                                                  │
00:09:11 verbose #9972 > > │ __assert_eq / actual: (2, 1) / expected: (2, 1)                              │
00:09:11 verbose #9973 > > │                                                                              │
00:09:11 verbose #9974 > > │                                                                              │
00:09:11 verbose #9975 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:11 verbose #9976 > >
00:09:11 verbose #9977 > > ╭─[ 10.60s - stdout ]──────────────────────────────────────────────────────────╮
00:09:11 verbose #9978 > > │ .fsx output:                                                                 │
00:09:11 verbose #9979 > > │ __assert_eq / actual: struct (2, 1) / expected: struct (2, 1)                │
00:09:11 verbose #9980 > > │                                                                              │
00:09:11 verbose #9981 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:11 verbose #9982 > >
00:09:11 verbose #9983 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:11 verbose #9984 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:11 verbose #9985 > > │ ### join_body                                                                │
00:09:11 verbose #9986 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:11 verbose #9987 > >
00:09:11 verbose #9988 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:11 verbose #9989 > > inl join_body body acc x =
00:09:11 verbose #9990 > >     if var_is x |> not
00:09:11 verbose #9991 > >     then body acc x
00:09:11 verbose #9992 > >     else
00:09:11 verbose #9993 > >         inl acc = dyn acc
00:09:11 verbose #9994 > >         join body acc x
00:09:11 verbose #9995 > >
00:09:11 verbose #9996 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:11 verbose #9997 > > //// test
00:09:11 verbose #9998 > >
00:09:11 verbose #9999 > > inl rec fold_list f s = function
00:09:11 verbose #10000 > >     | Cons (x, x') => fold_list f (f s x) x'
00:09:11 verbose #10001 > >     | Nil => s
00:09:11 verbose #10002 > >
00:09:11 verbose #10003 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:11 verbose #10004 > > //// test
00:09:11 verbose #10005 > > ///! fsharp
00:09:11 verbose #10006 > > ///! cuda
00:09:11 verbose #10007 > > ///! rust
00:09:11 verbose #10008 > > ///! typescript
00:09:11 verbose #10009 > > ///! python
00:09:11 verbose #10010 > > //// print_code=true
00:09:11 verbose #10011 > >
00:09:11 verbose #10012 > > [[ 5i32; 4; join 3; 2; 1 ]]
00:09:11 verbose #10013 > > |> fold_list (+) 0
00:09:11 verbose #10014 > > |> _assert_eq 15
00:09:22 verbose #10015 > >
00:09:22 verbose #10016 > > ╭─[ 11.08s - return value ]────────────────────────────────────────────────────╮
00:09:22 verbose #10017 > > │ .py output (Cuda):                                                           │
00:09:22 verbose #10018 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:09:22 verbose #10019 > > │                                                                              │
00:09:22 verbose #10020 > > │ .rs output:                                                                  │
00:09:22 verbose #10021 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:09:22 verbose #10022 > > │                                                                              │
00:09:22 verbose #10023 > > │ .ts output:                                                                  │
00:09:22 verbose #10024 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:09:22 verbose #10025 > > │                                                                              │
00:09:22 verbose #10026 > > │ .py output:                                                                  │
00:09:22 verbose #10027 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:09:22 verbose #10028 > > │                                                                              │
00:09:22 verbose #10029 > > │                                                                              │
00:09:22 verbose #10030 > > │                                                                              │
00:09:22 verbose #10031 > > │                                                                              │
00:09:22 verbose #10032 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:22 verbose #10033 > >
00:09:22 verbose #10034 > > ╭─[ 11.08s - stdout ]──────────────────────────────────────────────────────────╮
00:09:22 verbose #10035 > > │ .fsx:                                                                        │
00:09:22 verbose #10036 > > │ let rec method1 () : int32 =                                                 │
00:09:22 verbose #10037 > > │     3                                                                        │
00:09:22 verbose #10038 > > │ and method2 (v0 : bool) : bool =                                             │
00:09:22 verbose #10039 > > │     v0                                                                       │
00:09:22 verbose #10040 > > │ and closure0 (v0 : string) () : unit =                                       │
00:09:22 verbose #10041 > > │     let v1 : (string -> unit) = System.Console.WriteLine                     │
00:09:22 verbose #10042 > > │     v1 v0                                                                    │
00:09:22 verbose #10043 > > │ and method0 () : unit =                                                      │
00:09:22 verbose #10044 > > │     let v0 : int32 = method1()                                               │
00:09:22 verbose #10045 > > │     let v1 : int32 = 9 + v0                                                  │
00:09:22 verbose #10046 > > │     let v2 : int32 = v1 + 2                                                  │
00:09:22 verbose #10047 > > │     let v3 : int32 = v2 + 1                                                  │
00:09:22 verbose #10048 > > │     let v4 : bool = v3 = 15                                                  │
00:09:22 verbose #10049 > > │     let v6 : bool =                                                          │
00:09:22 verbose #10050 > > │         if v4 then                                                           │
00:09:22 verbose #10051 > > │             true                                                             │
00:09:22 verbose #10052 > > │         else                                                                 │
00:09:22 verbose #10053 > > │             method2(v4)                                                      │
00:09:22 verbose #10054 > > │     let v7 : string = "__assert_eq"                                          │
00:09:22 verbose #10055 > > │     let v8 : string = $"{v7} / actual: %A{v3} / expected: %A{15}"            │
00:09:22 verbose #10056 > > │     let v11 : unit = ()                                                      │
00:09:22 verbose #10057 > > │     let v12 : (unit -> unit) = closure0(v8)                                  │
00:09:22 verbose #10058 > > │     let v13 : unit = (fun () -> v12 (); v11) ()                              │
00:09:22 verbose #10059 > > │     let v15 : bool = v6 = false                                              │
00:09:22 verbose #10060 > > │     if v15 then                                                              │
00:09:22 verbose #10061 > > │         failwith<unit> v8                                                    │
00:09:22 verbose #10062 > > │ method0()                                                                    │
00:09:22 verbose #10063 > > │                                                                              │
00:09:22 verbose #10064 > > │                                                                              │
00:09:22 verbose #10065 > > │ .rs:                                                                         │
00:09:22 verbose #10066 > > │ #![allow(dead_code)]                                                         │
00:09:22 verbose #10067 > > │ #![allow(non_camel_case_types)]                                              │
00:09:22 verbose #10068 > > │ #![allow(non_snake_case)]                                                    │
00:09:22 verbose #10069 > > │ #![allow(non_upper_case_globals)]                                            │
00:09:22 verbose #10070 > > │ #![allow(unreachable_code)]                                                  │
00:09:22 verbose #10071 > > │ #![allow(unused_attributes)]                                                 │
00:09:22 verbose #10072 > > │ #![allow(unused_imports)]                                                    │
00:09:22 verbose #10073 > > │ #![allow(unused_macros)]                                                     │
00:09:22 verbose #10074 > > │ #![allow(unused_parens)]                                                     │
00:09:22 verbose #10075 > > │ #![allow(unused_variables)]                                                  │
00:09:22 verbose #10076 > > │ mod module_7e2cd9e0 {                                                        │
00:09:22 verbose #10077 > > │     pub mod Spiral_builder {                                                 │
00:09:22 verbose #10078 > > │         use super::*;                                                        │
00:09:22 verbose #10079 > > │         use fable_library_rust::Native_::on_startup;                         │
00:09:22 verbose #10080 > > │         use fable_library_rust::String_::printfn;                            │
00:09:22 verbose #10081 > > │         use fable_library_rust::String_::sprintf;                            │
00:09:22 verbose #10082 > > │         use fable_library_rust::String_::string;                             │
00:09:22 verbose #10083 > > │         pub fn method1() -> i32 {                                            │
00:09:22 verbose #10084 > > │             3_i32                                                            │
00:09:22 verbose #10085 > > │         }                                                                    │
00:09:22 verbose #10086 > > │         pub fn method2(v0: bool) -> bool {                                   │
00:09:22 verbose #10087 > > │             v0                                                               │
00:09:22 verbose #10088 > > │         }                                                                    │
00:09:22 verbose #10089 > > │         pub fn closure0(v0: string, unitVar: ()) {                           │
00:09:22 verbose #10090 > > │             printfn!("{0}", v0);                                             │
00:09:22 verbose #10091 > > │         }                                                                    │
00:09:22 verbose #10092 > > │         pub fn method0() {                                                   │
00:09:22 verbose #10093 > > │             let v3: i32 = 9_i32 + Spiral_builder::method1() + 2_i32 + 1_i32; │
00:09:22 verbose #10094 > > │             let v4: bool = v3 == 15_i32;                                     │
00:09:22 verbose #10095 > > │             let v6: bool = if v4 {                                           │
00:09:22 verbose #10096 > > │                 true                                                         │
00:09:22 verbose #10097 > > │             } else {                                                         │
00:09:22 verbose #10098 > > │                 Spiral_builder::method2(v4)                                  │
00:09:22 verbose #10099 > > │             };                                                               │
00:09:22 verbose #10100 > > │             let v8: string = sprintf!(                                       │
00:09:22 verbose #10101 > > │                 "{} / actual: {:?} / expected: {:?}",                        │
00:09:22 verbose #10102 > > │                 string("__assert_eq"),                                       │
00:09:22 verbose #10103 > > │                 v3,                                                          │
00:09:22 verbose #10104 > > │                 15_i32                                                       │
00:09:22 verbose #10105 > > │             );                                                               │
00:09:22 verbose #10106 > > │             let v13: () = {                                                  │
00:09:22 verbose #10107 > > │                 Spiral_builder::closure0(v8.clone(), ());                    │
00:09:22 verbose #10108 > > │                 ()                                                           │
00:09:22 verbose #10109 > > │             };                                                               │
00:09:22 verbose #10110 > > │             if v6 == false {                                                 │
00:09:22 verbose #10111 > > │                 panic!("{}", v8,);                                           │
00:09:22 verbose #10112 > > │             }                                                                │
00:09:22 verbose #10113 > > │         }                                                                    │
00:09:22 verbose #10114 > > │         on_startup!(Spiral_builder::method0());                              │
00:09:22 verbose #10115 > > │     }                                                                        │
00:09:22 verbose #10116 > > │ }                                                                            │
00:09:22 verbose #10117 > > │ pub use module_7e2cd9e0::*;                                                  │
00:09:22 verbose #10118 > > │                                                                              │
00:09:22 verbose #10119 > > │ .ts:                                                                         │
00:09:22 verbose #10120 > > │ import { int32 } from "./fable_modules/fable-library-ts.4.19.3/Int32.js";    │
00:09:22 verbose #10121 > > │ import { interpolate, toText } from                                          │
00:09:22 verbose #10122 > > │ "./fable_modules/fable-library-ts.4.19.3/String.js";                         │
00:09:22 verbose #10123 > > │                                                                              │
00:09:22 verbose #10124 > > │ export function method1(): int32 {                                           │
00:09:22 verbose #10125 > > │     return 3;                                                                │
00:09:22 verbose #10126 > > │ }                                                                            │
00:09:22 verbose #10127 > > │                                                                              │
00:09:22 verbose #10128 > > │ export function method2(v0: boolean): boolean {                              │
00:09:22 verbose #10129 > > │     return v0;                                                               │
00:09:22 verbose #10130 > > │ }                                                                            │
00:09:22 verbose #10131 > > │                                                                              │
00:09:22 verbose #10132 > > │ export function closure0(v0: string, unitVar: void): void {                  │
00:09:22 verbose #10133 > > │     console.log(v0);                                                         │
00:09:22 verbose #10134 > > │ }                                                                            │
00:09:22 verbose #10135 > > │                                                                              │
00:09:22 verbose #10136 > > │ export function method0(): void {                                            │
00:09:22 verbose #10137 > > │     const v3: int32 = (((9 + method1()) + 2) + 1) | 0;                       │
00:09:22 verbose #10138 > > │     const v4: boolean = v3 === 15;                                           │
00:09:22 verbose #10139 > > │     const v6: boolean = v4 ? true : method2(v4);                             │
00:09:22 verbose #10140 > > │     const v8: string = toText(interpolate("%P() / actual: %A%P() / expected: │
00:09:22 verbose #10141 > > │ %A%P()", ["__assert_eq", v3, 15]));                                          │
00:09:22 verbose #10142 > > │     let v13: any;                                                            │
00:09:22 verbose #10143 > > │     closure0(v8, undefined);                                                 │
00:09:22 verbose #10144 > > │     v13 = undefined;                                                         │
00:09:22 verbose #10145 > > │     if (v6 === false) {                                                      │
00:09:22 verbose #10146 > > │         throw new Error(v8);                                                 │
00:09:22 verbose #10147 > > │     }                                                                        │
00:09:22 verbose #10148 > > │ }                                                                            │
00:09:22 verbose #10149 > > │                                                                              │
00:09:22 verbose #10150 > > │ method0();                                                                   │
00:09:22 verbose #10151 > > │                                                                              │
00:09:22 verbose #10152 > > │                                                                              │
00:09:22 verbose #10153 > > │ .py:                                                                         │
00:09:22 verbose #10154 > > │ from fable_modules.fable_library.string_ import (to_text, interpolate)       │
00:09:22 verbose #10155 > > │                                                                              │
00:09:22 verbose #10156 > > │ def method1(__unit: None=None) -> int:                                       │
00:09:22 verbose #10157 > > │     return 3                                                                 │
00:09:22 verbose #10158 > > │                                                                              │
00:09:22 verbose #10159 > > │                                                                              │
00:09:22 verbose #10160 > > │ def method2(v0: bool) -> bool:                                               │
00:09:22 verbose #10161 > > │     return v0                                                                │
00:09:22 verbose #10162 > > │                                                                              │
00:09:22 verbose #10163 > > │                                                                              │
00:09:22 verbose #10164 > > │ def closure0(v0: str, unit_var: None) -> None:                               │
00:09:22 verbose #10165 > > │     print(v0)                                                                │
00:09:22 verbose #10166 > > │                                                                              │
00:09:22 verbose #10167 > > │                                                                              │
00:09:22 verbose #10168 > > │ def method0(__unit: None=None) -> None:                                      │
00:09:22 verbose #10169 > > │     v3: int = (((9 + method1()) + 2) + 1) or 0                               │
00:09:22 verbose #10170 > > │     v4: bool = v3 == 15                                                      │
00:09:22 verbose #10171 > > │     v6: bool = True if v4 else method2(v4)                                   │
00:09:22 verbose #10172 > > │     v8: str = to_text(interpolate("%P() / actual: %A%P() / expected:         │
00:09:22 verbose #10173 > > │ %A%P()", ["__assert_eq", v3, 15]))                                           │
00:09:22 verbose #10174 > > │     v13: None                                                                │
00:09:22 verbose #10175 > > │     closure0(v8, None)                                                       │
00:09:22 verbose #10176 > > │     v13 = None                                                               │
00:09:22 verbose #10177 > > │     if v6 == False:                                                          │
00:09:22 verbose #10178 > > │         raise Exception(v8)                                                  │
00:09:22 verbose #10179 > > │                                                                              │
00:09:22 verbose #10180 > > │                                                                              │
00:09:22 verbose #10181 > > │                                                                              │
00:09:22 verbose #10182 > > │ method0()                                                                    │
00:09:22 verbose #10183 > > │                                                                              │
00:09:22 verbose #10184 > > │                                                                              │
00:09:22 verbose #10185 > > │ .py:                                                                         │
00:09:22 verbose #10186 > > │ kernel = r"""                                                                │
00:09:22 verbose #10187 > > │ """                                                                          │
00:09:22 verbose #10188 > > │ class static_array():                                                        │
00:09:22 verbose #10189 > > │     def __init__(self, length):                                              │
00:09:22 verbose #10190 > > │         self.ptr = []                                                        │
00:09:22 verbose #10191 > > │         for _ in range(length):                                              │
00:09:22 verbose #10192 > > │             self.ptr.append(None)                                            │
00:09:22 verbose #10193 > > │                                                                              │
00:09:22 verbose #10194 > > │     def __getitem__(self, index):                                            │
00:09:22 verbose #10195 > > │         assert 0 <= index < len(self.ptr), "The get index needs to be in     │
00:09:22 verbose #10196 > > │ range."                                                                      │
00:09:22 verbose #10197 > > │         return self.ptr[index]                                               │
00:09:22 verbose #10198 > > │                                                                              │
00:09:22 verbose #10199 > > │     def __setitem__(self, index, value):                                     │
00:09:22 verbose #10200 > > │         assert 0 <= index < len(self.ptr), "The set index needs to be in     │
00:09:22 verbose #10201 > > │ range."                                                                      │
00:09:22 verbose #10202 > > │         self.ptr[index] = value                                              │
00:09:22 verbose #10203 > > │                                                                              │
00:09:22 verbose #10204 > > │ class static_array_list(static_array):                                       │
00:09:22 verbose #10205 > > │     def __init__(self, length):                                              │
00:09:22 verbose #10206 > > │         super().__init__(length)                                             │
00:09:22 verbose #10207 > > │         self.length = 0                                                      │
00:09:22 verbose #10208 > > │                                                                              │
00:09:22 verbose #10209 > > │     def __getitem__(self, index):                                            │
00:09:22 verbose #10210 > > │         assert 0 <= index < self.length, "The get index needs to be in       │
00:09:22 verbose #10211 > > │ range."                                                                      │
00:09:22 verbose #10212 > > │         return self.ptr[index]                                               │
00:09:22 verbose #10213 > > │                                                                              │
00:09:22 verbose #10214 > > │     def __setitem__(self, index, value):                                     │
00:09:22 verbose #10215 > > │         assert 0 <= index < self.length, "The set index needs to be in       │
00:09:22 verbose #10216 > > │ range."                                                                      │
00:09:22 verbose #10217 > > │         self.ptr[index] = value                                              │
00:09:22 verbose #10218 > > │                                                                              │
00:09:22 verbose #10219 > > │     def push(self,value):                                                    │
00:09:22 verbose #10220 > > │         assert (self.length < len(self.ptr)), "The length before pushing has │
00:09:22 verbose #10221 > > │ to be less than the maximum length of the array."                            │
00:09:22 verbose #10222 > > │         self.ptr[self.length] = value                                        │
00:09:22 verbose #10223 > > │         self.length += 1                                                     │
00:09:22 verbose #10224 > > │                                                                              │
00:09:22 verbose #10225 > > │     def pop(self):                                                           │
00:09:22 verbose #10226 > > │         assert (0 < self.length), "The length before popping has to be       │
00:09:22 verbose #10227 > > │ greater than 0."                                                             │
00:09:22 verbose #10228 > > │         self.length -= 1                                                     │
00:09:22 verbose #10229 > > │         return self.ptr[self.length]                                         │
00:09:22 verbose #10230 > > │                                                                              │
00:09:22 verbose #10231 > > │     def unsafe_set_length(self,i):                                           │
00:09:22 verbose #10232 > > │         assert 0 <= i <= len(self.ptr), "The new length has to be in range." │
00:09:22 verbose #10233 > > │         self.length = i                                                      │
00:09:22 verbose #10234 > > │                                                                              │
00:09:22 verbose #10235 > > │ class dynamic_array(static_array):                                           │
00:09:22 verbose #10236 > > │     pass                                                                     │
00:09:22 verbose #10237 > > │                                                                              │
00:09:22 verbose #10238 > > │ class dynamic_array_list(static_array_list):                                 │
00:09:22 verbose #10239 > > │     def length_(self): return self.length                                    │
00:09:22 verbose #10240 > > │                                                                              │
00:09:22 verbose #10241 > > │ import cupy as cp                                                            │
00:09:22 verbose #10242 > > │ from dataclasses import dataclass                                            │
00:09:22 verbose #10243 > > │ from typing import NamedTuple, Union, Callable, Tuple                        │
00:09:22 verbose #10244 > > │ i8 = i16 = i32 = i64 = u8 = u16 = u32 = u64 = int; f32 = f64 = float; char = │
00:09:22 verbose #10245 > > │ string = str                                                                 │
00:09:22 verbose #10246 > > │                                                                              │
00:09:22 verbose #10247 > > │ def method1() -> i32:                                                        │
00:09:22 verbose #10248 > > │     return 3                                                                 │
00:09:22 verbose #10249 > > │ def method2(v0 : bool) -> bool:                                              │
00:09:22 verbose #10250 > > │     return v0                                                                │
00:09:22 verbose #10251 > > │ def method0() -> None:                                                       │
00:09:22 verbose #10252 > > │     v0 = method1()                                                           │
00:09:22 verbose #10253 > > │     v1 = 9 + v0                                                              │
00:09:22 verbose #10254 > > │     del v0                                                                   │
00:09:22 verbose #10255 > > │     v2 = v1 + 2                                                              │
00:09:22 verbose #10256 > > │     del v1                                                                   │
00:09:22 verbose #10257 > > │     v3 = v2 + 1                                                              │
00:09:22 verbose #10258 > > │     del v2                                                                   │
00:09:22 verbose #10259 > > │     v4 = v3 == 15                                                            │
00:09:22 verbose #10260 > > │     if v4:                                                                   │
00:09:22 verbose #10261 > > │         v6 = True                                                            │
00:09:22 verbose #10262 > > │     else:                                                                    │
00:09:22 verbose #10263 > > │         v6 = method2(v4)                                                     │
00:09:22 verbose #10264 > > │     del v4                                                                   │
00:09:22 verbose #10265 > > │     v9 = "__assert_eq"                                                       │
00:09:22 verbose #10266 > > │     v10 = f"{v9} / actual: {v3} / expected: {15}"                            │
00:09:22 verbose #10267 > > │     del v3, v9                                                               │
00:09:22 verbose #10268 > > │     print(v10)                                                               │
00:09:22 verbose #10269 > > │     v16 = v6 == False                                                        │
00:09:22 verbose #10270 > > │     del v6                                                                   │
00:09:22 verbose #10271 > > │     if v16:                                                                  │
00:09:22 verbose #10272 > > │         del v16                                                              │
00:09:22 verbose #10273 > > │         raise Exception(v10)                                                 │
00:09:22 verbose #10274 > > │     else:                                                                    │
00:09:22 verbose #10275 > > │         del v10, v16                                                         │
00:09:22 verbose #10276 > > │         return                                                               │
00:09:22 verbose #10277 > > │ def main():                                                                  │
00:09:22 verbose #10278 > > │     return method0()                                                         │
00:09:22 verbose #10279 > > │                                                                              │
00:09:22 verbose #10280 > > │ if __name__ == '__main__': result = main(); None if result is None else      │
00:09:22 verbose #10281 > > │ print(result)                                                                │
00:09:22 verbose #10282 > > │                                                                              │
00:09:22 verbose #10283 > > │                                                                              │
00:09:22 verbose #10284 > > │ .py:                                                                         │
00:09:22 verbose #10285 > > │ kernel = r"""                                                                │
00:09:22 verbose #10286 > > │ """                                                                          │
00:09:22 verbose #10287 > > │ class static_array():                                                        │
00:09:22 verbose #10288 > > │     def __init__(self, length):                                              │
00:09:22 verbose #10289 > > │         self.ptr = []                                                        │
00:09:22 verbose #10290 > > │         for _ in range(length):                                              │
00:09:22 verbose #10291 > > │             self.ptr.append(None)                                            │
00:09:22 verbose #10292 > > │                                                                              │
00:09:22 verbose #10293 > > │     def __getitem__(self, index):                                            │
00:09:22 verbose #10294 > > │         assert 0 <= index < len(self.ptr), "The get index needs to be in     │
00:09:22 verbose #10295 > > │ range."                                                                      │
00:09:22 verbose #10296 > > │         return self.ptr[index]                                               │
00:09:22 verbose #10297 > > │                                                                              │
00:09:22 verbose #10298 > > │     def __setitem__(self, index, value):                                     │
00:09:22 verbose #10299 > > │         assert 0 <= index < len(self.ptr), "The set index needs to be in     │
00:09:22 verbose #10300 > > │ range."                                                                      │
00:09:22 verbose #10301 > > │         self.ptr[index] = value                                              │
00:09:22 verbose #10302 > > │                                                                              │
00:09:22 verbose #10303 > > │ class static_array_list(static_array):                                       │
00:09:22 verbose #10304 > > │     def __init__(self, length):                                              │
00:09:22 verbose #10305 > > │         super().__init__(length)                                             │
00:09:22 verbose #10306 > > │         self.length = 0                                                      │
00:09:22 verbose #10307 > > │                                                                              │
00:09:22 verbose #10308 > > │     def __getitem__(self, index):                                            │
00:09:22 verbose #10309 > > │         assert 0 <= index < self.length, "The get index needs to be in       │
00:09:22 verbose #10310 > > │ range."                                                                      │
00:09:22 verbose #10311 > > │         return self.ptr[index]                                               │
00:09:22 verbose #10312 > > │                                                                              │
00:09:22 verbose #10313 > > │     def __setitem__(self, index, value):                                     │
00:09:22 verbose #10314 > > │         assert 0 <= index < self.length, "The set index needs to be in       │
00:09:22 verbose #10315 > > │ range."                                                                      │
00:09:22 verbose #10316 > > │         self.ptr[index] = value                                              │
00:09:22 verbose #10317 > > │                                                                              │
00:09:22 verbose #10318 > > │     def push(self,value):                                                    │
00:09:22 verbose #10319 > > │         assert (self.length < len(self.ptr)), "The length before pushing has │
00:09:22 verbose #10320 > > │ to be less than the maximum length of the array."                            │
00:09:22 verbose #10321 > > │         self.ptr[self.length] = value                                        │
00:09:22 verbose #10322 > > │         self.length += 1                                                     │
00:09:22 verbose #10323 > > │                                                                              │
00:09:22 verbose #10324 > > │     def pop(self):                                                           │
00:09:22 verbose #10325 > > │         assert (0 < self.length), "The length before popping has to be       │
00:09:22 verbose #10326 > > │ greater than 0."                                                             │
00:09:22 verbose #10327 > > │         self.length -= 1                                                     │
00:09:22 verbose #10328 > > │         return self.ptr[self.length]                                         │
00:09:22 verbose #10329 > > │                                                                              │
00:09:22 verbose #10330 > > │     def unsafe_set_length(self,i):                                           │
00:09:22 verbose #10331 > > │         assert 0 <= i <= len(self.ptr), "The new length has to be in range." │
00:09:22 verbose #10332 > > │         self.length = i                                                      │
00:09:22 verbose #10333 > > │                                                                              │
00:09:22 verbose #10334 > > │ class dynamic_array(static_array):                                           │
00:09:22 verbose #10335 > > │     pass                                                                     │
00:09:22 verbose #10336 > > │                                                                              │
00:09:22 verbose #10337 > > │ class dynamic_array_list(static_array_list):                                 │
00:09:22 verbose #10338 > > │     def length_(self): return self.length                                    │
00:09:22 verbose #10339 > > │                                                                              │
00:09:22 verbose #10340 > > │ import cupy as cp                                                            │
00:09:22 verbose #10341 > > │ from dataclasses import dataclass                                            │
00:09:22 verbose #10342 > > │ from typing import NamedTuple, Union, Callable, Tuple                        │
00:09:22 verbose #10343 > > │ i8 = i16 = i32 = i64 = u8 = u16 = u32 = u64 = int; f32 = f64 = float; char = │
00:09:22 verbose #10344 > > │ string = str                                                                 │
00:09:22 verbose #10345 > > │                                                                              │
00:09:22 verbose #10346 > > │ def method1() -> i32:                                                        │
00:09:22 verbose #10347 > > │     return 3                                                                 │
00:09:22 verbose #10348 > > │ def method2(v0 : bool) -> bool:                                              │
00:09:22 verbose #10349 > > │     return v0                                                                │
00:09:22 verbose #10350 > > │ def method0() -> None:                                                       │
00:09:22 verbose #10351 > > │     v0 = method1()                                                           │
00:09:22 verbose #10352 > > │     v1 = 9 + v0                                                              │
00:09:22 verbose #10353 > > │     del v0                                                                   │
00:09:22 verbose #10354 > > │     v2 = v1 + 2                                                              │
00:09:22 verbose #10355 > > │     del v1                                                                   │
00:09:22 verbose #10356 > > │     v3 = v2 + 1                                                              │
00:09:22 verbose #10357 > > │     del v2                                                                   │
00:09:22 verbose #10358 > > │     v4 = v3 == 15                                                            │
00:09:22 verbose #10359 > > │     if v4:                                                                   │
00:09:22 verbose #10360 > > │         v6 = True                                                            │
00:09:22 verbose #10361 > > │     else:                                                                    │
00:09:22 verbose #10362 > > │         v6 = method2(v4)                                                     │
00:09:22 verbose #10363 > > │     del v4                                                                   │
00:09:22 verbose #10364 > > │     v9 = "__assert_eq"                                                       │
00:09:22 verbose #10365 > > │     v10 = f"{v9} / actual: {v3} / expected: {15}"                            │
00:09:22 verbose #10366 > > │     del v3, v9                                                               │
00:09:22 verbose #10367 > > │     print(v10)                                                               │
00:09:22 verbose #10368 > > │     v16 = v6 == False                                                        │
00:09:22 verbose #10369 > > │     del v6                                                                   │
00:09:22 verbose #10370 > > │     if v16:                                                                  │
00:09:22 verbose #10371 > > │         del v16                                                              │
00:09:22 verbose #10372 > > │         raise Exception(v10)                                                 │
00:09:22 verbose #10373 > > │     else:                                                                    │
00:09:22 verbose #10374 > > │         del v10, v16                                                         │
00:09:22 verbose #10375 > > │         return                                                               │
00:09:22 verbose #10376 > > │ def main():                                                                  │
00:09:22 verbose #10377 > > │     return method0()                                                         │
00:09:22 verbose #10378 > > │                                                                              │
00:09:22 verbose #10379 > > │ if __name__ == '__main__': result = main(); None if result is None else      │
00:09:22 verbose #10380 > > │ print(result)                                                                │
00:09:22 verbose #10381 > > │                                                                              │
00:09:22 verbose #10382 > > │ .fsx output:                                                                 │
00:09:22 verbose #10383 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:09:22 verbose #10384 > > │                                                                              │
00:09:22 verbose #10385 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:22 verbose #10386 > >
00:09:22 verbose #10387 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:22 verbose #10388 > > //// test
00:09:22 verbose #10389 > > ///! fsharp
00:09:22 verbose #10390 > > ///! cuda
00:09:22 verbose #10391 > > ///! rust
00:09:22 verbose #10392 > > ///! typescript
00:09:22 verbose #10393 > > ///! python
00:09:22 verbose #10394 > > //// print_code=true
00:09:22 verbose #10395 > >
00:09:22 verbose #10396 > > [[ 5i32; 4; join 3; 2; 1 ]]
00:09:22 verbose #10397 > > |> fold_list (join_body (+)) 0
00:09:22 verbose #10398 > > |> _assert_eq 15
00:09:32 verbose #10399 > >
00:09:32 verbose #10400 > > ╭─[ 9.94s - return value ]─────────────────────────────────────────────────────╮
00:09:32 verbose #10401 > > │ .py output (Cuda):                                                           │
00:09:32 verbose #10402 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:09:32 verbose #10403 > > │                                                                              │
00:09:32 verbose #10404 > > │ .rs output:                                                                  │
00:09:32 verbose #10405 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:09:32 verbose #10406 > > │                                                                              │
00:09:32 verbose #10407 > > │ .ts output:                                                                  │
00:09:32 verbose #10408 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:09:32 verbose #10409 > > │                                                                              │
00:09:32 verbose #10410 > > │ .py output:                                                                  │
00:09:32 verbose #10411 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:09:32 verbose #10412 > > │                                                                              │
00:09:32 verbose #10413 > > │                                                                              │
00:09:32 verbose #10414 > > │                                                                              │
00:09:32 verbose #10415 > > │                                                                              │
00:09:32 verbose #10416 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:32 verbose #10417 > >
00:09:32 verbose #10418 > > ╭─[ 9.94s - stdout ]───────────────────────────────────────────────────────────╮
00:09:32 verbose #10419 > > │ .fsx:                                                                        │
00:09:32 verbose #10420 > > │ let rec method1 () : int32 =                                                 │
00:09:32 verbose #10421 > > │     3                                                                        │
00:09:32 verbose #10422 > > │ and method2 (v0 : int32, v1 : int32) : int32 =                               │
00:09:32 verbose #10423 > > │     let v2 : int32 = v1 + v0                                                 │
00:09:32 verbose #10424 > > │     v2                                                                       │
00:09:32 verbose #10425 > > │ and method3 (v0 : bool) : bool =                                             │
00:09:32 verbose #10426 > > │     v0                                                                       │
00:09:32 verbose #10427 > > │ and closure0 (v0 : string) () : unit =                                       │
00:09:32 verbose #10428 > > │     let v1 : (string -> unit) = System.Console.WriteLine                     │
00:09:32 verbose #10429 > > │     v1 v0                                                                    │
00:09:32 verbose #10430 > > │ and method0 () : unit =                                                      │
00:09:32 verbose #10431 > > │     let v0 : int32 = method1()                                               │
00:09:32 verbose #10432 > > │     let v1 : int32 = 9                                                       │
00:09:32 verbose #10433 > > │     let v2 : int32 = method2(v0, v1)                                         │
00:09:32 verbose #10434 > > │     let v3 : int32 = v2 + 2                                                  │
00:09:32 verbose #10435 > > │     let v4 : int32 = v3 + 1                                                  │
00:09:32 verbose #10436 > > │     let v5 : bool = v4 = 15                                                  │
00:09:32 verbose #10437 > > │     let v7 : bool =                                                          │
00:09:32 verbose #10438 > > │         if v5 then                                                           │
00:09:32 verbose #10439 > > │             true                                                             │
00:09:32 verbose #10440 > > │         else                                                                 │
00:09:32 verbose #10441 > > │             method3(v5)                                                      │
00:09:32 verbose #10442 > > │     let v8 : string = "__assert_eq"                                          │
00:09:32 verbose #10443 > > │     let v9 : string = $"{v8} / actual: %A{v4} / expected: %A{15}"            │
00:09:32 verbose #10444 > > │     let v12 : unit = ()                                                      │
00:09:32 verbose #10445 > > │     let v13 : (unit -> unit) = closure0(v9)                                  │
00:09:32 verbose #10446 > > │     let v14 : unit = (fun () -> v13 (); v12) ()                              │
00:09:32 verbose #10447 > > │     let v16 : bool = v7 = false                                              │
00:09:32 verbose #10448 > > │     if v16 then                                                              │
00:09:32 verbose #10449 > > │         failwith<unit> v9                                                    │
00:09:32 verbose #10450 > > │ method0()                                                                    │
00:09:32 verbose #10451 > > │                                                                              │
00:09:32 verbose #10452 > > │                                                                              │
00:09:32 verbose #10453 > > │ .rs:                                                                         │
00:09:32 verbose #10454 > > │ #![allow(dead_code)]                                                         │
00:09:32 verbose #10455 > > │ #![allow(non_camel_case_types)]                                              │
00:09:32 verbose #10456 > > │ #![allow(non_snake_case)]                                                    │
00:09:32 verbose #10457 > > │ #![allow(non_upper_case_globals)]                                            │
00:09:32 verbose #10458 > > │ #![allow(unreachable_code)]                                                  │
00:09:32 verbose #10459 > > │ #![allow(unused_attributes)]                                                 │
00:09:32 verbose #10460 > > │ #![allow(unused_imports)]                                                    │
00:09:32 verbose #10461 > > │ #![allow(unused_macros)]                                                     │
00:09:32 verbose #10462 > > │ #![allow(unused_parens)]                                                     │
00:09:32 verbose #10463 > > │ #![allow(unused_variables)]                                                  │
00:09:32 verbose #10464 > > │ mod module_7e2cd9e0 {                                                        │
00:09:32 verbose #10465 > > │     pub mod Spiral_builder {                                                 │
00:09:32 verbose #10466 > > │         use super::*;                                                        │
00:09:32 verbose #10467 > > │         use fable_library_rust::Native_::on_startup;                         │
00:09:32 verbose #10468 > > │         use fable_library_rust::String_::printfn;                            │
00:09:32 verbose #10469 > > │         use fable_library_rust::String_::sprintf;                            │
00:09:32 verbose #10470 > > │         use fable_library_rust::String_::string;                             │
00:09:32 verbose #10471 > > │         pub fn method1() -> i32 {                                            │
00:09:32 verbose #10472 > > │             3_i32                                                            │
00:09:32 verbose #10473 > > │         }                                                                    │
00:09:32 verbose #10474 > > │         pub fn method2(v0: i32, v1: i32) -> i32 {                            │
00:09:32 verbose #10475 > > │             v1 + v0                                                          │
00:09:32 verbose #10476 > > │         }                                                                    │
00:09:32 verbose #10477 > > │         pub fn method3(v0: bool) -> bool {                                   │
00:09:32 verbose #10478 > > │             v0                                                               │
00:09:32 verbose #10479 > > │         }                                                                    │
00:09:32 verbose #10480 > > │         pub fn closure0(v0: string, unitVar: ()) {                           │
00:09:32 verbose #10481 > > │             printfn!("{0}", v0);                                             │
00:09:32 verbose #10482 > > │         }                                                                    │
00:09:32 verbose #10483 > > │         pub fn method0() {                                                   │
00:09:32 verbose #10484 > > │             let v4: i32 = Spiral_builder::method2(Spiral_builder::method1(), │
00:09:32 verbose #10485 > > │ 9_i32) + 2_i32 + 1_i32;                                                      │
00:09:32 verbose #10486 > > │             let v5: bool = v4 == 15_i32;                                     │
00:09:32 verbose #10487 > > │             let v7: bool = if v5 {                                           │
00:09:32 verbose #10488 > > │                 true                                                         │
00:09:32 verbose #10489 > > │             } else {                                                         │
00:09:32 verbose #10490 > > │                 Spiral_builder::method3(v5)                                  │
00:09:32 verbose #10491 > > │             };                                                               │
00:09:32 verbose #10492 > > │             let v9: string = sprintf!(                                       │
00:09:32 verbose #10493 > > │                 "{} / actual: {:?} / expected: {:?}",                        │
00:09:32 verbose #10494 > > │                 string("__assert_eq"),                                       │
00:09:32 verbose #10495 > > │                 v4,                                                          │
00:09:32 verbose #10496 > > │                 15_i32                                                       │
00:09:32 verbose #10497 > > │             );                                                               │
00:09:32 verbose #10498 > > │             let v14: () = {                                                  │
00:09:32 verbose #10499 > > │                 Spiral_builder::closure0(v9.clone(), ());                    │
00:09:32 verbose #10500 > > │                 ()                                                           │
00:09:32 verbose #10501 > > │             };                                                               │
00:09:32 verbose #10502 > > │             if v7 == false {                                                 │
00:09:32 verbose #10503 > > │                 panic!("{}", v9,);                                           │
00:09:32 verbose #10504 > > │             }                                                                │
00:09:32 verbose #10505 > > │         }                                                                    │
00:09:32 verbose #10506 > > │         on_startup!(Spiral_builder::method0());                              │
00:09:32 verbose #10507 > > │     }                                                                        │
00:09:32 verbose #10508 > > │ }                                                                            │
00:09:32 verbose #10509 > > │ pub use module_7e2cd9e0::*;                                                  │
00:09:32 verbose #10510 > > │                                                                              │
00:09:32 verbose #10511 > > │ .ts:                                                                         │
00:09:32 verbose #10512 > > │ import { int32 } from "./fable_modules/fable-library-ts.4.19.3/Int32.js";    │
00:09:32 verbose #10513 > > │ import { interpolate, toText } from                                          │
00:09:32 verbose #10514 > > │ "./fable_modules/fable-library-ts.4.19.3/String.js";                         │
00:09:32 verbose #10515 > > │                                                                              │
00:09:32 verbose #10516 > > │ export function method1(): int32 {                                           │
00:09:32 verbose #10517 > > │     return 3;                                                                │
00:09:32 verbose #10518 > > │ }                                                                            │
00:09:32 verbose #10519 > > │                                                                              │
00:09:32 verbose #10520 > > │ export function method2(v0: int32, v1: int32): int32 {                       │
00:09:32 verbose #10521 > > │     return v1 + v0;                                                          │
00:09:32 verbose #10522 > > │ }                                                                            │
00:09:32 verbose #10523 > > │                                                                              │
00:09:32 verbose #10524 > > │ export function method3(v0: boolean): boolean {                              │
00:09:32 verbose #10525 > > │     return v0;                                                               │
00:09:32 verbose #10526 > > │ }                                                                            │
00:09:32 verbose #10527 > > │                                                                              │
00:09:32 verbose #10528 > > │ export function closure0(v0: string, unitVar: void): void {                  │
00:09:32 verbose #10529 > > │     console.log(v0);                                                         │
00:09:32 verbose #10530 > > │ }                                                                            │
00:09:32 verbose #10531 > > │                                                                              │
00:09:32 verbose #10532 > > │ export function method0(): void {                                            │
00:09:32 verbose #10533 > > │     const v4: int32 = ((method2(method1(), 9) + 2) + 1) | 0;                 │
00:09:32 verbose #10534 > > │     const v5: boolean = v4 === 15;                                           │
00:09:32 verbose #10535 > > │     const v7: boolean = v5 ? true : method3(v5);                             │
00:09:32 verbose #10536 > > │     const v9: string = toText(interpolate("%P() / actual: %A%P() / expected: │
00:09:32 verbose #10537 > > │ %A%P()", ["__assert_eq", v4, 15]));                                          │
00:09:32 verbose #10538 > > │     let v14: any;                                                            │
00:09:32 verbose #10539 > > │     closure0(v9, undefined);                                                 │
00:09:32 verbose #10540 > > │     v14 = undefined;                                                         │
00:09:32 verbose #10541 > > │     if (v7 === false) {                                                      │
00:09:32 verbose #10542 > > │         throw new Error(v9);                                                 │
00:09:32 verbose #10543 > > │     }                                                                        │
00:09:32 verbose #10544 > > │ }                                                                            │
00:09:32 verbose #10545 > > │                                                                              │
00:09:32 verbose #10546 > > │ method0();                                                                   │
00:09:32 verbose #10547 > > │                                                                              │
00:09:32 verbose #10548 > > │                                                                              │
00:09:32 verbose #10549 > > │ .py:                                                                         │
00:09:32 verbose #10550 > > │ from fable_modules.fable_library.string_ import (to_text, interpolate)       │
00:09:32 verbose #10551 > > │                                                                              │
00:09:32 verbose #10552 > > │ def method1(__unit: None=None) -> int:                                       │
00:09:32 verbose #10553 > > │     return 3                                                                 │
00:09:32 verbose #10554 > > │                                                                              │
00:09:32 verbose #10555 > > │                                                                              │
00:09:32 verbose #10556 > > │ def method2(v0: int, v1: int) -> int:                                        │
00:09:32 verbose #10557 > > │     return v1 + v0                                                           │
00:09:32 verbose #10558 > > │                                                                              │
00:09:32 verbose #10559 > > │                                                                              │
00:09:32 verbose #10560 > > │ def method3(v0: bool) -> bool:                                               │
00:09:32 verbose #10561 > > │     return v0                                                                │
00:09:32 verbose #10562 > > │                                                                              │
00:09:32 verbose #10563 > > │                                                                              │
00:09:32 verbose #10564 > > │ def closure0(v0: str, unit_var: None) -> None:                               │
00:09:32 verbose #10565 > > │     print(v0)                                                                │
00:09:32 verbose #10566 > > │                                                                              │
00:09:32 verbose #10567 > > │                                                                              │
00:09:32 verbose #10568 > > │ def method0(__unit: None=None) -> None:                                      │
00:09:32 verbose #10569 > > │     v4: int = ((method2(method1(), 9) + 2) + 1) or 0                         │
00:09:32 verbose #10570 > > │     v5: bool = v4 == 15                                                      │
00:09:32 verbose #10571 > > │     v7: bool = True if v5 else method3(v5)                                   │
00:09:32 verbose #10572 > > │     v9: str = to_text(interpolate("%P() / actual: %A%P() / expected:         │
00:09:32 verbose #10573 > > │ %A%P()", ["__assert_eq", v4, 15]))                                           │
00:09:32 verbose #10574 > > │     v14: None                                                                │
00:09:32 verbose #10575 > > │     closure0(v9, None)                                                       │
00:09:32 verbose #10576 > > │     v14 = None                                                               │
00:09:32 verbose #10577 > > │     if v7 == False:                                                          │
00:09:32 verbose #10578 > > │         raise Exception(v9)                                                  │
00:09:32 verbose #10579 > > │                                                                              │
00:09:32 verbose #10580 > > │                                                                              │
00:09:32 verbose #10581 > > │                                                                              │
00:09:32 verbose #10582 > > │ method0()                                                                    │
00:09:32 verbose #10583 > > │                                                                              │
00:09:32 verbose #10584 > > │                                                                              │
00:09:32 verbose #10585 > > │ .py:                                                                         │
00:09:32 verbose #10586 > > │ kernel = r"""                                                                │
00:09:32 verbose #10587 > > │ """                                                                          │
00:09:32 verbose #10588 > > │ class static_array():                                                        │
00:09:32 verbose #10589 > > │     def __init__(self, length):                                              │
00:09:32 verbose #10590 > > │         self.ptr = []                                                        │
00:09:32 verbose #10591 > > │         for _ in range(length):                                              │
00:09:32 verbose #10592 > > │             self.ptr.append(None)                                            │
00:09:32 verbose #10593 > > │                                                                              │
00:09:32 verbose #10594 > > │     def __getitem__(self, index):                                            │
00:09:32 verbose #10595 > > │         assert 0 <= index < len(self.ptr), "The get index needs to be in     │
00:09:32 verbose #10596 > > │ range."                                                                      │
00:09:32 verbose #10597 > > │         return self.ptr[index]                                               │
00:09:32 verbose #10598 > > │                                                                              │
00:09:32 verbose #10599 > > │     def __setitem__(self, index, value):                                     │
00:09:32 verbose #10600 > > │         assert 0 <= index < len(self.ptr), "The set index needs to be in     │
00:09:32 verbose #10601 > > │ range."                                                                      │
00:09:32 verbose #10602 > > │         self.ptr[index] = value                                              │
00:09:32 verbose #10603 > > │                                                                              │
00:09:32 verbose #10604 > > │ class static_array_list(static_array):                                       │
00:09:32 verbose #10605 > > │     def __init__(self, length):                                              │
00:09:32 verbose #10606 > > │         super().__init__(length)                                             │
00:09:32 verbose #10607 > > │         self.length = 0                                                      │
00:09:32 verbose #10608 > > │                                                                              │
00:09:32 verbose #10609 > > │     def __getitem__(self, index):                                            │
00:09:32 verbose #10610 > > │         assert 0 <= index < self.length, "The get index needs to be in       │
00:09:32 verbose #10611 > > │ range."                                                                      │
00:09:32 verbose #10612 > > │         return self.ptr[index]                                               │
00:09:32 verbose #10613 > > │                                                                              │
00:09:32 verbose #10614 > > │     def __setitem__(self, index, value):                                     │
00:09:32 verbose #10615 > > │         assert 0 <= index < self.length, "The set index needs to be in       │
00:09:32 verbose #10616 > > │ range."                                                                      │
00:09:32 verbose #10617 > > │         self.ptr[index] = value                                              │
00:09:32 verbose #10618 > > │                                                                              │
00:09:32 verbose #10619 > > │     def push(self,value):                                                    │
00:09:32 verbose #10620 > > │         assert (self.length < len(self.ptr)), "The length before pushing has │
00:09:32 verbose #10621 > > │ to be less than the maximum length of the array."                            │
00:09:32 verbose #10622 > > │         self.ptr[self.length] = value                                        │
00:09:32 verbose #10623 > > │         self.length += 1                                                     │
00:09:32 verbose #10624 > > │                                                                              │
00:09:32 verbose #10625 > > │     def pop(self):                                                           │
00:09:32 verbose #10626 > > │         assert (0 < self.length), "The length before popping has to be       │
00:09:32 verbose #10627 > > │ greater than 0."                                                             │
00:09:32 verbose #10628 > > │         self.length -= 1                                                     │
00:09:32 verbose #10629 > > │         return self.ptr[self.length]                                         │
00:09:32 verbose #10630 > > │                                                                              │
00:09:32 verbose #10631 > > │     def unsafe_set_length(self,i):                                           │
00:09:32 verbose #10632 > > │         assert 0 <= i <= len(self.ptr), "The new length has to be in range." │
00:09:32 verbose #10633 > > │         self.length = i                                                      │
00:09:32 verbose #10634 > > │                                                                              │
00:09:32 verbose #10635 > > │ class dynamic_array(static_array):                                           │
00:09:32 verbose #10636 > > │     pass                                                                     │
00:09:32 verbose #10637 > > │                                                                              │
00:09:32 verbose #10638 > > │ class dynamic_array_list(static_array_list):                                 │
00:09:32 verbose #10639 > > │     def length_(self): return self.length                                    │
00:09:32 verbose #10640 > > │                                                                              │
00:09:32 verbose #10641 > > │ import cupy as cp                                                            │
00:09:32 verbose #10642 > > │ from dataclasses import dataclass                                            │
00:09:32 verbose #10643 > > │ from typing import NamedTuple, Union, Callable, Tuple                        │
00:09:32 verbose #10644 > > │ i8 = i16 = i32 = i64 = u8 = u16 = u32 = u64 = int; f32 = f64 = float; char = │
00:09:32 verbose #10645 > > │ string = str                                                                 │
00:09:32 verbose #10646 > > │                                                                              │
00:09:32 verbose #10647 > > │ def method1() -> i32:                                                        │
00:09:32 verbose #10648 > > │     return 3                                                                 │
00:09:32 verbose #10649 > > │ def method2(v0 : i32, v1 : i32) -> i32:                                      │
00:09:32 verbose #10650 > > │     v2 = v1 + v0                                                             │
00:09:32 verbose #10651 > > │     del v0, v1                                                               │
00:09:32 verbose #10652 > > │     return v2                                                                │
00:09:32 verbose #10653 > > │ def method3(v0 : bool) -> bool:                                              │
00:09:32 verbose #10654 > > │     return v0                                                                │
00:09:32 verbose #10655 > > │ def method0() -> None:                                                       │
00:09:32 verbose #10656 > > │     v0 = method1()                                                           │
00:09:32 verbose #10657 > > │     v1 = 9                                                                   │
00:09:32 verbose #10658 > > │     v2 = method2(v0, v1)                                                     │
00:09:32 verbose #10659 > > │     del v0, v1                                                               │
00:09:32 verbose #10660 > > │     v3 = v2 + 2                                                              │
00:09:32 verbose #10661 > > │     del v2                                                                   │
00:09:32 verbose #10662 > > │     v4 = v3 + 1                                                              │
00:09:32 verbose #10663 > > │     del v3                                                                   │
00:09:32 verbose #10664 > > │     v5 = v4 == 15                                                            │
00:09:32 verbose #10665 > > │     if v5:                                                                   │
00:09:32 verbose #10666 > > │         v7 = True                                                            │
00:09:32 verbose #10667 > > │     else:                                                                    │
00:09:32 verbose #10668 > > │         v7 = method3(v5)                                                     │
00:09:32 verbose #10669 > > │     del v5                                                                   │
00:09:32 verbose #10670 > > │     v10 = "__assert_eq"                                                      │
00:09:32 verbose #10671 > > │     v11 = f"{v10} / actual: {v4} / expected: {15}"                           │
00:09:32 verbose #10672 > > │     del v4, v10                                                              │
00:09:32 verbose #10673 > > │     print(v11)                                                               │
00:09:32 verbose #10674 > > │     v17 = v7 == False                                                        │
00:09:32 verbose #10675 > > │     del v7                                                                   │
00:09:32 verbose #10676 > > │     if v17:                                                                  │
00:09:32 verbose #10677 > > │         del v17                                                              │
00:09:32 verbose #10678 > > │         raise Exception(v11)                                                 │
00:09:32 verbose #10679 > > │     else:                                                                    │
00:09:32 verbose #10680 > > │         del v11, v17                                                         │
00:09:32 verbose #10681 > > │         return                                                               │
00:09:32 verbose #10682 > > │ def main():                                                                  │
00:09:32 verbose #10683 > > │     return method0()                                                         │
00:09:32 verbose #10684 > > │                                                                              │
00:09:32 verbose #10685 > > │ if __name__ == '__main__': result = main(); None if result is None else      │
00:09:32 verbose #10686 > > │ print(result)                                                                │
00:09:32 verbose #10687 > > │                                                                              │
00:09:32 verbose #10688 > > │                                                                              │
00:09:32 verbose #10689 > > │ .py:                                                                         │
00:09:32 verbose #10690 > > │ kernel = r"""                                                                │
00:09:32 verbose #10691 > > │ """                                                                          │
00:09:32 verbose #10692 > > │ class static_array():                                                        │
00:09:32 verbose #10693 > > │     def __init__(self, length):                                              │
00:09:32 verbose #10694 > > │         self.ptr = []                                                        │
00:09:32 verbose #10695 > > │         for _ in range(length):                                              │
00:09:32 verbose #10696 > > │             self.ptr.append(None)                                            │
00:09:32 verbose #10697 > > │                                                                              │
00:09:32 verbose #10698 > > │     def __getitem__(self, index):                                            │
00:09:32 verbose #10699 > > │         assert 0 <= index < len(self.ptr), "The get index needs to be in     │
00:09:32 verbose #10700 > > │ range."                                                                      │
00:09:32 verbose #10701 > > │         return self.ptr[index]                                               │
00:09:32 verbose #10702 > > │                                                                              │
00:09:32 verbose #10703 > > │     def __setitem__(self, index, value):                                     │
00:09:32 verbose #10704 > > │         assert 0 <= index < len(self.ptr), "The set index needs to be in     │
00:09:32 verbose #10705 > > │ range."                                                                      │
00:09:32 verbose #10706 > > │         self.ptr[index] = value                                              │
00:09:32 verbose #10707 > > │                                                                              │
00:09:32 verbose #10708 > > │ class static_array_list(static_array):                                       │
00:09:32 verbose #10709 > > │     def __init__(self, length):                                              │
00:09:32 verbose #10710 > > │         super().__init__(length)                                             │
00:09:32 verbose #10711 > > │         self.length = 0                                                      │
00:09:32 verbose #10712 > > │                                                                              │
00:09:32 verbose #10713 > > │     def __getitem__(self, index):                                            │
00:09:32 verbose #10714 > > │         assert 0 <= index < self.length, "The get index needs to be in       │
00:09:32 verbose #10715 > > │ range."                                                                      │
00:09:32 verbose #10716 > > │         return self.ptr[index]                                               │
00:09:32 verbose #10717 > > │                                                                              │
00:09:32 verbose #10718 > > │     def __setitem__(self, index, value):                                     │
00:09:32 verbose #10719 > > │         assert 0 <= index < self.length, "The set index needs to be in       │
00:09:32 verbose #10720 > > │ range."                                                                      │
00:09:32 verbose #10721 > > │         self.ptr[index] = value                                              │
00:09:32 verbose #10722 > > │                                                                              │
00:09:32 verbose #10723 > > │     def push(self,value):                                                    │
00:09:32 verbose #10724 > > │         assert (self.length < len(self.ptr)), "The length before pushing has │
00:09:32 verbose #10725 > > │ to be less than the maximum length of the array."                            │
00:09:32 verbose #10726 > > │         self.ptr[self.length] = value                                        │
00:09:32 verbose #10727 > > │         self.length += 1                                                     │
00:09:32 verbose #10728 > > │                                                                              │
00:09:32 verbose #10729 > > │     def pop(self):                                                           │
00:09:32 verbose #10730 > > │         assert (0 < self.length), "The length before popping has to be       │
00:09:32 verbose #10731 > > │ greater than 0."                                                             │
00:09:32 verbose #10732 > > │         self.length -= 1                                                     │
00:09:32 verbose #10733 > > │         return self.ptr[self.length]                                         │
00:09:32 verbose #10734 > > │                                                                              │
00:09:32 verbose #10735 > > │     def unsafe_set_length(self,i):                                           │
00:09:32 verbose #10736 > > │         assert 0 <= i <= len(self.ptr), "The new length has to be in range." │
00:09:32 verbose #10737 > > │         self.length = i                                                      │
00:09:32 verbose #10738 > > │                                                                              │
00:09:32 verbose #10739 > > │ class dynamic_array(static_array):                                           │
00:09:32 verbose #10740 > > │     pass                                                                     │
00:09:32 verbose #10741 > > │                                                                              │
00:09:32 verbose #10742 > > │ class dynamic_array_list(static_array_list):                                 │
00:09:32 verbose #10743 > > │     def length_(self): return self.length                                    │
00:09:32 verbose #10744 > > │                                                                              │
00:09:32 verbose #10745 > > │ import cupy as cp                                                            │
00:09:32 verbose #10746 > > │ from dataclasses import dataclass                                            │
00:09:32 verbose #10747 > > │ from typing import NamedTuple, Union, Callable, Tuple                        │
00:09:32 verbose #10748 > > │ i8 = i16 = i32 = i64 = u8 = u16 = u32 = u64 = int; f32 = f64 = float; char = │
00:09:32 verbose #10749 > > │ string = str                                                                 │
00:09:32 verbose #10750 > > │                                                                              │
00:09:32 verbose #10751 > > │ def method1() -> i32:                                                        │
00:09:32 verbose #10752 > > │     return 3                                                                 │
00:09:32 verbose #10753 > > │ def method2(v0 : i32, v1 : i32) -> i32:                                      │
00:09:32 verbose #10754 > > │     v2 = v1 + v0                                                             │
00:09:32 verbose #10755 > > │     del v0, v1                                                               │
00:09:32 verbose #10756 > > │     return v2                                                                │
00:09:32 verbose #10757 > > │ def method3(v0 : bool) -> bool:                                              │
00:09:32 verbose #10758 > > │     return v0                                                                │
00:09:32 verbose #10759 > > │ def method0() -> None:                                                       │
00:09:32 verbose #10760 > > │     v0 = method1()                                                           │
00:09:32 verbose #10761 > > │     v1 = 9                                                                   │
00:09:32 verbose #10762 > > │     v2 = method2(v0, v1)                                                     │
00:09:32 verbose #10763 > > │     del v0, v1                                                               │
00:09:32 verbose #10764 > > │     v3 = v2 + 2                                                              │
00:09:32 verbose #10765 > > │     del v2                                                                   │
00:09:32 verbose #10766 > > │     v4 = v3 + 1                                                              │
00:09:32 verbose #10767 > > │     del v3                                                                   │
00:09:32 verbose #10768 > > │     v5 = v4 == 15                                                            │
00:09:32 verbose #10769 > > │     if v5:                                                                   │
00:09:32 verbose #10770 > > │         v7 = True                                                            │
00:09:32 verbose #10771 > > │     else:                                                                    │
00:09:32 verbose #10772 > > │         v7 = method3(v5)                                                     │
00:09:32 verbose #10773 > > │     del v5                                                                   │
00:09:32 verbose #10774 > > │     v10 = "__assert_eq"                                                      │
00:09:32 verbose #10775 > > │     v11 = f"{v10} / actual: {v4} / expected: {15}"                           │
00:09:32 verbose #10776 > > │     del v4, v10                                                              │
00:09:32 verbose #10777 > > │     print(v11)                                                               │
00:09:32 verbose #10778 > > │     v17 = v7 == False                                                        │
00:09:32 verbose #10779 > > │     del v7                                                                   │
00:09:32 verbose #10780 > > │     if v17:                                                                  │
00:09:32 verbose #10781 > > │         del v17                                                              │
00:09:32 verbose #10782 > > │         raise Exception(v11)                                                 │
00:09:32 verbose #10783 > > │     else:                                                                    │
00:09:32 verbose #10784 > > │         del v11, v17                                                         │
00:09:32 verbose #10785 > > │         return                                                               │
00:09:32 verbose #10786 > > │ def main():                                                                  │
00:09:32 verbose #10787 > > │     return method0()                                                         │
00:09:32 verbose #10788 > > │                                                                              │
00:09:32 verbose #10789 > > │ if __name__ == '__main__': result = main(); None if result is None else      │
00:09:32 verbose #10790 > > │ print(result)                                                                │
00:09:32 verbose #10791 > > │                                                                              │
00:09:32 verbose #10792 > > │ .fsx output:                                                                 │
00:09:32 verbose #10793 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:09:32 verbose #10794 > > │                                                                              │
00:09:32 verbose #10795 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:32 verbose #10796 > >
00:09:32 verbose #10797 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:32 verbose #10798 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:32 verbose #10799 > > │ ### join_body_unit                                                           │
00:09:32 verbose #10800 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:32 verbose #10801 > >
00:09:32 verbose #10802 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:32 verbose #10803 > > inl join_body_unit body d x =
00:09:32 verbose #10804 > >     if var_is d |> not
00:09:32 verbose #10805 > >     then body x
00:09:32 verbose #10806 > >     else
00:09:32 verbose #10807 > >         inl x = dyn x
00:09:32 verbose #10808 > >         join body x
00:09:32 verbose #10809 > >
00:09:32 verbose #10810 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:32 verbose #10811 > > //// test
00:09:32 verbose #10812 > > ///! fsharp
00:09:32 verbose #10813 > > ///! cuda
00:09:32 verbose #10814 > > ///! rust
00:09:32 verbose #10815 > > ///! typescript
00:09:32 verbose #10816 > > ///! python
00:09:32 verbose #10817 > > //// print_code=true
00:09:32 verbose #10818 > >
00:09:32 verbose #10819 > > [[ 5i32; 4; join 3; 2; 1 ]]
00:09:32 verbose #10820 > > |> fold_list (fun acc n => join_body_unit ((+) acc) n n) 0
00:09:32 verbose #10821 > > |> _assert_eq 15
00:09:44 verbose #10822 > >
00:09:44 verbose #10823 > > ╭─[ 11.21s - return value ]────────────────────────────────────────────────────╮
00:09:44 verbose #10824 > > │ .py output (Cuda):                                                           │
00:09:44 verbose #10825 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:09:44 verbose #10826 > > │                                                                              │
00:09:44 verbose #10827 > > │ .rs output:                                                                  │
00:09:44 verbose #10828 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:09:44 verbose #10829 > > │                                                                              │
00:09:44 verbose #10830 > > │ .ts output:                                                                  │
00:09:44 verbose #10831 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:09:44 verbose #10832 > > │                                                                              │
00:09:44 verbose #10833 > > │ .py output:                                                                  │
00:09:44 verbose #10834 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:09:44 verbose #10835 > > │                                                                              │
00:09:44 verbose #10836 > > │                                                                              │
00:09:44 verbose #10837 > > │                                                                              │
00:09:44 verbose #10838 > > │                                                                              │
00:09:44 verbose #10839 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:44 verbose #10840 > >
00:09:44 verbose #10841 > > ╭─[ 11.21s - stdout ]──────────────────────────────────────────────────────────╮
00:09:44 verbose #10842 > > │ .fsx:                                                                        │
00:09:44 verbose #10843 > > │ let rec method1 () : int32 =                                                 │
00:09:44 verbose #10844 > > │     3                                                                        │
00:09:44 verbose #10845 > > │ and method2 (v0 : int32) : int32 =                                           │
00:09:44 verbose #10846 > > │     let v1 : int32 = 9 + v0                                                  │
00:09:44 verbose #10847 > > │     v1                                                                       │
00:09:44 verbose #10848 > > │ and method3 (v0 : bool) : bool =                                             │
00:09:44 verbose #10849 > > │     v0                                                                       │
00:09:44 verbose #10850 > > │ and closure0 (v0 : string) () : unit =                                       │
00:09:44 verbose #10851 > > │     let v1 : (string -> unit) = System.Console.WriteLine                     │
00:09:44 verbose #10852 > > │     v1 v0                                                                    │
00:09:44 verbose #10853 > > │ and method0 () : unit =                                                      │
00:09:44 verbose #10854 > > │     let v0 : int32 = method1()                                               │
00:09:44 verbose #10855 > > │     let v1 : int32 = method2(v0)                                             │
00:09:44 verbose #10856 > > │     let v2 : int32 = v1 + 2                                                  │
00:09:44 verbose #10857 > > │     let v3 : int32 = v2 + 1                                                  │
00:09:44 verbose #10858 > > │     let v4 : bool = v3 = 15                                                  │
00:09:44 verbose #10859 > > │     let v6 : bool =                                                          │
00:09:44 verbose #10860 > > │         if v4 then                                                           │
00:09:44 verbose #10861 > > │             true                                                             │
00:09:44 verbose #10862 > > │         else                                                                 │
00:09:44 verbose #10863 > > │             method3(v4)                                                      │
00:09:44 verbose #10864 > > │     let v7 : string = "__assert_eq"                                          │
00:09:44 verbose #10865 > > │     let v8 : string = $"{v7} / actual: %A{v3} / expected: %A{15}"            │
00:09:44 verbose #10866 > > │     let v11 : unit = ()                                                      │
00:09:44 verbose #10867 > > │     let v12 : (unit -> unit) = closure0(v8)                                  │
00:09:44 verbose #10868 > > │     let v13 : unit = (fun () -> v12 (); v11) ()                              │
00:09:44 verbose #10869 > > │     let v15 : bool = v6 = false                                              │
00:09:44 verbose #10870 > > │     if v15 then                                                              │
00:09:44 verbose #10871 > > │         failwith<unit> v8                                                    │
00:09:44 verbose #10872 > > │ method0()                                                                    │
00:09:44 verbose #10873 > > │                                                                              │
00:09:44 verbose #10874 > > │                                                                              │
00:09:44 verbose #10875 > > │ .rs:                                                                         │
00:09:44 verbose #10876 > > │ #![allow(dead_code)]                                                         │
00:09:44 verbose #10877 > > │ #![allow(non_camel_case_types)]                                              │
00:09:44 verbose #10878 > > │ #![allow(non_snake_case)]                                                    │
00:09:44 verbose #10879 > > │ #![allow(non_upper_case_globals)]                                            │
00:09:44 verbose #10880 > > │ #![allow(unreachable_code)]                                                  │
00:09:44 verbose #10881 > > │ #![allow(unused_attributes)]                                                 │
00:09:44 verbose #10882 > > │ #![allow(unused_imports)]                                                    │
00:09:44 verbose #10883 > > │ #![allow(unused_macros)]                                                     │
00:09:44 verbose #10884 > > │ #![allow(unused_parens)]                                                     │
00:09:44 verbose #10885 > > │ #![allow(unused_variables)]                                                  │
00:09:44 verbose #10886 > > │ mod module_7e2cd9e0 {                                                        │
00:09:44 verbose #10887 > > │     pub mod Spiral_builder {                                                 │
00:09:44 verbose #10888 > > │         use super::*;                                                        │
00:09:44 verbose #10889 > > │         use fable_library_rust::Native_::on_startup;                         │
00:09:44 verbose #10890 > > │         use fable_library_rust::String_::printfn;                            │
00:09:44 verbose #10891 > > │         use fable_library_rust::String_::sprintf;                            │
00:09:44 verbose #10892 > > │         use fable_library_rust::String_::string;                             │
00:09:44 verbose #10893 > > │         pub fn method1() -> i32 {                                            │
00:09:44 verbose #10894 > > │             3_i32                                                            │
00:09:44 verbose #10895 > > │         }                                                                    │
00:09:44 verbose #10896 > > │         pub fn method2(v0: i32) -> i32 {                                     │
00:09:44 verbose #10897 > > │             9_i32 + v0                                                       │
00:09:44 verbose #10898 > > │         }                                                                    │
00:09:44 verbose #10899 > > │         pub fn method3(v0: bool) -> bool {                                   │
00:09:44 verbose #10900 > > │             v0                                                               │
00:09:44 verbose #10901 > > │         }                                                                    │
00:09:44 verbose #10902 > > │         pub fn closure0(v0: string, unitVar: ()) {                           │
00:09:44 verbose #10903 > > │             printfn!("{0}", v0);                                             │
00:09:44 verbose #10904 > > │         }                                                                    │
00:09:44 verbose #10905 > > │         pub fn method0() {                                                   │
00:09:44 verbose #10906 > > │             let v3: i32 = Spiral_builder::method2(Spiral_builder::method1()) │
00:09:44 verbose #10907 > > │ + 2_i32 + 1_i32;                                                             │
00:09:44 verbose #10908 > > │             let v4: bool = v3 == 15_i32;                                     │
00:09:44 verbose #10909 > > │             let v6: bool = if v4 {                                           │
00:09:44 verbose #10910 > > │                 true                                                         │
00:09:44 verbose #10911 > > │             } else {                                                         │
00:09:44 verbose #10912 > > │                 Spiral_builder::method3(v4)                                  │
00:09:44 verbose #10913 > > │             };                                                               │
00:09:44 verbose #10914 > > │             let v8: string = sprintf!(                                       │
00:09:44 verbose #10915 > > │                 "{} / actual: {:?} / expected: {:?}",                        │
00:09:44 verbose #10916 > > │                 string("__assert_eq"),                                       │
00:09:44 verbose #10917 > > │                 v3,                                                          │
00:09:44 verbose #10918 > > │                 15_i32                                                       │
00:09:44 verbose #10919 > > │             );                                                               │
00:09:44 verbose #10920 > > │             let v13: () = {                                                  │
00:09:44 verbose #10921 > > │                 Spiral_builder::closure0(v8.clone(), ());                    │
00:09:44 verbose #10922 > > │                 ()                                                           │
00:09:44 verbose #10923 > > │             };                                                               │
00:09:44 verbose #10924 > > │             if v6 == false {                                                 │
00:09:44 verbose #10925 > > │                 panic!("{}", v8,);                                           │
00:09:44 verbose #10926 > > │             }                                                                │
00:09:44 verbose #10927 > > │         }                                                                    │
00:09:44 verbose #10928 > > │         on_startup!(Spiral_builder::method0());                              │
00:09:44 verbose #10929 > > │     }                                                                        │
00:09:44 verbose #10930 > > │ }                                                                            │
00:09:44 verbose #10931 > > │ pub use module_7e2cd9e0::*;                                                  │
00:09:44 verbose #10932 > > │                                                                              │
00:09:44 verbose #10933 > > │ .ts:                                                                         │
00:09:44 verbose #10934 > > │ import { int32 } from "./fable_modules/fable-library-ts.4.19.3/Int32.js";    │
00:09:44 verbose #10935 > > │ import { interpolate, toText } from                                          │
00:09:44 verbose #10936 > > │ "./fable_modules/fable-library-ts.4.19.3/String.js";                         │
00:09:44 verbose #10937 > > │                                                                              │
00:09:44 verbose #10938 > > │ export function method1(): int32 {                                           │
00:09:44 verbose #10939 > > │     return 3;                                                                │
00:09:44 verbose #10940 > > │ }                                                                            │
00:09:44 verbose #10941 > > │                                                                              │
00:09:44 verbose #10942 > > │ export function method2(v0: int32): int32 {                                  │
00:09:44 verbose #10943 > > │     return 9 + v0;                                                           │
00:09:44 verbose #10944 > > │ }                                                                            │
00:09:44 verbose #10945 > > │                                                                              │
00:09:44 verbose #10946 > > │ export function method3(v0: boolean): boolean {                              │
00:09:44 verbose #10947 > > │     return v0;                                                               │
00:09:44 verbose #10948 > > │ }                                                                            │
00:09:44 verbose #10949 > > │                                                                              │
00:09:44 verbose #10950 > > │ export function closure0(v0: string, unitVar: void): void {                  │
00:09:44 verbose #10951 > > │     console.log(v0);                                                         │
00:09:44 verbose #10952 > > │ }                                                                            │
00:09:44 verbose #10953 > > │                                                                              │
00:09:44 verbose #10954 > > │ export function method0(): void {                                            │
00:09:44 verbose #10955 > > │     const v3: int32 = ((method2(method1()) + 2) + 1) | 0;                    │
00:09:44 verbose #10956 > > │     const v4: boolean = v3 === 15;                                           │
00:09:44 verbose #10957 > > │     const v6: boolean = v4 ? true : method3(v4);                             │
00:09:44 verbose #10958 > > │     const v8: string = toText(interpolate("%P() / actual: %A%P() / expected: │
00:09:44 verbose #10959 > > │ %A%P()", ["__assert_eq", v3, 15]));                                          │
00:09:44 verbose #10960 > > │     let v13: any;                                                            │
00:09:44 verbose #10961 > > │     closure0(v8, undefined);                                                 │
00:09:44 verbose #10962 > > │     v13 = undefined;                                                         │
00:09:44 verbose #10963 > > │     if (v6 === false) {                                                      │
00:09:44 verbose #10964 > > │         throw new Error(v8);                                                 │
00:09:44 verbose #10965 > > │     }                                                                        │
00:09:44 verbose #10966 > > │ }                                                                            │
00:09:44 verbose #10967 > > │                                                                              │
00:09:44 verbose #10968 > > │ method0();                                                                   │
00:09:44 verbose #10969 > > │                                                                              │
00:09:44 verbose #10970 > > │                                                                              │
00:09:44 verbose #10971 > > │ .py:                                                                         │
00:09:44 verbose #10972 > > │ from fable_modules.fable_library.string_ import (to_text, interpolate)       │
00:09:44 verbose #10973 > > │                                                                              │
00:09:44 verbose #10974 > > │ def method1(__unit: None=None) -> int:                                       │
00:09:44 verbose #10975 > > │     return 3                                                                 │
00:09:44 verbose #10976 > > │                                                                              │
00:09:44 verbose #10977 > > │                                                                              │
00:09:44 verbose #10978 > > │ def method2(v0: int) -> int:                                                 │
00:09:44 verbose #10979 > > │     return 9 + v0                                                            │
00:09:44 verbose #10980 > > │                                                                              │
00:09:44 verbose #10981 > > │                                                                              │
00:09:44 verbose #10982 > > │ def method3(v0: bool) -> bool:                                               │
00:09:44 verbose #10983 > > │     return v0                                                                │
00:09:44 verbose #10984 > > │                                                                              │
00:09:44 verbose #10985 > > │                                                                              │
00:09:44 verbose #10986 > > │ def closure0(v0: str, unit_var: None) -> None:                               │
00:09:44 verbose #10987 > > │     print(v0)                                                                │
00:09:44 verbose #10988 > > │                                                                              │
00:09:44 verbose #10989 > > │                                                                              │
00:09:44 verbose #10990 > > │ def method0(__unit: None=None) -> None:                                      │
00:09:44 verbose #10991 > > │     v3: int = ((method2(method1()) + 2) + 1) or 0                            │
00:09:44 verbose #10992 > > │     v4: bool = v3 == 15                                                      │
00:09:44 verbose #10993 > > │     v6: bool = True if v4 else method3(v4)                                   │
00:09:44 verbose #10994 > > │     v8: str = to_text(interpolate("%P() / actual: %A%P() / expected:         │
00:09:44 verbose #10995 > > │ %A%P()", ["__assert_eq", v3, 15]))                                           │
00:09:44 verbose #10996 > > │     v13: None                                                                │
00:09:44 verbose #10997 > > │     closure0(v8, None)                                                       │
00:09:44 verbose #10998 > > │     v13 = None                                                               │
00:09:44 verbose #10999 > > │     if v6 == False:                                                          │
00:09:44 verbose #11000 > > │         raise Exception(v8)                                                  │
00:09:44 verbose #11001 > > │                                                                              │
00:09:44 verbose #11002 > > │                                                                              │
00:09:44 verbose #11003 > > │                                                                              │
00:09:44 verbose #11004 > > │ method0()                                                                    │
00:09:44 verbose #11005 > > │                                                                              │
00:09:44 verbose #11006 > > │                                                                              │
00:09:44 verbose #11007 > > │ .py:                                                                         │
00:09:44 verbose #11008 > > │ kernel = r"""                                                                │
00:09:44 verbose #11009 > > │ """                                                                          │
00:09:44 verbose #11010 > > │ class static_array():                                                        │
00:09:44 verbose #11011 > > │     def __init__(self, length):                                              │
00:09:44 verbose #11012 > > │         self.ptr = []                                                        │
00:09:44 verbose #11013 > > │         for _ in range(length):                                              │
00:09:44 verbose #11014 > > │             self.ptr.append(None)                                            │
00:09:44 verbose #11015 > > │                                                                              │
00:09:44 verbose #11016 > > │     def __getitem__(self, index):                                            │
00:09:44 verbose #11017 > > │         assert 0 <= index < len(self.ptr), "The get index needs to be in     │
00:09:44 verbose #11018 > > │ range."                                                                      │
00:09:44 verbose #11019 > > │         return self.ptr[index]                                               │
00:09:44 verbose #11020 > > │                                                                              │
00:09:44 verbose #11021 > > │     def __setitem__(self, index, value):                                     │
00:09:44 verbose #11022 > > │         assert 0 <= index < len(self.ptr), "The set index needs to be in     │
00:09:44 verbose #11023 > > │ range."                                                                      │
00:09:44 verbose #11024 > > │         self.ptr[index] = value                                              │
00:09:44 verbose #11025 > > │                                                                              │
00:09:44 verbose #11026 > > │ class static_array_list(static_array):                                       │
00:09:44 verbose #11027 > > │     def __init__(self, length):                                              │
00:09:44 verbose #11028 > > │         super().__init__(length)                                             │
00:09:44 verbose #11029 > > │         self.length = 0                                                      │
00:09:44 verbose #11030 > > │                                                                              │
00:09:44 verbose #11031 > > │     def __getitem__(self, index):                                            │
00:09:44 verbose #11032 > > │         assert 0 <= index < self.length, "The get index needs to be in       │
00:09:44 verbose #11033 > > │ range."                                                                      │
00:09:44 verbose #11034 > > │         return self.ptr[index]                                               │
00:09:44 verbose #11035 > > │                                                                              │
00:09:44 verbose #11036 > > │     def __setitem__(self, index, value):                                     │
00:09:44 verbose #11037 > > │         assert 0 <= index < self.length, "The set index needs to be in       │
00:09:44 verbose #11038 > > │ range."                                                                      │
00:09:44 verbose #11039 > > │         self.ptr[index] = value                                              │
00:09:44 verbose #11040 > > │                                                                              │
00:09:44 verbose #11041 > > │     def push(self,value):                                                    │
00:09:44 verbose #11042 > > │         assert (self.length < len(self.ptr)), "The length before pushing has │
00:09:44 verbose #11043 > > │ to be less than the maximum length of the array."                            │
00:09:44 verbose #11044 > > │         self.ptr[self.length] = value                                        │
00:09:44 verbose #11045 > > │         self.length += 1                                                     │
00:09:44 verbose #11046 > > │                                                                              │
00:09:44 verbose #11047 > > │     def pop(self):                                                           │
00:09:44 verbose #11048 > > │         assert (0 < self.length), "The length before popping has to be       │
00:09:44 verbose #11049 > > │ greater than 0."                                                             │
00:09:44 verbose #11050 > > │         self.length -= 1                                                     │
00:09:44 verbose #11051 > > │         return self.ptr[self.length]                                         │
00:09:44 verbose #11052 > > │                                                                              │
00:09:44 verbose #11053 > > │     def unsafe_set_length(self,i):                                           │
00:09:44 verbose #11054 > > │         assert 0 <= i <= len(self.ptr), "The new length has to be in range." │
00:09:44 verbose #11055 > > │         self.length = i                                                      │
00:09:44 verbose #11056 > > │                                                                              │
00:09:44 verbose #11057 > > │ class dynamic_array(static_array):                                           │
00:09:44 verbose #11058 > > │     pass                                                                     │
00:09:44 verbose #11059 > > │                                                                              │
00:09:44 verbose #11060 > > │ class dynamic_array_list(static_array_list):                                 │
00:09:44 verbose #11061 > > │     def length_(self): return self.length                                    │
00:09:44 verbose #11062 > > │                                                                              │
00:09:44 verbose #11063 > > │ import cupy as cp                                                            │
00:09:44 verbose #11064 > > │ from dataclasses import dataclass                                            │
00:09:44 verbose #11065 > > │ from typing import NamedTuple, Union, Callable, Tuple                        │
00:09:44 verbose #11066 > > │ i8 = i16 = i32 = i64 = u8 = u16 = u32 = u64 = int; f32 = f64 = float; char = │
00:09:44 verbose #11067 > > │ string = str                                                                 │
00:09:44 verbose #11068 > > │                                                                              │
00:09:44 verbose #11069 > > │ def method1() -> i32:                                                        │
00:09:44 verbose #11070 > > │     return 3                                                                 │
00:09:44 verbose #11071 > > │ def method2(v0 : i32) -> i32:                                                │
00:09:44 verbose #11072 > > │     v1 = 9 + v0                                                              │
00:09:44 verbose #11073 > > │     del v0                                                                   │
00:09:44 verbose #11074 > > │     return v1                                                                │
00:09:44 verbose #11075 > > │ def method3(v0 : bool) -> bool:                                              │
00:09:44 verbose #11076 > > │     return v0                                                                │
00:09:44 verbose #11077 > > │ def method0() -> None:                                                       │
00:09:44 verbose #11078 > > │     v0 = method1()                                                           │
00:09:44 verbose #11079 > > │     v1 = method2(v0)                                                         │
00:09:44 verbose #11080 > > │     del v0                                                                   │
00:09:44 verbose #11081 > > │     v2 = v1 + 2                                                              │
00:09:44 verbose #11082 > > │     del v1                                                                   │
00:09:44 verbose #11083 > > │     v3 = v2 + 1                                                              │
00:09:44 verbose #11084 > > │     del v2                                                                   │
00:09:44 verbose #11085 > > │     v4 = v3 == 15                                                            │
00:09:44 verbose #11086 > > │     if v4:                                                                   │
00:09:44 verbose #11087 > > │         v6 = True                                                            │
00:09:44 verbose #11088 > > │     else:                                                                    │
00:09:44 verbose #11089 > > │         v6 = method3(v4)                                                     │
00:09:44 verbose #11090 > > │     del v4                                                                   │
00:09:44 verbose #11091 > > │     v9 = "__assert_eq"                                                       │
00:09:44 verbose #11092 > > │     v10 = f"{v9} / actual: {v3} / expected: {15}"                            │
00:09:44 verbose #11093 > > │     del v3, v9                                                               │
00:09:44 verbose #11094 > > │     print(v10)                                                               │
00:09:44 verbose #11095 > > │     v16 = v6 == False                                                        │
00:09:44 verbose #11096 > > │     del v6                                                                   │
00:09:44 verbose #11097 > > │     if v16:                                                                  │
00:09:44 verbose #11098 > > │         del v16                                                              │
00:09:44 verbose #11099 > > │         raise Exception(v10)                                                 │
00:09:44 verbose #11100 > > │     else:                                                                    │
00:09:44 verbose #11101 > > │         del v10, v16                                                         │
00:09:44 verbose #11102 > > │         return                                                               │
00:09:44 verbose #11103 > > │ def main():                                                                  │
00:09:44 verbose #11104 > > │     return method0()                                                         │
00:09:44 verbose #11105 > > │                                                                              │
00:09:44 verbose #11106 > > │ if __name__ == '__main__': result = main(); None if result is None else      │
00:09:44 verbose #11107 > > │ print(result)                                                                │
00:09:44 verbose #11108 > > │                                                                              │
00:09:44 verbose #11109 > > │                                                                              │
00:09:44 verbose #11110 > > │ .py:                                                                         │
00:09:44 verbose #11111 > > │ kernel = r"""                                                                │
00:09:44 verbose #11112 > > │ """                                                                          │
00:09:44 verbose #11113 > > │ class static_array():                                                        │
00:09:44 verbose #11114 > > │     def __init__(self, length):                                              │
00:09:44 verbose #11115 > > │         self.ptr = []                                                        │
00:09:44 verbose #11116 > > │         for _ in range(length):                                              │
00:09:44 verbose #11117 > > │             self.ptr.append(None)                                            │
00:09:44 verbose #11118 > > │                                                                              │
00:09:44 verbose #11119 > > │     def __getitem__(self, index):                                            │
00:09:44 verbose #11120 > > │         assert 0 <= index < len(self.ptr), "The get index needs to be in     │
00:09:44 verbose #11121 > > │ range."                                                                      │
00:09:44 verbose #11122 > > │         return self.ptr[index]                                               │
00:09:44 verbose #11123 > > │                                                                              │
00:09:44 verbose #11124 > > │     def __setitem__(self, index, value):                                     │
00:09:44 verbose #11125 > > │         assert 0 <= index < len(self.ptr), "The set index needs to be in     │
00:09:44 verbose #11126 > > │ range."                                                                      │
00:09:44 verbose #11127 > > │         self.ptr[index] = value                                              │
00:09:44 verbose #11128 > > │                                                                              │
00:09:44 verbose #11129 > > │ class static_array_list(static_array):                                       │
00:09:44 verbose #11130 > > │     def __init__(self, length):                                              │
00:09:44 verbose #11131 > > │         super().__init__(length)                                             │
00:09:44 verbose #11132 > > │         self.length = 0                                                      │
00:09:44 verbose #11133 > > │                                                                              │
00:09:44 verbose #11134 > > │     def __getitem__(self, index):                                            │
00:09:44 verbose #11135 > > │         assert 0 <= index < self.length, "The get index needs to be in       │
00:09:44 verbose #11136 > > │ range."                                                                      │
00:09:44 verbose #11137 > > │         return self.ptr[index]                                               │
00:09:44 verbose #11138 > > │                                                                              │
00:09:44 verbose #11139 > > │     def __setitem__(self, index, value):                                     │
00:09:44 verbose #11140 > > │         assert 0 <= index < self.length, "The set index needs to be in       │
00:09:44 verbose #11141 > > │ range."                                                                      │
00:09:44 verbose #11142 > > │         self.ptr[index] = value                                              │
00:09:44 verbose #11143 > > │                                                                              │
00:09:44 verbose #11144 > > │     def push(self,value):                                                    │
00:09:44 verbose #11145 > > │         assert (self.length < len(self.ptr)), "The length before pushing has │
00:09:44 verbose #11146 > > │ to be less than the maximum length of the array."                            │
00:09:44 verbose #11147 > > │         self.ptr[self.length] = value                                        │
00:09:44 verbose #11148 > > │         self.length += 1                                                     │
00:09:44 verbose #11149 > > │                                                                              │
00:09:44 verbose #11150 > > │     def pop(self):                                                           │
00:09:44 verbose #11151 > > │         assert (0 < self.length), "The length before popping has to be       │
00:09:44 verbose #11152 > > │ greater than 0."                                                             │
00:09:44 verbose #11153 > > │         self.length -= 1                                                     │
00:09:44 verbose #11154 > > │         return self.ptr[self.length]                                         │
00:09:44 verbose #11155 > > │                                                                              │
00:09:44 verbose #11156 > > │     def unsafe_set_length(self,i):                                           │
00:09:44 verbose #11157 > > │         assert 0 <= i <= len(self.ptr), "The new length has to be in range." │
00:09:44 verbose #11158 > > │         self.length = i                                                      │
00:09:44 verbose #11159 > > │                                                                              │
00:09:44 verbose #11160 > > │ class dynamic_array(static_array):                                           │
00:09:44 verbose #11161 > > │     pass                                                                     │
00:09:44 verbose #11162 > > │                                                                              │
00:09:44 verbose #11163 > > │ class dynamic_array_list(static_array_list):                                 │
00:09:44 verbose #11164 > > │     def length_(self): return self.length                                    │
00:09:44 verbose #11165 > > │                                                                              │
00:09:44 verbose #11166 > > │ import cupy as cp                                                            │
00:09:44 verbose #11167 > > │ from dataclasses import dataclass                                            │
00:09:44 verbose #11168 > > │ from typing import NamedTuple, Union, Callable, Tuple                        │
00:09:44 verbose #11169 > > │ i8 = i16 = i32 = i64 = u8 = u16 = u32 = u64 = int; f32 = f64 = float; char = │
00:09:44 verbose #11170 > > │ string = str                                                                 │
00:09:44 verbose #11171 > > │                                                                              │
00:09:44 verbose #11172 > > │ def method1() -> i32:                                                        │
00:09:44 verbose #11173 > > │     return 3                                                                 │
00:09:44 verbose #11174 > > │ def method2(v0 : i32) -> i32:                                                │
00:09:44 verbose #11175 > > │     v1 = 9 + v0                                                              │
00:09:44 verbose #11176 > > │     del v0                                                                   │
00:09:44 verbose #11177 > > │     return v1                                                                │
00:09:44 verbose #11178 > > │ def method3(v0 : bool) -> bool:                                              │
00:09:44 verbose #11179 > > │     return v0                                                                │
00:09:44 verbose #11180 > > │ def method0() -> None:                                                       │
00:09:44 verbose #11181 > > │     v0 = method1()                                                           │
00:09:44 verbose #11182 > > │     v1 = method2(v0)                                                         │
00:09:44 verbose #11183 > > │     del v0                                                                   │
00:09:44 verbose #11184 > > │     v2 = v1 + 2                                                              │
00:09:44 verbose #11185 > > │     del v1                                                                   │
00:09:44 verbose #11186 > > │     v3 = v2 + 1                                                              │
00:09:44 verbose #11187 > > │     del v2                                                                   │
00:09:44 verbose #11188 > > │     v4 = v3 == 15                                                            │
00:09:44 verbose #11189 > > │     if v4:                                                                   │
00:09:44 verbose #11190 > > │         v6 = True                                                            │
00:09:44 verbose #11191 > > │     else:                                                                    │
00:09:44 verbose #11192 > > │         v6 = method3(v4)                                                     │
00:09:44 verbose #11193 > > │     del v4                                                                   │
00:09:44 verbose #11194 > > │     v9 = "__assert_eq"                                                       │
00:09:44 verbose #11195 > > │     v10 = f"{v9} / actual: {v3} / expected: {15}"                            │
00:09:44 verbose #11196 > > │     del v3, v9                                                               │
00:09:44 verbose #11197 > > │     print(v10)                                                               │
00:09:44 verbose #11198 > > │     v16 = v6 == False                                                        │
00:09:44 verbose #11199 > > │     del v6                                                                   │
00:09:44 verbose #11200 > > │     if v16:                                                                  │
00:09:44 verbose #11201 > > │         del v16                                                              │
00:09:44 verbose #11202 > > │         raise Exception(v10)                                                 │
00:09:44 verbose #11203 > > │     else:                                                                    │
00:09:44 verbose #11204 > > │         del v10, v16                                                         │
00:09:44 verbose #11205 > > │         return                                                               │
00:09:44 verbose #11206 > > │ def main():                                                                  │
00:09:44 verbose #11207 > > │     return method0()                                                         │
00:09:44 verbose #11208 > > │                                                                              │
00:09:44 verbose #11209 > > │ if __name__ == '__main__': result = main(); None if result is None else      │
00:09:44 verbose #11210 > > │ print(result)                                                                │
00:09:44 verbose #11211 > > │                                                                              │
00:09:44 verbose #11212 > > │ .fsx output:                                                                 │
00:09:44 verbose #11213 > > │ __assert_eq / actual: 15 / expected: 15                                      │
00:09:44 verbose #11214 > > │                                                                              │
00:09:44 verbose #11215 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:44 verbose #11216 > >
00:09:44 verbose #11217 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:44 verbose #11218 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:44 verbose #11219 > > │ ### retry_fn'                                                                │
00:09:44 verbose #11220 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:44 verbose #11221 > >
00:09:44 verbose #11222 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:44 verbose #11223 > > inl retry_fn' retries fn =
00:09:44 verbose #11224 > >     let rec loop retry =
00:09:44 verbose #11225 > >         inl is_error, result =
00:09:44 verbose #11226 > >             match fn () with
00:09:44 verbose #11227 > >             | Ok x => false, x
00:09:44 verbose #11228 > >             | Error x => true, x
00:09:44 verbose #11229 > >         if not is_error || retry >= retries
00:09:44 verbose #11230 > >         then result
00:09:44 verbose #11231 > >         else
00:09:44 verbose #11232 > >             trace Debug
00:09:44 verbose #11233 > >                 fun () => $'"common.retry_fn\' / loop"'
00:09:44 verbose #11234 > >                 fun () => { is_error retry = $'$"{!retry}/{!retries}"' : string;
00:09:44 verbose #11235 > > result }
00:09:44 verbose #11236 > >             loop (retry + 1)
00:09:44 verbose #11237 > >     loop 1
00:09:44 verbose #11238 > >
00:09:44 verbose #11239 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:44 verbose #11240 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:44 verbose #11241 > > │ ## fsharp                                                                    │
00:09:44 verbose #11242 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:44 verbose #11243 > >
00:09:44 verbose #11244 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:44 verbose #11245 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:44 verbose #11246 > > │ ### upcast                                                                   │
00:09:44 verbose #11247 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:44 verbose #11248 > >
00:09:44 verbose #11249 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:44 verbose #11250 > > inl upcast forall t u. (x : t) : u =
00:09:44 verbose #11251 > >     $'!x :> `u '
00:09:44 verbose #11252 > >
00:09:44 verbose #11253 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:44 verbose #11254 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:44 verbose #11255 > > │ ### downcast                                                                 │
00:09:44 verbose #11256 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:44 verbose #11257 > >
00:09:44 verbose #11258 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:44 verbose #11259 > > inl downcast forall t u. (x : t) : u =
00:09:44 verbose #11260 > >     $'!x :?> `u '
00:09:44 verbose #11261 > >
00:09:44 verbose #11262 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:44 verbose #11263 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:44 verbose #11264 > > │ ### random                                                                   │
00:09:44 verbose #11265 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:44 verbose #11266 > >
00:09:44 verbose #11267 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:44 verbose #11268 > > nominal random = $'System.Random'
00:09:44 verbose #11269 > >
00:09:44 verbose #11270 > > inl random () : random =
00:09:44 verbose #11271 > >     $'`random ' ()
00:09:44 verbose #11272 > >
00:09:44 verbose #11273 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:44 verbose #11274 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:44 verbose #11275 > > │ ### random_next                                                              │
00:09:44 verbose #11276 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:44 verbose #11277 > >
00:09:44 verbose #11278 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:44 verbose #11279 > > inl random_next (min : i32) (max : i32) (random : random) : i32 =
00:09:44 verbose #11280 > >     $'!random.Next (!min, !max)'
00:09:44 verbose #11281 > >
00:09:44 verbose #11282 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:44 verbose #11283 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:44 verbose #11284 > > │ ### disposable                                                               │
00:09:44 verbose #11285 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:44 verbose #11286 > >
00:09:44 verbose #11287 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:44 verbose #11288 > > nominal disposable t = $"backend_switch `({ Fsharp : $'System.IDisposable';
00:09:44 verbose #11289 > > Python : $'object' })"
00:09:44 verbose #11290 > >
00:09:44 verbose #11291 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:44 verbose #11292 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:44 verbose #11293 > > │ ### dispose                                                                  │
00:09:44 verbose #11294 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:44 verbose #11295 > >
00:09:44 verbose #11296 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:44 verbose #11297 > > inl dispose (disposable : disposable _) : () =
00:09:44 verbose #11298 > >     backend_switch {
00:09:44 verbose #11299 > >         Fsharp = fun () => disposable |> $'_.Dispose()' : ()
00:09:44 verbose #11300 > >         Python = fun () => $'!disposable.__exit__(None, None, None)' : ()
00:09:44 verbose #11301 > >     }
00:09:44 verbose #11302 > >
00:09:44 verbose #11303 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:44 verbose #11304 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:44 verbose #11305 > > │ ### return                                                                   │
00:09:44 verbose #11306 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:44 verbose #11307 > >
00:09:44 verbose #11308 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:44 verbose #11309 > > inl return forall t. (x : t) : () =
00:09:44 verbose #11310 > >     $'return !x '
00:09:44 verbose #11311 > >
00:09:44 verbose #11312 > > inl return' forall t. (x : t) : t =
00:09:44 verbose #11313 > >     $'return !x '
00:09:44 verbose #11314 > >
00:09:44 verbose #11315 > > ── markdown ────────────────────────────────────────────────────────────────────
00:09:44 verbose #11316 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:09:44 verbose #11317 > > │ ### retry_fn                                                                 │
00:09:44 verbose #11318 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:44 verbose #11319 > >
00:09:44 verbose #11320 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:44 verbose #11321 > > inl retry_fn forall t. retries (fn : () -> t) : option t =
00:09:44 verbose #11322 > >     let rec loop retry =
00:09:44 verbose #11323 > >         try
00:09:44 verbose #11324 > >             fun () =>
00:09:44 verbose #11325 > >                 if retry < retries
00:09:44 verbose #11326 > >                 then fn () |> Some
00:09:44 verbose #11327 > >                 else None
00:09:44 verbose #11328 > >             fun ex =>
00:09:44 verbose #11329 > >                 trace Warning
00:09:44 verbose #11330 > >                     fun () => "common.retry_fn"
00:09:44 verbose #11331 > >                     fun () => { retry ex }
00:09:44 verbose #11332 > >                 None
00:09:44 verbose #11333 > >         |> function
00:09:44 verbose #11334 > >             | Some x => x
00:09:44 verbose #11335 > >             | None => loop (retry + 1)
00:09:44 verbose #11336 > >     loop 0
00:09:44 verbose #11337 > >
00:09:44 verbose #11338 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:44 verbose #11339 > > //// test
00:09:44 verbose #11340 > > ///! fsharp
00:09:44 verbose #11341 > > ////! cuda // v3 = $"retry: {v0} / ex: %A{v1} / {v2 ()}"
00:09:44 verbose #11342 > > ///! rust
00:09:44 verbose #11343 > > ///! typescript
00:09:44 verbose #11344 > > ///! python
00:09:44 verbose #11345 > >
00:09:44 verbose #11346 > > inl retry_fn_test = mut 0i32
00:09:44 verbose #11347 > > fun () =>
00:09:44 verbose #11348 > >     retry_fn_test <- *retry_fn_test + 1
00:09:44 verbose #11349 > >     *retry_fn_test
00:09:44 verbose #11350 > > |> retry_fn 3i32
00:09:44 verbose #11351 > > |> _assert_eq' (Some 1i32)
00:09:57 verbose #11352 > >
00:09:57 verbose #11353 > > ╭─[ 13.03s - return value ]────────────────────────────────────────────────────╮
00:09:57 verbose #11354 > > │ .rs output:                                                                  │
00:09:57 verbose #11355 > > │ __assert_eq' / actual: US0_0(1) / expected: US0_0(1)                         │
00:09:57 verbose #11356 > > │                                                                              │
00:09:57 verbose #11357 > > │ .ts output:                                                                  │
00:09:57 verbose #11358 > > │ __assert_eq' / actual: US0_0 1 / expected: US0_0 1                           │
00:09:57 verbose #11359 > > │                                                                              │
00:09:57 verbose #11360 > > │ .py output:                                                                  │
00:09:57 verbose #11361 > > │ __assert_eq' / actual: US0_0 1 / expected: US0_0 1                           │
00:09:57 verbose #11362 > > │                                                                              │
00:09:57 verbose #11363 > > │                                                                              │
00:09:57 verbose #11364 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:57 verbose #11365 > >
00:09:57 verbose #11366 > > ╭─[ 13.03s - stdout ]──────────────────────────────────────────────────────────╮
00:09:57 verbose #11367 > > │ .fsx output:                                                                 │
00:09:57 verbose #11368 > > │ __assert_eq' / actual: US0_0 1 / expected: US0_0 1                           │
00:09:57 verbose #11369 > > │                                                                              │
00:09:57 verbose #11370 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:09:57 verbose #11371 > >
00:09:57 verbose #11372 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:09:57 verbose #11373 > > //// test
00:09:57 verbose #11374 > > ///! fsharp
00:09:57 verbose #11375 > > ////! cuda // v3 = $"retry: {v0} / ex: %A{v1} / {v2 ()}"
00:09:57 verbose #11376 > > ///! rust
00:09:57 verbose #11377 > > ///! typescript
00:09:57 verbose #11378 > > ///! python
00:09:57 verbose #11379 > >
00:09:57 verbose #11380 > > inl retry_fn_test = mut 0i32
00:09:57 verbose #11381 > > fun () =>
00:09:57 verbose #11382 > >     if *retry_fn_test >= 2
00:09:57 verbose #11383 > >     then *retry_fn_test
00:09:57 verbose #11384 > >     else
00:09:57 verbose #11385 > >         retry_fn_test <- *retry_fn_test + 1
00:09:57 verbose #11386 > >         failwith "test"
00:09:57 verbose #11387 > > |> retry_fn 3i32
00:09:57 verbose #11388 > > |> _assert_eq' (Some 2i32)
00:10:10 verbose #11389 > >
00:10:10 verbose #11390 > > ╭─[ 12.61s - return value ]────────────────────────────────────────────────────╮
00:10:10 verbose #11391 > > │                                                                              │
00:10:10 verbose #11392 > > │ .rs output:                                                                  │
00:10:10 verbose #11393 > > │ 00:00:00 warning #1 common.retry_fn / { retry = 0; ex = Exception {    │
00:10:10 verbose #11394 > > │     message: "test",                                                         │
00:10:10 verbose #11395 > > │ } }                                                                          │
00:10:10 verbose #11396 > > │ 00:00:00 warning #2 common.retry_fn / { retry = 1; ex = Exception {    │
00:10:10 verbose #11397 > > │     message: "test",                                                         │
00:10:10 verbose #11398 > > │ } }                                                                          │
00:10:10 verbose #11399 > > │ __assert_eq' / actual: US0_0(2) / expected: US0_0(2)                         │
00:10:10 verbose #11400 > > │                                                                              │
00:10:10 verbose #11401 > > │                                                                              │
00:10:10 verbose #11402 > > │ .ts output:                                                                  │
00:10:10 verbose #11403 > > │ 00:00:00 warning #1 common.retry_fn / { retry = 0; ex = Error: test }   │
00:10:10 verbose #11404 > > │ 00:00:00 warning #2 common.retry_fn / { retry = 1; ex = Error: test }   │
00:10:10 verbose #11405 > > │ __assert_eq' / actual: US0_0 2 / expected: US0_0 2                           │
00:10:10 verbose #11406 > > │                                                                              │
00:10:10 verbose #11407 > > │                                                                              │
00:10:10 verbose #11408 > > │ .py output:                                                                  │
00:10:10 verbose #11409 > > │ 00:00:00 warning #1 common.retry_fn / { retry = 0; ex = test }          │
00:10:10 verbose #11410 > > │ 00:00:00 warning #2 common.retry_fn / { retry = 1; ex = test }          │
00:10:10 verbose #11411 > > │ __assert_eq' / actual: US0_0 2 / expected: US0_0 2                           │
00:10:10 verbose #11412 > > │                                                                              │
00:10:10 verbose #11413 > > │                                                                              │
00:10:10 verbose #11414 > > │                                                                              │
00:10:10 verbose #11415 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:10 verbose #11416 > >
00:10:10 verbose #11417 > > ╭─[ 12.61s - stdout ]──────────────────────────────────────────────────────────╮
00:10:10 verbose #11418 > > │ .fsx output:                                                                 │
00:10:10 verbose #11419 > > │ 00:00:00 warning #1 common.retry_fn / { retry = 0; ex =                 │
00:10:10 verbose #11420 > > │ System.Exception: test                                                       │
00:10:10 verbose #11421 > > │    at FSI_0031.closure1(Mut0 v0, Int32 v1, Unit unitVar2)                    │
00:10:10 verbose #11422 > > │    at FSI_0031.method1(Mut0 v0, Int32 v1) }                                  │
00:10:10 verbose #11423 > > │ 00:00:00 warning #2 common.retry_fn / { retry = 1; ex =                 │
00:10:10 verbose #11424 > > │ System.Exception: test                                                       │
00:10:10 verbose #11425 > > │    at FSI_0031.closure1(Mut0 v0, Int32 v1, Unit unitVar2)                    │
00:10:10 verbose #11426 > > │    at FSI_0031.method1(Mut0 v0, Int32 v1) }                                  │
00:10:10 verbose #11427 > > │ __assert_eq' / actual: US0_0 2 / expected: US0_0 2                           │
00:10:10 verbose #11428 > > │                                                                              │
00:10:10 verbose #11429 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:10 verbose #11430 > >
00:10:10 verbose #11431 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:10 verbose #11432 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:10 verbose #11433 > > │ ## common                                                                    │
00:10:10 verbose #11434 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:10 verbose #11435 > >
00:10:10 verbose #11436 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:10 verbose #11437 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:10 verbose #11438 > > │ ### random'                                                                  │
00:10:10 verbose #11439 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:10 verbose #11440 > >
00:10:10 verbose #11441 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:10 verbose #11442 > > inl random' forall t. (min : t) (max : t) : t =
00:10:10 verbose #11443 > >     run_target function
00:10:10 verbose #11444 > >         | Rust (Contract) => fun () =>
00:10:10 verbose #11445 > >             failwith "common.random' / target=Rust(Contract)"
00:10:10 verbose #11446 > >         | Rust _ => fun () =>
00:10:10 verbose #11447 > >             open rust.rust_operators
00:10:10 verbose #11448 > >             !\\((min, max), $'"rand::Rng::gen_range(&mut rand::thread_rng(),
00:10:10 verbose #11449 > > $0..$1)"')
00:10:10 verbose #11450 > >         | _ => fun () =>
00:10:10 verbose #11451 > >             random () |> random_next (i32 min) (i32 max) |> convert
00:10:10 verbose #11452 > >
00:10:10 verbose #11453 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:10 verbose #11454 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:10 verbose #11455 > > │ ### new_disposable                                                           │
00:10:10 verbose #11456 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:10 verbose #11457 > >
00:10:10 verbose #11458 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:10 verbose #11459 > > inl new_disposable (fn : () -> ()) : disposable _ =
00:10:10 verbose #11460 > >     run_target function
00:10:10 verbose #11461 > >         | Rust _ => fun () =>
00:10:10 verbose #11462 > >             global "type Disposable (f : unit -> unit) = interface
00:10:10 verbose #11463 > > System.IDisposable with member _.Dispose () = f ()"
00:10:10 verbose #11464 > >             inl fn = join fn
00:10:10 verbose #11465 > >             $'new Disposable (fun () -> Fable.Core.RustInterop.emitRustExpr !fn
00:10:10 verbose #11466 > > "$0()" )'
00:10:10 verbose #11467 > >         | Fsharp _ | TypeScript _ | Python _ => fun () =>
00:10:10 verbose #11468 > >             inl fn = join fn
00:10:10 verbose #11469 > >             $'{ new System.IDisposable with member _.Dispose () = !fn () }'
00:10:10 verbose #11470 > >         | Cuda _ => fun () =>
00:10:10 verbose #11471 > >             $'class Disposable:'
00:10:10 verbose #11472 > >             $'    def __init__(self, fn):'
00:10:10 verbose #11473 > >             $'        self.fn = fn'
00:10:10 verbose #11474 > >             $'    def __exit__(self, exc_type, exc_value, traceback):'
00:10:10 verbose #11475 > >             $'        self.fn()'
00:10:10 verbose #11476 > >             $'        return False'
00:10:10 verbose #11477 > >             $'Disposable(!fn)'
00:10:10 verbose #11478 > >         | _ => fun () => null ()
00:10:10 verbose #11479 > >
00:10:10 verbose #11480 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:10 verbose #11481 > > //// test
00:10:10 verbose #11482 > > ///! fsharp
00:10:10 verbose #11483 > > ///! cuda
00:10:10 verbose #11484 > > ///! rust
00:10:10 verbose #11485 > > ///! typescript
00:10:10 verbose #11486 > > ///! python
00:10:10 verbose #11487 > >
00:10:10 verbose #11488 > > inl new_disposable_test = mut 0i32
00:10:10 verbose #11489 > > new_disposable fun () => new_disposable_test <- *new_disposable_test + 1
00:10:10 verbose #11490 > > |> fun x => x : disposable ()
00:10:10 verbose #11491 > > |> dispose
00:10:10 verbose #11492 > > *new_disposable_test |> _assert_eq 1
00:10:22 verbose #11493 > >
00:10:22 verbose #11494 > > ╭─[ 11.74s - return value ]────────────────────────────────────────────────────╮
00:10:22 verbose #11495 > > │ .py output (Cuda):                                                           │
00:10:22 verbose #11496 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:10:22 verbose #11497 > > │                                                                              │
00:10:22 verbose #11498 > > │ .rs output:                                                                  │
00:10:22 verbose #11499 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:10:22 verbose #11500 > > │                                                                              │
00:10:22 verbose #11501 > > │ .ts output:                                                                  │
00:10:22 verbose #11502 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:10:22 verbose #11503 > > │                                                                              │
00:10:22 verbose #11504 > > │ .py output:                                                                  │
00:10:22 verbose #11505 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:10:22 verbose #11506 > > │                                                                              │
00:10:22 verbose #11507 > > │                                                                              │
00:10:22 verbose #11508 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:22 verbose #11509 > >
00:10:22 verbose #11510 > > ╭─[ 11.74s - stdout ]──────────────────────────────────────────────────────────╮
00:10:22 verbose #11511 > > │ .fsx output:                                                                 │
00:10:22 verbose #11512 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:10:22 verbose #11513 > > │                                                                              │
00:10:22 verbose #11514 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:22 verbose #11515 > >
00:10:22 verbose #11516 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:22 verbose #11517 > > //// test
00:10:22 verbose #11518 > >
00:10:22 verbose #11519 > > inl new_disposable_test = mut 0i32
00:10:22 verbose #11520 > > fun () =>
00:10:22 verbose #11521 > >     new_disposable fun () => new_disposable_test <- *new_disposable_test + 1
00:10:22 verbose #11522 > >     |> fun x => x : disposable ()
00:10:22 verbose #11523 > >     |> use
00:10:22 verbose #11524 > >     |> ignore
00:10:22 verbose #11525 > >     |> return
00:10:22 verbose #11526 > > |> async.new_task
00:10:22 verbose #11527 > > |> async.await_task
00:10:22 verbose #11528 > > |> async.run_synchronously
00:10:22 verbose #11529 > > *new_disposable_test |> _assert_eq 1
00:10:22 verbose #11530 > >
00:10:22 verbose #11531 > > ╭─[ 171.12ms - stdout ]────────────────────────────────────────────────────────╮
00:10:22 verbose #11532 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:10:22 verbose #11533 > > │                                                                              │
00:10:22 verbose #11534 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:22 verbose #11535 > >
00:10:22 verbose #11536 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:22 verbose #11537 > > //// test
00:10:22 verbose #11538 > >
00:10:22 verbose #11539 > > inl new_disposable_test = mut 0i32
00:10:22 verbose #11540 > > fun () =>
00:10:22 verbose #11541 > >     new_disposable fun () => new_disposable_test <- *new_disposable_test + 1
00:10:22 verbose #11542 > >     |> fun x => x : disposable ()
00:10:22 verbose #11543 > >     |> use
00:10:22 verbose #11544 > >     |> ignore
00:10:22 verbose #11545 > >     |> return
00:10:22 verbose #11546 > > |> async.new_async
00:10:22 verbose #11547 > > |> async.run_synchronously
00:10:22 verbose #11548 > > *new_disposable_test |> _assert_eq 1
00:10:22 verbose #11549 > >
00:10:22 verbose #11550 > > ╭─[ 112.68ms - stdout ]────────────────────────────────────────────────────────╮
00:10:22 verbose #11551 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:10:22 verbose #11552 > > │                                                                              │
00:10:22 verbose #11553 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:22 verbose #11554 > >
00:10:22 verbose #11555 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:22 verbose #11556 > > //// test
00:10:22 verbose #11557 > >
00:10:22 verbose #11558 > > inl new_disposable_test = mut 0i32
00:10:22 verbose #11559 > > fun () =>
00:10:22 verbose #11560 > >     new_disposable fun () => new_disposable_test <- *new_disposable_test + 1
00:10:22 verbose #11561 > >     |> fun x => x : disposable ()
00:10:22 verbose #11562 > >     |> ignore
00:10:22 verbose #11563 > >     |> return
00:10:22 verbose #11564 > > |> async.new_async
00:10:22 verbose #11565 > > |> async.run_synchronously
00:10:22 verbose #11566 > > *new_disposable_test |> _assert_eq 0
00:10:22 verbose #11567 > >
00:10:22 verbose #11568 > > ╭─[ 150.77ms - stdout ]────────────────────────────────────────────────────────╮
00:10:22 verbose #11569 > > │ __assert_eq / actual: 0 / expected: 0                                        │
00:10:22 verbose #11570 > > │                                                                              │
00:10:22 verbose #11571 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:22 verbose #11572 > >
00:10:22 verbose #11573 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:22 verbose #11574 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:22 verbose #11575 > > │ ## main                                                                      │
00:10:22 verbose #11576 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:22 verbose #11577 > >
00:10:22 verbose #11578 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:22 verbose #11579 > > inl main () =
00:10:22 verbose #11580 > >     init_trace_state None
00:10:22 verbose #11581 > >     inl new_disposable x : _ () = new_disposable x
00:10:22 verbose #11582 > >     $'let new_disposable x = !new_disposable x' : ()
00:10:22 verbose #11583 > >     inl retry_fn (r : i32) (x : () -> _) : optionm'.option' () = retry_fn r x |>
00:10:22 verbose #11584 > > optionm'.box
00:10:22 verbose #11585 > >     $'let retry_fn x = !retry_fn x' : ()
00:10:22 verbose #11586 > >     inl memoize (fn : () -> ()) : () -> () = memoize fn
00:10:22 verbose #11587 > >     $'let memoize x = !memoize x' : ()
00:10:23 verbose #11588 > 00:01:38 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 154954 }
00:10:23 verbose #11589 > 00:01:38   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:10:23 verbose #11590 >     "nbconvert",
00:10:23 verbose #11591 >     "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb",
00:10:23 verbose #11592 >     "--to",
00:10:23 verbose #11593 >     "html",
00:10:23 verbose #11594 >     "--HTMLExporter.theme=dark",
00:10:23 verbose #11595 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:10:23 verbose #11596 > 00:01:38 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb to html
00:10:23 verbose #11597 > 00:01:38 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:10:23 verbose #11598 > 00:01:38 verbose #7 !   validate(nb)
00:10:24 verbose #11599 > 00:01:39 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:10:24 verbose #11600 > 00:01:39 verbose #9 !   return _pygments_highlight(
00:10:24 verbose #11601 > 00:01:39 verbose #10 ! [NbConvertApp] Writing 365843 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/common.dib.html
00:10:24 verbose #11602 > 00:01:39 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 }
00:10:24 verbose #11603 > 00:01:39   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 }
00:10:24 verbose #11604 > 00:01:39   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:10:24 verbose #11605 >     "-c",
00:10:24 verbose #11606 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:10:24 verbose #11607 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:10:24 verbose #11608 > 00:01:40 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:10:24 verbose #11609 > 00:01:40   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:10:24 verbose #11610 > 00:01:40   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 155909 }
00:10:24   debug #11611 runtime.execute_with_options_async / { exit_code = 0; output_length = 162199 }
00:10:24   debug #12 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path common.dib --retries 3
00:10:24   debug #11612 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path resultm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:10:24 verbose #11613 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "resultm.dib", "--retries", "3"])) }
00:10:24 verbose #11614 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:10:24 verbose #11615 >     "repl",
00:10:24 verbose #11616 >     "--exit-after-run",
00:10:24 verbose #11617 >     "--run",
00:10:24 verbose #11618 >     "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib",
00:10:24 verbose #11619 >     "--output-path",
00:10:24 verbose #11620 >     "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb",
00:10:24 verbose #11621 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:10:26 verbose #11622 > >
00:10:26 verbose #11623 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:26 verbose #11624 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:26 verbose #11625 > > │ # resultm                                                                    │
00:10:26 verbose #11626 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:28 verbose #11627 > >
00:10:28 verbose #11628 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:28 verbose #11629 > > open rust
00:10:28 verbose #11630 > > open rust_operators
00:10:29 verbose #11631 > >
00:10:29 verbose #11632 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:29 verbose #11633 > > //// test
00:10:29 verbose #11634 > >
00:10:29 verbose #11635 > > open testing
00:10:29 verbose #11636 > >
00:10:29 verbose #11637 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:29 verbose #11638 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:29 verbose #11639 > > │ ## resultm                                                                   │
00:10:29 verbose #11640 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:29 verbose #11641 > >
00:10:29 verbose #11642 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:29 verbose #11643 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:29 verbose #11644 > > │ ### from_option_error                                                        │
00:10:29 verbose #11645 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:29 verbose #11646 > >
00:10:29 verbose #11647 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:29 verbose #11648 > > inl from_option_error error opt =
00:10:29 verbose #11649 > >     match opt with
00:10:29 verbose #11650 > >     | Some x => Ok x
00:10:29 verbose #11651 > >     | None => Error error
00:10:29 verbose #11652 > >
00:10:29 verbose #11653 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:29 verbose #11654 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:29 verbose #11655 > > │ ### from_option                                                              │
00:10:29 verbose #11656 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:29 verbose #11657 > >
00:10:29 verbose #11658 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:29 verbose #11659 > > inl from_option opt =
00:10:29 verbose #11660 > >     opt |> from_option_error "resultm.from_option / Option does not have a
00:10:29 verbose #11661 > > value."
00:10:29 verbose #11662 > >
00:10:29 verbose #11663 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:29 verbose #11664 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:29 verbose #11665 > > │ ### flatten_option                                                           │
00:10:29 verbose #11666 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:29 verbose #11667 > >
00:10:29 verbose #11668 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:29 verbose #11669 > > inl flatten_option forall t u. (x : option (result (option t) u)) : result
00:10:29 verbose #11670 > > (option t) u =
00:10:29 verbose #11671 > >     match x with
00:10:29 verbose #11672 > >     | Some (Error x) => Error x
00:10:29 verbose #11673 > >     | Some (Ok (Some x)) => Ok (Some x)
00:10:29 verbose #11674 > >     | _ => Ok None
00:10:29 verbose #11675 > >
00:10:29 verbose #11676 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:29 verbose #11677 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:29 verbose #11678 > > │ ### flatten                                                                  │
00:10:29 verbose #11679 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:29 verbose #11680 > >
00:10:29 verbose #11681 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:29 verbose #11682 > > inl flatten forall t u. (x : result (result t u) u) : result t u =
00:10:29 verbose #11683 > >     match x with
00:10:29 verbose #11684 > >     | Ok x => x
00:10:29 verbose #11685 > >     | Error x => Error x
00:10:29 verbose #11686 > >
00:10:29 verbose #11687 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:29 verbose #11688 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:29 verbose #11689 > > │ ### get                                                                      │
00:10:29 verbose #11690 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:29 verbose #11691 > >
00:10:29 verbose #11692 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:29 verbose #11693 > > inl get forall t e. (source : result t e) : t =
00:10:29 verbose #11694 > >     match source with
00:10:29 verbose #11695 > >     | Ok x => x
00:10:29 verbose #11696 > >     | Error x => failwith $'$"resultm.get / Result value was Error: {!x}"'
00:10:30 verbose #11697 > >
00:10:30 verbose #11698 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:30 verbose #11699 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:30 verbose #11700 > > │ ### map                                                                      │
00:10:30 verbose #11701 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:30 verbose #11702 > >
00:10:30 verbose #11703 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:30 verbose #11704 > > inl map forall t e u. (fn : t -> u) (source : result t e) : result u e =
00:10:30 verbose #11705 > >     match source with
00:10:30 verbose #11706 > >     | Ok x => x |> fn |> Ok
00:10:30 verbose #11707 > >     | Error x => Error x
00:10:30 verbose #11708 > >
00:10:30 verbose #11709 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:30 verbose #11710 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:30 verbose #11711 > > │ ### map_error                                                                │
00:10:30 verbose #11712 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:30 verbose #11713 > >
00:10:30 verbose #11714 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:30 verbose #11715 > > inl map_error forall t e u. (fn : e -> u) (source : result t e) : result t u =
00:10:30 verbose #11716 > >     match source with
00:10:30 verbose #11717 > >     | Ok x => Ok x
00:10:30 verbose #11718 > >     | Error x => x |> fn |> Error
00:10:30 verbose #11719 > >
00:10:30 verbose #11720 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:30 verbose #11721 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:30 verbose #11722 > > │ ### unwrap_err                                                               │
00:10:30 verbose #11723 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:30 verbose #11724 > >
00:10:30 verbose #11725 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:30 verbose #11726 > > inl unwrap_err forall t u. (x : result t u) : u =
00:10:30 verbose #11727 > >     match x with
00:10:30 verbose #11728 > >     | Ok x => failwith $'$"resultm.unwrap_err / x: {!x}"'
00:10:30 verbose #11729 > >     | Error x => x
00:10:30 verbose #11730 > >
00:10:30 verbose #11731 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:30 verbose #11732 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:30 verbose #11733 > > │ ### ok                                                                       │
00:10:30 verbose #11734 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:30 verbose #11735 > >
00:10:30 verbose #11736 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:30 verbose #11737 > > inl ok forall t. (x : result t _) : option t =
00:10:30 verbose #11738 > >     match x with
00:10:30 verbose #11739 > >     | Ok x => Some x
00:10:30 verbose #11740 > >     | Error _ => None
00:10:30 verbose #11741 > >
00:10:30 verbose #11742 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:30 verbose #11743 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:30 verbose #11744 > > │ ## fsharp                                                                    │
00:10:30 verbose #11745 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:30 verbose #11746 > >
00:10:30 verbose #11747 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:30 verbose #11748 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:30 verbose #11749 > > │ ### result'                                                                  │
00:10:30 verbose #11750 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:30 verbose #11751 > >
00:10:30 verbose #11752 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:30 verbose #11753 > > nominal result' t u = $'Result<`t, `u>'
00:10:30 verbose #11754 > >
00:10:30 verbose #11755 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:30 verbose #11756 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:30 verbose #11757 > > │ ### unbox                                                                    │
00:10:30 verbose #11758 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:30 verbose #11759 > >
00:10:30 verbose #11760 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:30 verbose #11761 > > inl unbox forall t u. (x : result' t u) : result t u =
00:10:30 verbose #11762 > >     inl ok x : result t u = Ok x
00:10:30 verbose #11763 > >     inl error x : result t u = Error x
00:10:30 verbose #11764 > >     real
00:10:30 verbose #11765 > >         typecase t with
00:10:30 verbose #11766 > >         | () => $'match !x with Ok () -> !ok () | Error x -> !error x' : result
00:10:30 verbose #11767 > > t u
00:10:30 verbose #11768 > >         | _ => $'match !x with Ok x -> !ok x | Error x -> !error x' : result t u
00:10:30 verbose #11769 > >
00:10:30 verbose #11770 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:30 verbose #11771 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:30 verbose #11772 > > │ ### box                                                                      │
00:10:30 verbose #11773 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:30 verbose #11774 > >
00:10:30 verbose #11775 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:30 verbose #11776 > > inl box forall t u. (x : result t u) : result' t u =
00:10:30 verbose #11777 > >     match x with
00:10:30 verbose #11778 > >     | Ok x => $'Ok !x '
00:10:30 verbose #11779 > >     | Error err => $'Error !err '
00:10:30 verbose #11780 > >
00:10:30 verbose #11781 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:30 verbose #11782 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:30 verbose #11783 > > │ ## rust                                                                      │
00:10:30 verbose #11784 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:30 verbose #11785 > >
00:10:30 verbose #11786 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:30 verbose #11787 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:30 verbose #11788 > > │ ### anyhow_result                                                            │
00:10:30 verbose #11789 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:31 verbose #11790 > >
00:10:31 verbose #11791 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:31 verbose #11792 > > nominal anyhow_result t =
00:10:31 verbose #11793 > >     `(
00:10:31 verbose #11794 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:10:31 verbose #11795 > > Fable.Core.Emit(\"anyhow::Result<$0>\")>]]\n#endif\ntype anyhow_Result<'T> =
00:10:31 verbose #11796 > > class end"
00:10:31 verbose #11797 > >         $'' : $'anyhow_Result<`t>'
00:10:31 verbose #11798 > >     )
00:10:31 verbose #11799 > >
00:10:31 verbose #11800 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:31 verbose #11801 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:31 verbose #11802 > > │ ### anyhow_error                                                             │
00:10:31 verbose #11803 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:31 verbose #11804 > >
00:10:31 verbose #11805 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:31 verbose #11806 > > nominal anyhow_error =
00:10:31 verbose #11807 > >     `(
00:10:31 verbose #11808 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:10:31 verbose #11809 > > Fable.Core.Emit(\"anyhow::Error\")>]]\n#endif\ntype anyhow_Error = class end"
00:10:31 verbose #11810 > >         $'' : $'anyhow_Error'
00:10:31 verbose #11811 > >     )
00:10:31 verbose #11812 > >
00:10:31 verbose #11813 > > inl anyhow_error error =
00:10:31 verbose #11814 > >     !\\(error, $'"anyhow::anyhow\!($0)"')
00:10:31 verbose #11815 > >
00:10:31 verbose #11816 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:31 verbose #11817 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:31 verbose #11818 > > │ ### try'                                                                     │
00:10:31 verbose #11819 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:31 verbose #11820 > >
00:10:31 verbose #11821 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:31 verbose #11822 > > inl try' forall t u. (x : result' t u) : t =
00:10:31 verbose #11823 > >     inl is_unit =
00:10:31 verbose #11824 > >         real
00:10:31 verbose #11825 > >             typecase t with
00:10:31 verbose #11826 > >             | () => true
00:10:31 verbose #11827 > >             | _ => false
00:10:31 verbose #11828 > >     if is_unit
00:10:31 verbose #11829 > >     then (!\\(x, $'"true; $0?"') : bool) |> fun _ => $''
00:10:31 verbose #11830 > >     else !\\(x, $'"$0?"')
00:10:31 verbose #11831 > >
00:10:31 verbose #11832 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:31 verbose #11833 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:31 verbose #11834 > > │ ### to_try                                                                   │
00:10:31 verbose #11835 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:31 verbose #11836 > >
00:10:31 verbose #11837 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:31 verbose #11838 > > inl to_try forall t u. (x : result' t u) : rust.try t =
00:10:31 verbose #11839 > >     !\\(x, $'"$0"')
00:10:31 verbose #11840 > >
00:10:31 verbose #11841 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:31 verbose #11842 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:31 verbose #11843 > > │ ### unwrap'                                                                  │
00:10:31 verbose #11844 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:31 verbose #11845 > >
00:10:31 verbose #11846 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:31 verbose #11847 > > inl unwrap' forall t u. (x : result' t u) : t =
00:10:31 verbose #11848 > >     !\\(x, $'"$0.unwrap()"')
00:10:31 verbose #11849 > >
00:10:31 verbose #11850 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:31 verbose #11851 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:31 verbose #11852 > > │ ### unbox'                                                                   │
00:10:31 verbose #11853 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:31 verbose #11854 > >
00:10:31 verbose #11855 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:31 verbose #11856 > > inl unbox' forall t u. (x : result' t u) : result t u =
00:10:31 verbose #11857 > >     inl ok x : result t u = Ok x
00:10:31 verbose #11858 > >     inl ok = join ok
00:10:31 verbose #11859 > >     inl error x : result t u = Error x
00:10:31 verbose #11860 > >     inl error = join error
00:10:31 verbose #11861 > >     real
00:10:31 verbose #11862 > >         typecase t with
00:10:31 verbose #11863 > >         | () =>
00:10:31 verbose #11864 > >             (~!\\)
00:10:31 verbose #11865 > >                 `((result' t u -> result t u) * (result' t u -> result t u))
00:10:31 verbose #11866 > >                 `(result t u)
00:10:31 verbose #11867 > >                 ((ok, error), ($'"match !x { Ok(()) => $0(()), Err(e) => $1(e)
00:10:31 verbose #11868 > > }"' : string))
00:10:31 verbose #11869 > >         | _ =>
00:10:31 verbose #11870 > >             (~!\\)
00:10:31 verbose #11871 > >                 `((result' t u -> result t u) * (result' t u -> result t u))
00:10:31 verbose #11872 > >                 `(result t u)
00:10:31 verbose #11873 > >                 ((ok, error), ($'"match !x { Ok(x) => $0(x), Err(e) => $1(e) }"'
00:10:31 verbose #11874 > > : string))
00:10:31 verbose #11875 > >
00:10:31 verbose #11876 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:31 verbose #11877 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:31 verbose #11878 > > │ ### map'                                                                     │
00:10:31 verbose #11879 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:31 verbose #11880 > >
00:10:31 verbose #11881 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:31 verbose #11882 > > inl map' forall t e u. (fn : t -> u) (source : result' t e) : result' u e =
00:10:31 verbose #11883 > >     (!\\(source, $'"true; let _result_map_ = $0.map(|x| { //"') : bool) |>
00:10:31 verbose #11884 > > ignore
00:10:31 verbose #11885 > >     (!\\(fn !\($'"x"'), $'"true; $0 })"') : bool) |> ignore
00:10:31 verbose #11886 > >     !\($'"_result_map_"')
00:10:31 verbose #11887 > >
00:10:31 verbose #11888 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:31 verbose #11889 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:31 verbose #11890 > > │ ### map''                                                                    │
00:10:31 verbose #11891 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:31 verbose #11892 > >
00:10:31 verbose #11893 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:31 verbose #11894 > > inl map'' forall t e u. (fn : t -> u) (source : result' t e) : result' u e =
00:10:31 verbose #11895 > >     inl fn = join fn
00:10:31 verbose #11896 > >     inl source = join source
00:10:31 verbose #11897 > >     !\($'"!source.map(|x| !fn(x))"')
00:10:31 verbose #11898 > >
00:10:31 verbose #11899 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:31 verbose #11900 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:31 verbose #11901 > > │ ### map_error'                                                               │
00:10:31 verbose #11902 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:31 verbose #11903 > >
00:10:31 verbose #11904 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:31 verbose #11905 > > inl map_error' forall t e u. (fn : e -> u) (source : result' t e) : result' t u
00:10:31 verbose #11906 > > =
00:10:31 verbose #11907 > >     inl fn = join fn
00:10:31 verbose #11908 > >     !\\((source, fn), $'"$0.map_err(|x| $1(x))"')
00:10:31 verbose #11909 > >
00:10:31 verbose #11910 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:31 verbose #11911 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:31 verbose #11912 > > │ ### map_error''                                                              │
00:10:31 verbose #11913 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:31 verbose #11914 > >
00:10:31 verbose #11915 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:31 verbose #11916 > > inl map_error'' forall t e u. (fn : e -> u) (source : result' t e) : result' t u
00:10:31 verbose #11917 > > =
00:10:31 verbose #11918 > >     (!\\(source, $'"true; let _result_map_error__ = $0.map_err(|x| { //"') :
00:10:31 verbose #11919 > > bool) |> ignore
00:10:31 verbose #11920 > >     (!\\(fn !\($'"x"'), $'"true; $0 })"') : bool) |> ignore
00:10:31 verbose #11921 > >     !\($'"_result_map_error__"')
00:10:31 verbose #11922 > >
00:10:31 verbose #11923 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:31 verbose #11924 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:31 verbose #11925 > > │ ### option_ok_or                                                             │
00:10:31 verbose #11926 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:31 verbose #11927 > >
00:10:31 verbose #11928 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:31 verbose #11929 > > inl option_ok_or forall t e. (e : e) (source : optionm'.option' t) : result' t e
00:10:31 verbose #11930 > > =
00:10:31 verbose #11931 > >     !\\(source, $'"$0.ok_or(!e)"')
00:10:31 verbose #11932 > >
00:10:31 verbose #11933 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:31 verbose #11934 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:31 verbose #11935 > > │ ### unwrap_or_else                                                           │
00:10:31 verbose #11936 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:31 verbose #11937 > >
00:10:31 verbose #11938 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:31 verbose #11939 > > inl unwrap_or_else forall t e u. (fn : e -> u) (source : result' t e) : u =
00:10:31 verbose #11940 > >     (!\\(source, $'"true; let _result_unwrap_or_else = $0.unwrap_or_else(|x| {
00:10:31 verbose #11941 > > //"') : bool) |> ignore
00:10:31 verbose #11942 > >     (!\\(fn !\($'"x"'), $'"true; $0 })"') : bool) |> ignore
00:10:31 verbose #11943 > >     !\($'"_result_unwrap_or_else"')
00:10:32 verbose #11944 > >
00:10:32 verbose #11945 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:32 verbose #11946 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:32 verbose #11947 > > │ ### map_or_else                                                              │
00:10:32 verbose #11948 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:32 verbose #11949 > >
00:10:32 verbose #11950 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:32 verbose #11951 > > inl map_or_else forall t e u v. (fn : e -> v) (fn2 : u -> v) (source : result' t
00:10:32 verbose #11952 > > e) : v =
00:10:32 verbose #11953 > >     (!\\(source, $'"true; let _result_map_or_else = $0.map_or_else(|x| { //"') :
00:10:32 verbose #11954 > > bool) |> ignore
00:10:32 verbose #11955 > >     (!\\(fn !\($'"x"'), $'"true; $0 }, |x| { //"') : bool) |> ignore
00:10:32 verbose #11956 > >     (!\\(fn2 !\($'"x"'), $'"true; $0 })"') : bool) |> ignore
00:10:32 verbose #11957 > >     !\($'"_result_map_or_else"')
00:10:32 verbose #11958 > >
00:10:32 verbose #11959 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:32 verbose #11960 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:32 verbose #11961 > > │ ### as_ref                                                                   │
00:10:32 verbose #11962 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:32 verbose #11963 > >
00:10:32 verbose #11964 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:32 verbose #11965 > > inl as_ref forall t e. (source : result' t e) : result' (rust.ref t) (rust.ref
00:10:32 verbose #11966 > > e) =
00:10:32 verbose #11967 > >     !\($'"!source.as_ref()"')
00:10:32 verbose #11968 > >
00:10:32 verbose #11969 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:32 verbose #11970 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:32 verbose #11971 > > │ ### as_ref'                                                                  │
00:10:32 verbose #11972 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:32 verbose #11973 > >
00:10:32 verbose #11974 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:32 verbose #11975 > > inl as_ref' forall t e. (source : rust.ref (result' t e)) : result' (rust.ref t)
00:10:32 verbose #11976 > > (rust.ref e) =
00:10:32 verbose #11977 > >     !\($'"!source.as_ref()"')
00:10:32 verbose #11978 > >
00:10:32 verbose #11979 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:32 verbose #11980 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:32 verbose #11981 > > │ ### unwrap_or'                                                               │
00:10:32 verbose #11982 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:32 verbose #11983 > >
00:10:32 verbose #11984 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:32 verbose #11985 > > inl unwrap_or' forall t u. (default : t) (x : result' t u) : t =
00:10:32 verbose #11986 > >     !\\((x, default), $'"$0.unwrap_or($1)"')
00:10:32 verbose #11987 > >
00:10:32 verbose #11988 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:32 verbose #11989 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:32 verbose #11990 > > │ ### expect                                                                   │
00:10:32 verbose #11991 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:32 verbose #11992 > >
00:10:32 verbose #11993 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:32 verbose #11994 > > inl expect forall t u. (error : rust.ref string) (x : result' t u) : t =
00:10:32 verbose #11995 > >     !\($'"!x.expect(&!error)"')
00:10:32 verbose #11996 > >
00:10:32 verbose #11997 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:32 verbose #11998 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:32 verbose #11999 > > │ ### is_err                                                                   │
00:10:32 verbose #12000 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:32 verbose #12001 > >
00:10:32 verbose #12002 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:32 verbose #12003 > > inl is_err forall t u. (x : result' t u) : bool =
00:10:32 verbose #12004 > >     !\($'"!x.is_err()"')
00:10:32 verbose #12005 > >
00:10:32 verbose #12006 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:32 verbose #12007 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:32 verbose #12008 > > │ ### ok'                                                                      │
00:10:32 verbose #12009 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:32 verbose #12010 > >
00:10:32 verbose #12011 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:32 verbose #12012 > > inl ok' forall t. (x : result' t _) : optionm'.option' t =
00:10:32 verbose #12013 > >     !\\(x, $'"$0.ok()"')
00:10:32 verbose #12014 > >
00:10:32 verbose #12015 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:32 verbose #12016 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:32 verbose #12017 > > │ ### err                                                                      │
00:10:32 verbose #12018 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:32 verbose #12019 > >
00:10:32 verbose #12020 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:32 verbose #12021 > > inl err forall t u. (x : u) : result' t u =
00:10:32 verbose #12022 > >     !\\(x, $'"Err($0)"')
00:10:32 verbose #12023 > >
00:10:32 verbose #12024 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:32 verbose #12025 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:32 verbose #12026 > > │ ### transpose                                                                │
00:10:32 verbose #12027 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:32 verbose #12028 > >
00:10:32 verbose #12029 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:32 verbose #12030 > > inl transpose forall t u. (x : optionm'.option' (result' t u)) : result'
00:10:32 verbose #12031 > > (optionm'.option' t) u =
00:10:32 verbose #12032 > >     !\\(x, $'"$0.transpose()"')
00:10:32 verbose #12033 > >
00:10:32 verbose #12034 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:32 verbose #12035 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:32 verbose #12036 > > │ ### rc_try_unwrap                                                            │
00:10:32 verbose #12037 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:32 verbose #12038 > >
00:10:32 verbose #12039 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:32 verbose #12040 > > inl rc_try_unwrap forall t. (x : rust.rc t) : result' t (rust.rc t) =
00:10:32 verbose #12041 > >     !\\(x, $'"std::rc::Rc::try_unwrap($0)"')
00:10:32 verbose #12042 > >
00:10:32 verbose #12043 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:32 verbose #12044 > > //// test
00:10:32 verbose #12045 > > ///! rust
00:10:32 verbose #12046 > >
00:10:32 verbose #12047 > > rust.new_rc true
00:10:32 verbose #12048 > > |> rc_try_unwrap
00:10:32 verbose #12049 > > |> unbox
00:10:32 verbose #12050 > > |> _assert_eq (Ok true)
00:10:40 verbose #12051 > >
00:10:40 verbose #12052 > > ╭─[ 7.40s - return value ]─────────────────────────────────────────────────────╮
00:10:40 verbose #12053 > > │ __assert_eq / actual: US0_0(true) / expected: US0_0(true)                    │
00:10:40 verbose #12054 > > │                                                                              │
00:10:40 verbose #12055 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:40 verbose #12056 > 00:00:15 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 25153 }
00:10:40 verbose #12057 > 00:00:15   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:10:40 verbose #12058 >     "nbconvert",
00:10:40 verbose #12059 >     "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb",
00:10:40 verbose #12060 >     "--to",
00:10:40 verbose #12061 >     "html",
00:10:40 verbose #12062 >     "--HTMLExporter.theme=dark",
00:10:40 verbose #12063 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:10:41 verbose #12064 > 00:00:16 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb to html
00:10:41 verbose #12065 > 00:00:16 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:10:41 verbose #12066 > 00:00:16 verbose #7 !   validate(nb)
00:10:41 verbose #12067 > 00:00:16 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:10:41 verbose #12068 > 00:00:16 verbose #9 !   return _pygments_highlight(
00:10:41 verbose #12069 > 00:00:16 verbose #10 ! [NbConvertApp] Writing 343667 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.html
00:10:41 verbose #12070 > 00:00:16 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 }
00:10:41 verbose #12071 > 00:00:16   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 }
00:10:41 verbose #12072 > 00:00:16   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:10:41 verbose #12073 >     "-c",
00:10:41 verbose #12074 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:10:41 verbose #12075 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:10:42 verbose #12076 > 00:00:17 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:10:42 verbose #12077 > 00:00:17   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:10:42 verbose #12078 > 00:00:17   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 26110 }
00:10:42   debug #12079 runtime.execute_with_options_async / { exit_code = 0; output_length = 29831 }
00:10:42   debug #13 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path resultm.dib --retries 3
00:10:42   debug #12080 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path console.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:10:42 verbose #12081 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "console.dib", "--retries", "3"])) }
00:10:42 verbose #12082 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:10:42 verbose #12083 >     "repl",
00:10:42 verbose #12084 >     "--exit-after-run",
00:10:42 verbose #12085 >     "--run",
00:10:42 verbose #12086 >     "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib",
00:10:42 verbose #12087 >     "--output-path",
00:10:42 verbose #12088 >     "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb",
00:10:42 verbose #12089 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:10:43 verbose #12090 > >
00:10:43 verbose #12091 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:43 verbose #12092 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:43 verbose #12093 > > │ # console                                                                    │
00:10:43 verbose #12094 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:45 verbose #12095 > >
00:10:45 verbose #12096 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:45 verbose #12097 > > //// test
00:10:45 verbose #12098 > >
00:10:45 verbose #12099 > > open testing
00:10:46 verbose #12100 > >
00:10:46 verbose #12101 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:46 verbose #12102 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:46 verbose #12103 > > │ ## fsharp                                                                    │
00:10:46 verbose #12104 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:46 verbose #12105 > >
00:10:46 verbose #12106 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:46 verbose #12107 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:46 verbose #12108 > > │ ### console_color                                                            │
00:10:46 verbose #12109 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:46 verbose #12110 > >
00:10:46 verbose #12111 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:46 verbose #12112 > > nominal console_color = $'System.ConsoleColor'
00:10:46 verbose #12113 > >
00:10:46 verbose #12114 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:46 verbose #12115 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:46 verbose #12116 > > │ ### reset_color                                                              │
00:10:46 verbose #12117 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:46 verbose #12118 > >
00:10:46 verbose #12119 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:46 verbose #12120 > > inl reset_color () : () =
00:10:46 verbose #12121 > >     run_target function
00:10:46 verbose #12122 > >         | Fsharp => fun () => $'System.Console.ResetColor ()'
00:10:46 verbose #12123 > >         | _ => fun () => ()
00:10:46 verbose #12124 > >
00:10:46 verbose #12125 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:46 verbose #12126 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:46 verbose #12127 > > │ ### set_foreground_color                                                     │
00:10:46 verbose #12128 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:46 verbose #12129 > >
00:10:46 verbose #12130 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:46 verbose #12131 > > inl set_foreground_color (color : console_color) : () =
00:10:46 verbose #12132 > >     run_target function
00:10:46 verbose #12133 > >         | Fsharp => fun () => $'System.Console.ForegroundColor <- !color '
00:10:46 verbose #12134 > >         | _ => fun () => ()
00:10:46 verbose #12135 > >
00:10:46 verbose #12136 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:46 verbose #12137 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:46 verbose #12138 > > │ ## console                                                                   │
00:10:46 verbose #12139 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:46 verbose #12140 > >
00:10:46 verbose #12141 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:46 verbose #12142 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:46 verbose #12143 > > │ ### write_line                                                               │
00:10:46 verbose #12144 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:46 verbose #12145 > >
00:10:46 verbose #12146 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:46 verbose #12147 > > inl write_line obj : () =
00:10:46 verbose #12148 > >     backend_switch {
00:10:46 verbose #12149 > >         Fsharp = fun () =>
00:10:46 verbose #12150 > >             fun () => obj |> $'System.Console.WriteLine'
00:10:46 verbose #12151 > >             |> exec_unit
00:10:46 verbose #12152 > >         Python = fun () => $'print(!obj)' : ()
00:10:46 verbose #12153 > >     }
00:10:46 verbose #12154 > >
00:10:46 verbose #12155 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:46 verbose #12156 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:46 verbose #12157 > > │ ### write                                                                    │
00:10:46 verbose #12158 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:46 verbose #12159 > >
00:10:46 verbose #12160 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:46 verbose #12161 > > inl write forall t. (x : t) : () =
00:10:46 verbose #12162 > >     inl s = x |> sm'.format
00:10:46 verbose #12163 > >     backend_switch {
00:10:46 verbose #12164 > >         Python = fun () => $'print(!s, end="")' : ()
00:10:46 verbose #12165 > >         Fsharp = fun () => $'!s |> System.Console.Write' : ()
00:10:46 verbose #12166 > >     }
00:10:46 verbose #12167 > >
00:10:46 verbose #12168 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:46 verbose #12169 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:46 verbose #12170 > > │ ### write_ln                                                                 │
00:10:46 verbose #12171 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:46 verbose #12172 > >
00:10:46 verbose #12173 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:46 verbose #12174 > > inl write_ln l : () =
00:10:46 verbose #12175 > >     write l
00:10:46 verbose #12176 > >     backend_switch {
00:10:46 verbose #12177 > >         Cuda = fun () => $'printf("\\n")' : ()
00:10:46 verbose #12178 > >         Python = fun () => $"print()" : ()
00:10:46 verbose #12179 > >         Fsharp = fun () => write_line () : ()
00:10:46 verbose #12180 > >     }
00:10:47 verbose #12181 > 00:00:05 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 5283 }
00:10:47 verbose #12182 > 00:00:05   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:10:47 verbose #12183 >     "nbconvert",
00:10:47 verbose #12184 >     "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb",
00:10:47 verbose #12185 >     "--to",
00:10:47 verbose #12186 >     "html",
00:10:47 verbose #12187 >     "--HTMLExporter.theme=dark",
00:10:47 verbose #12188 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:10:47 verbose #12189 > 00:00:05 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb to html
00:10:47 verbose #12190 > 00:00:05 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:10:47 verbose #12191 > 00:00:05 verbose #7 !   validate(nb)
00:10:48 verbose #12192 > 00:00:06 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:10:48 verbose #12193 > 00:00:06 verbose #9 !   return _pygments_highlight(
00:10:48 verbose #12194 > 00:00:06 verbose #10 ! [NbConvertApp] Writing 283391 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/console.dib.html
00:10:48 verbose #12195 > 00:00:06 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 }
00:10:48 verbose #12196 > 00:00:06   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 }
00:10:48 verbose #12197 > 00:00:06   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:10:48 verbose #12198 >     "-c",
00:10:48 verbose #12199 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:10:48 verbose #12200 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:10:48 verbose #12201 > 00:00:06 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:10:48 verbose #12202 > 00:00:06   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:10:48 verbose #12203 > 00:00:06   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 6240 }
00:10:48   debug #12204 runtime.execute_with_options_async / { exit_code = 0; output_length = 9273 }
00:10:48   debug #14 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path console.dib --retries 3
00:10:48   debug #12205 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path base.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:10:48 verbose #12206 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "base.dib", "--retries", "3"])) }
00:10:48 verbose #12207 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:10:48 verbose #12208 >     "repl",
00:10:48 verbose #12209 >     "--exit-after-run",
00:10:48 verbose #12210 >     "--run",
00:10:48 verbose #12211 >     "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib",
00:10:48 verbose #12212 >     "--output-path",
00:10:48 verbose #12213 >     "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb",
00:10:48 verbose #12214 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:10:50 verbose #12215 > >
00:10:50 verbose #12216 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:50 verbose #12217 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:50 verbose #12218 > > │ # base                                                                       │
00:10:50 verbose #12219 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:52 verbose #12220 > >
00:10:52 verbose #12221 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:52 verbose #12222 > > //// test
00:10:52 verbose #12223 > >
00:10:52 verbose #12224 > > open testing
00:10:53 verbose #12225 > >
00:10:53 verbose #12226 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:53 verbose #12227 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:53 verbose #12228 > > │ ## execution                                                                 │
00:10:53 verbose #12229 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:53 verbose #12230 > >
00:10:53 verbose #12231 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:53 verbose #12232 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:53 verbose #12233 > > │ ### emit                                                                     │
00:10:53 verbose #12234 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:53 verbose #12235 > >
00:10:53 verbose #12236 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:53 verbose #12237 > > inl emit forall t. (x : t) : t =
00:10:53 verbose #12238 > >     $'!x '
00:10:53 verbose #12239 > >
00:10:53 verbose #12240 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:53 verbose #12241 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:53 verbose #12242 > > │ ### emit_unit                                                                │
00:10:53 verbose #12243 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:53 verbose #12244 > >
00:10:53 verbose #12245 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:53 verbose #12246 > > inl emit_unit forall t. (x : t) : () =
00:10:53 verbose #12247 > >     $'!x '
00:10:53 verbose #12248 > >
00:10:53 verbose #12249 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:53 verbose #12250 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:53 verbose #12251 > > │ ### use                                                                      │
00:10:53 verbose #12252 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:53 verbose #12253 > >
00:10:53 verbose #12254 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:53 verbose #12255 > > inl use forall t. (x : t) : t =
00:10:53 verbose #12256 > >     $'use !x = !x ' : ()
00:10:53 verbose #12257 > >     $'!x '
00:10:53 verbose #12258 > >
00:10:53 verbose #12259 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:53 verbose #12260 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:53 verbose #12261 > > │ ## target                                                                    │
00:10:53 verbose #12262 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:53 verbose #12263 > >
00:10:53 verbose #12264 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:53 verbose #12265 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:53 verbose #12266 > > │ ### backend_switch                                                           │
00:10:53 verbose #12267 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:53 verbose #12268 > >
00:10:53 verbose #12269 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:53 verbose #12270 > > inl backend_switch forall t. x : t =
00:10:53 verbose #12271 > >     real
00:10:53 verbose #12272 > >         inl backend key : t =
00:10:53 verbose #12273 > >             inl s = real_core.string_lit_to_symbol key
00:10:53 verbose #12274 > >             real_core.record_type_try_find `(`x) s
00:10:53 verbose #12275 > >                 (forall v'. => (x s) ())
00:10:53 verbose #12276 > >                 (fun () => $'' : t)
00:10:53 verbose #12277 > >         !!!!BackendSwitch (
00:10:53 verbose #12278 > >             ("Fsharp", backend "Fsharp"),
00:10:53 verbose #12279 > >             ("Python", backend "Python"),
00:10:53 verbose #12280 > >             ("Cuda", backend "Cuda")
00:10:53 verbose #12281 > >         )
00:10:53 verbose #12282 > >
00:10:53 verbose #12283 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:53 verbose #12284 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:53 verbose #12285 > > │ ### target_runtime                                                           │
00:10:53 verbose #12286 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:53 verbose #12287 > >
00:10:53 verbose #12288 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:53 verbose #12289 > > union target_runtime =
00:10:53 verbose #12290 > >     | Native
00:10:53 verbose #12291 > >     | Wasm
00:10:53 verbose #12292 > >     | Contract
00:10:53 verbose #12293 > >
00:10:53 verbose #12294 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:53 verbose #12295 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:53 verbose #12296 > > │ ### target                                                                   │
00:10:53 verbose #12297 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:53 verbose #12298 > >
00:10:53 verbose #12299 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:53 verbose #12300 > > union target =
00:10:53 verbose #12301 > >     | Fsharp : target_runtime
00:10:53 verbose #12302 > >     | Cuda : target_runtime
00:10:53 verbose #12303 > >     | Rust : target_runtime
00:10:53 verbose #12304 > >     | TypeScript : target_runtime
00:10:53 verbose #12305 > >     | Python : target_runtime
00:10:53 verbose #12306 > >
00:10:53 verbose #12307 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:53 verbose #12308 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:53 verbose #12309 > > │ ### run_target_args                                                          │
00:10:53 verbose #12310 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:53 verbose #12311 > >
00:10:53 verbose #12312 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:53 verbose #12313 > > inl run_target_args forall t u. (args : () -> u) (fn : target -> (u -> t)) : t =
00:10:53 verbose #12314 > >     inl args = args () |> dyn
00:10:53 verbose #12315 > >     backend_switch {
00:10:53 verbose #12316 > >         Fsharp = fun () =>
00:10:53 verbose #12317 > >             inl result = $'()' : $'unit'
00:10:53 verbose #12318 > >             inl emit_result x : () =
00:10:53 verbose #12319 > >                 $'let _!result = !x '
00:10:53 verbose #12320 > >             $'\n#if FABLE_COMPILER || WASM || CONTRACT'
00:10:53 verbose #12321 > >             $'\n#if FABLE_COMPILER_RUST && \!WASM && \!CONTRACT'
00:10:53 verbose #12322 > >             inl target = Rust Native
00:10:53 verbose #12323 > >             fn target args |> emit_result
00:10:53 verbose #12324 > >             $'#endif\n#if FABLE_COMPILER_RUST && WASM'
00:10:53 verbose #12325 > >             inl target = Rust Wasm
00:10:53 verbose #12326 > >             fn target args |> emit_result
00:10:53 verbose #12327 > >             $'#endif\n#if FABLE_COMPILER_RUST && CONTRACT'
00:10:53 verbose #12328 > >             inl target = Rust Contract
00:10:53 verbose #12329 > >             fn target args |> emit_result
00:10:53 verbose #12330 > >             $'#endif\n#if FABLE_COMPILER_TYPESCRIPT'
00:10:53 verbose #12331 > >             inl target = TypeScript Native
00:10:53 verbose #12332 > >             fn target args |> emit_result
00:10:53 verbose #12333 > >             $'#endif\n#if FABLE_COMPILER_PYTHON'
00:10:53 verbose #12334 > >             inl target = Python Native
00:10:53 verbose #12335 > >             fn target args |> emit_result
00:10:53 verbose #12336 > >             $'#endif\n#else'
00:10:53 verbose #12337 > >             inl target = Fsharp Native
00:10:53 verbose #12338 > >             fn target args |> emit_result
00:10:53 verbose #12339 > >             $'#endif'
00:10:53 verbose #12340 > >             $'_!result ' : t
00:10:53 verbose #12341 > >         Python = fun () =>
00:10:53 verbose #12342 > >             inl target = Cuda Native
00:10:53 verbose #12343 > >             fn target args
00:10:53 verbose #12344 > >     }
00:10:53 verbose #12345 > >
00:10:53 verbose #12346 > > ── markdown ────────────────────────────────────────────────────────────────────
00:10:53 verbose #12347 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:10:53 verbose #12348 > > │ ### run_target                                                               │
00:10:53 verbose #12349 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:10:53 verbose #12350 > >
00:10:53 verbose #12351 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:53 verbose #12352 > > inl run_target forall t. (fn : target -> (() -> t)) : t =
00:10:53 verbose #12353 > >     run_target_args id fn
00:10:54 verbose #12354 > >
00:10:54 verbose #12355 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:10:54 verbose #12356 > > //// test
00:10:54 verbose #12357 > > ///! fsharp
00:10:54 verbose #12358 > > ///! cuda
00:10:54 verbose #12359 > > ///! rust
00:10:54 verbose #12360 > > ///! typescript
00:10:54 verbose #12361 > > ///! python
00:10:54 verbose #12362 > >
00:10:54 verbose #12363 > > run_target function
00:10:54 verbose #12364 > >     | Fsharp (Native) => fun () => $'1uy'
00:10:54 verbose #12365 > >     | Cuda (Native) => fun () => $'1'
00:10:54 verbose #12366 > >     | Rust (Native) => fun () => $'1uy'
00:10:54 verbose #12367 > >     | TypeScript (Native) => fun () => $'1uy'
00:10:54 verbose #12368 > >     | Python (Native) => fun () => $'1uy'
00:10:54 verbose #12369 > >     | _ => fun () => $'2uy'
00:10:54 verbose #12370 > > |> _assert_eq 1u8
00:11:06 verbose #12371 > >
00:11:06 verbose #12372 > > ╭─[ 12.20s - return value ]────────────────────────────────────────────────────╮
00:11:06 verbose #12373 > > │ .py output (Cuda):                                                           │
00:11:06 verbose #12374 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:11:06 verbose #12375 > > │                                                                              │
00:11:06 verbose #12376 > > │ .rs output:                                                                  │
00:11:06 verbose #12377 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:11:06 verbose #12378 > > │                                                                              │
00:11:06 verbose #12379 > > │ .ts output:                                                                  │
00:11:06 verbose #12380 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:11:06 verbose #12381 > > │                                                                              │
00:11:06 verbose #12382 > > │ .py output:                                                                  │
00:11:06 verbose #12383 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:11:06 verbose #12384 > > │                                                                              │
00:11:06 verbose #12385 > > │                                                                              │
00:11:06 verbose #12386 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:06 verbose #12387 > >
00:11:06 verbose #12388 > > ╭─[ 12.20s - stdout ]──────────────────────────────────────────────────────────╮
00:11:06 verbose #12389 > > │ .fsx output:                                                                 │
00:11:06 verbose #12390 > > │ __assert_eq / actual: 1uy / expected: 1uy                                    │
00:11:06 verbose #12391 > > │                                                                              │
00:11:06 verbose #12392 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:06 verbose #12393 > >
00:11:06 verbose #12394 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:06 verbose #12395 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:11:06 verbose #12396 > > │ ## function                                                                  │
00:11:06 verbose #12397 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:06 verbose #12398 > >
00:11:06 verbose #12399 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:06 verbose #12400 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:11:06 verbose #12401 > > │ ### eval                                                                     │
00:11:06 verbose #12402 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:06 verbose #12403 > >
00:11:06 verbose #12404 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:06 verbose #12405 > > inl eval fn =
00:11:06 verbose #12406 > >     fn ()
00:11:06 verbose #12407 > >
00:11:06 verbose #12408 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:06 verbose #12409 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:11:06 verbose #12410 > > │ ### exec_unit                                                                │
00:11:06 verbose #12411 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:06 verbose #12412 > >
00:11:06 verbose #12413 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:06 verbose #12414 > > inl exec_unit (fn : () -> ()) : () =
00:11:06 verbose #12415 > >     backend_switch {
00:11:06 verbose #12416 > >         Fsharp = fun () =>
00:11:06 verbose #12417 > >             inl unit = $'()' : $'unit'
00:11:06 verbose #12418 > >             ($'(fun () -> !fn (); !unit) ()' : $'unit') |> ignore
00:11:06 verbose #12419 > >         Python = fun () => fn ()
00:11:06 verbose #12420 > >     }
00:11:06 verbose #12421 > >
00:11:06 verbose #12422 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:06 verbose #12423 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:11:06 verbose #12424 > > │ ### lazy                                                                     │
00:11:06 verbose #12425 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:06 verbose #12426 > >
00:11:06 verbose #12427 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:06 verbose #12428 > > nominal lazy t = $'Lazy<`t>'
00:11:06 verbose #12429 > >
00:11:06 verbose #12430 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:06 verbose #12431 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:11:06 verbose #12432 > > │ ### memoize                                                                  │
00:11:06 verbose #12433 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:06 verbose #12434 > >
00:11:06 verbose #12435 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:06 verbose #12436 > > nominal lazy t = $'Lazy<`t>'
00:11:06 verbose #12437 > >
00:11:06 verbose #12438 > > inl memoize forall t. (fn : () -> t) : () -> t =
00:11:06 verbose #12439 > >     inl fn = join fn
00:11:06 verbose #12440 > >     backend_switch {
00:11:06 verbose #12441 > >         Fsharp = fun () =>
00:11:06 verbose #12442 > >             inl result : lazy t = $'lazy !fn ()'
00:11:06 verbose #12443 > >             fun () => $'!result.Value' : t
00:11:06 verbose #12444 > >         Python = fun () =>
00:11:06 verbose #12445 > >             inl result = mut None
00:11:06 verbose #12446 > >             inl computed = mut false
00:11:06 verbose #12447 > >             fun () =>
00:11:06 verbose #12448 > >                 if *computed
00:11:06 verbose #12449 > >                 then *result
00:11:06 verbose #12450 > >                 else
00:11:06 verbose #12451 > >                     result <- fn () |> Some
00:11:06 verbose #12452 > >                     computed <- true
00:11:06 verbose #12453 > >                     *result
00:11:06 verbose #12454 > >                 |> optionm.value
00:11:06 verbose #12455 > >     }
00:11:06 verbose #12456 > >
00:11:06 verbose #12457 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:06 verbose #12458 > > //// test
00:11:06 verbose #12459 > > ///! fsharp
00:11:06 verbose #12460 > > ///! cuda
00:11:06 verbose #12461 > > ///! rust
00:11:06 verbose #12462 > > ///! typescript
00:11:06 verbose #12463 > > ///! python
00:11:06 verbose #12464 > >
00:11:06 verbose #12465 > > inl count = mut 0i32
00:11:06 verbose #12466 > > inl add =
00:11:06 verbose #12467 > >     fun () =>
00:11:06 verbose #12468 > >         count <- *count + 1
00:11:06 verbose #12469 > >         count
00:11:06 verbose #12470 > >     |> memoize
00:11:06 verbose #12471 > >
00:11:06 verbose #12472 > > add () |> ignore
00:11:06 verbose #12473 > > add () |> ignore
00:11:06 verbose #12474 > > add () |> ignore
00:11:06 verbose #12475 > >
00:11:06 verbose #12476 > > *count
00:11:06 verbose #12477 > > |> _assert_eq 1
00:11:18 verbose #12478 > >
00:11:18 verbose #12479 > > ╭─[ 11.90s - return value ]────────────────────────────────────────────────────╮
00:11:18 verbose #12480 > > │ .py output (Cuda):                                                           │
00:11:18 verbose #12481 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:11:18 verbose #12482 > > │                                                                              │
00:11:18 verbose #12483 > > │ .rs output:                                                                  │
00:11:18 verbose #12484 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:11:18 verbose #12485 > > │                                                                              │
00:11:18 verbose #12486 > > │ .ts output:                                                                  │
00:11:18 verbose #12487 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:11:18 verbose #12488 > > │                                                                              │
00:11:18 verbose #12489 > > │ .py output:                                                                  │
00:11:18 verbose #12490 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:11:18 verbose #12491 > > │                                                                              │
00:11:18 verbose #12492 > > │                                                                              │
00:11:18 verbose #12493 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:18 verbose #12494 > >
00:11:18 verbose #12495 > > ╭─[ 11.90s - stdout ]──────────────────────────────────────────────────────────╮
00:11:18 verbose #12496 > > │ .fsx output:                                                                 │
00:11:18 verbose #12497 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:11:18 verbose #12498 > > │                                                                              │
00:11:18 verbose #12499 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:18 verbose #12500 > >
00:11:18 verbose #12501 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:18 verbose #12502 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:11:18 verbose #12503 > > │ ### capture                                                                  │
00:11:18 verbose #12504 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:18 verbose #12505 > >
00:11:18 verbose #12506 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:18 verbose #12507 > > inl capture forall t. (fn : () -> t) : t =
00:11:18 verbose #12508 > >     inl result = dyn true
00:11:18 verbose #12509 > >     $'let mutable _!result : `t option = None '
00:11:18 verbose #12510 > >     $'('
00:11:18 verbose #12511 > >     $'(fun () ->'
00:11:18 verbose #12512 > >     $'(fun () ->'
00:11:18 verbose #12513 > >     fn () |> emit_unit
00:11:18 verbose #12514 > >     $')'
00:11:18 verbose #12515 > >     $'|> fun x -> x ()'
00:11:18 verbose #12516 > >     $') () )'
00:11:18 verbose #12517 > >     $'|> fun x -> _!result <- Some x'
00:11:18 verbose #12518 > >     $'match _!result with Some x -> x | None -> failwith "base.capture
00:11:18 verbose #12519 > > _!result=None"'
00:11:18 verbose #12520 > >
00:11:18 verbose #12521 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:18 verbose #12522 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:11:18 verbose #12523 > > │ ## arithmetic                                                                │
00:11:18 verbose #12524 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:18 verbose #12525 > >
00:11:18 verbose #12526 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:18 verbose #12527 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:11:18 verbose #12528 > > │ ### (+.)                                                                     │
00:11:18 verbose #12529 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:18 verbose #12530 > >
00:11:18 verbose #12531 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:18 verbose #12532 > > inl (+.) forall t. (a : t) (b : t) : t =
00:11:18 verbose #12533 > >     $'!a + !b '
00:11:18 verbose #12534 > >
00:11:18 verbose #12535 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:18 verbose #12536 > > //// test
00:11:18 verbose #12537 > > ///! fsharp
00:11:18 verbose #12538 > > ///! cuda
00:11:18 verbose #12539 > > ///! rust
00:11:18 verbose #12540 > > ///! typescript
00:11:18 verbose #12541 > > ///! python
00:11:18 verbose #12542 > >
00:11:18 verbose #12543 > > ($'3' : i32) +. ($'-6' : i32)
00:11:18 verbose #12544 > > |> _assert_eq -3i32
00:11:30 verbose #12545 > >
00:11:30 verbose #12546 > > ╭─[ 11.66s - return value ]────────────────────────────────────────────────────╮
00:11:30 verbose #12547 > > │ .py output (Cuda):                                                           │
00:11:30 verbose #12548 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:11:30 verbose #12549 > > │                                                                              │
00:11:30 verbose #12550 > > │ .rs output:                                                                  │
00:11:30 verbose #12551 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:11:30 verbose #12552 > > │                                                                              │
00:11:30 verbose #12553 > > │ .ts output:                                                                  │
00:11:30 verbose #12554 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:11:30 verbose #12555 > > │                                                                              │
00:11:30 verbose #12556 > > │ .py output:                                                                  │
00:11:30 verbose #12557 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:11:30 verbose #12558 > > │                                                                              │
00:11:30 verbose #12559 > > │                                                                              │
00:11:30 verbose #12560 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:30 verbose #12561 > >
00:11:30 verbose #12562 > > ╭─[ 11.66s - stdout ]──────────────────────────────────────────────────────────╮
00:11:30 verbose #12563 > > │ .fsx output:                                                                 │
00:11:30 verbose #12564 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:11:30 verbose #12565 > > │                                                                              │
00:11:30 verbose #12566 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:30 verbose #12567 > >
00:11:30 verbose #12568 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:30 verbose #12569 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:11:30 verbose #12570 > > │ ### (-.)                                                                     │
00:11:30 verbose #12571 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:30 verbose #12572 > >
00:11:30 verbose #12573 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:30 verbose #12574 > > inl (-.) forall t. (a : t) (b : t) : t =
00:11:30 verbose #12575 > >     $'!a - !b '
00:11:30 verbose #12576 > >
00:11:30 verbose #12577 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:30 verbose #12578 > > //// test
00:11:30 verbose #12579 > > ///! fsharp
00:11:30 verbose #12580 > > ///! cuda
00:11:30 verbose #12581 > > ///! rust
00:11:30 verbose #12582 > > ///! typescript
00:11:30 verbose #12583 > > ///! python
00:11:30 verbose #12584 > >
00:11:30 verbose #12585 > > ($'3' : i32) -. ($'6' : i32)
00:11:30 verbose #12586 > > |> _assert_eq -3i32
00:11:40 verbose #12587 > >
00:11:40 verbose #12588 > > ╭─[ 9.91s - return value ]─────────────────────────────────────────────────────╮
00:11:40 verbose #12589 > > │ .py output (Cuda):                                                           │
00:11:40 verbose #12590 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:11:40 verbose #12591 > > │                                                                              │
00:11:40 verbose #12592 > > │ .rs output:                                                                  │
00:11:40 verbose #12593 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:11:40 verbose #12594 > > │                                                                              │
00:11:40 verbose #12595 > > │ .ts output:                                                                  │
00:11:40 verbose #12596 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:11:40 verbose #12597 > > │                                                                              │
00:11:40 verbose #12598 > > │ .py output:                                                                  │
00:11:40 verbose #12599 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:11:40 verbose #12600 > > │                                                                              │
00:11:40 verbose #12601 > > │                                                                              │
00:11:40 verbose #12602 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:40 verbose #12603 > >
00:11:40 verbose #12604 > > ╭─[ 9.91s - stdout ]───────────────────────────────────────────────────────────╮
00:11:40 verbose #12605 > > │ .fsx output:                                                                 │
00:11:40 verbose #12606 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:11:40 verbose #12607 > > │                                                                              │
00:11:40 verbose #12608 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:40 verbose #12609 > >
00:11:40 verbose #12610 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:40 verbose #12611 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:11:40 verbose #12612 > > │ ### (*.)                                                                     │
00:11:40 verbose #12613 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:40 verbose #12614 > >
00:11:40 verbose #12615 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:40 verbose #12616 > > inl (*.) forall t. (a : t) (b : t) : t =
00:11:40 verbose #12617 > >     $'!a * !b '
00:11:40 verbose #12618 > >
00:11:40 verbose #12619 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:40 verbose #12620 > > //// test
00:11:40 verbose #12621 > > ///! fsharp
00:11:40 verbose #12622 > > ///! cuda
00:11:40 verbose #12623 > > ///! rust
00:11:40 verbose #12624 > > ///! typescript
00:11:40 verbose #12625 > > ///! python
00:11:40 verbose #12626 > >
00:11:40 verbose #12627 > > ($'3' : i32) *. ($'-1' : i32)
00:11:40 verbose #12628 > > |> _assert_eq -3i32
00:11:50 verbose #12629 > >
00:11:50 verbose #12630 > > ╭─[ 10.07s - return value ]────────────────────────────────────────────────────╮
00:11:50 verbose #12631 > > │ .py output (Cuda):                                                           │
00:11:50 verbose #12632 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:11:50 verbose #12633 > > │                                                                              │
00:11:50 verbose #12634 > > │ .rs output:                                                                  │
00:11:50 verbose #12635 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:11:50 verbose #12636 > > │                                                                              │
00:11:50 verbose #12637 > > │ .ts output:                                                                  │
00:11:50 verbose #12638 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:11:50 verbose #12639 > > │                                                                              │
00:11:50 verbose #12640 > > │ .py output:                                                                  │
00:11:50 verbose #12641 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:11:50 verbose #12642 > > │                                                                              │
00:11:50 verbose #12643 > > │                                                                              │
00:11:50 verbose #12644 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:50 verbose #12645 > >
00:11:50 verbose #12646 > > ╭─[ 10.07s - stdout ]──────────────────────────────────────────────────────────╮
00:11:50 verbose #12647 > > │ .fsx output:                                                                 │
00:11:50 verbose #12648 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:11:50 verbose #12649 > > │                                                                              │
00:11:50 verbose #12650 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:50 verbose #12651 > >
00:11:50 verbose #12652 > > ── markdown ────────────────────────────────────────────────────────────────────
00:11:50 verbose #12653 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:11:50 verbose #12654 > > │ ### (/.)                                                                     │
00:11:50 verbose #12655 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:11:50 verbose #12656 > >
00:11:50 verbose #12657 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:50 verbose #12658 > > inl (/.) forall t. (a : t) (b : t) : t =
00:11:50 verbose #12659 > >     $'!a / !b '
00:11:50 verbose #12660 > >
00:11:50 verbose #12661 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:11:50 verbose #12662 > > //// test
00:11:50 verbose #12663 > > ///! fsharp
00:11:50 verbose #12664 > > ///! cuda
00:11:50 verbose #12665 > > ///! rust
00:11:50 verbose #12666 > > ///! typescript
00:11:50 verbose #12667 > > ///! python
00:11:50 verbose #12668 > >
00:11:50 verbose #12669 > > ($'-3' : i32) /. ($'1' : i32)
00:11:50 verbose #12670 > > |> _assert_eq -3i32
00:12:01 verbose #12671 > >
00:12:01 verbose #12672 > > ╭─[ 10.69s - return value ]────────────────────────────────────────────────────╮
00:12:01 verbose #12673 > > │ .py output (Cuda):                                                           │
00:12:01 verbose #12674 > > │ __assert_eq / actual: -3.0 / expected: -3                                    │
00:12:01 verbose #12675 > > │                                                                              │
00:12:01 verbose #12676 > > │ .rs output:                                                                  │
00:12:01 verbose #12677 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:12:01 verbose #12678 > > │                                                                              │
00:12:01 verbose #12679 > > │ .ts output:                                                                  │
00:12:01 verbose #12680 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:12:01 verbose #12681 > > │                                                                              │
00:12:01 verbose #12682 > > │ .py output:                                                                  │
00:12:01 verbose #12683 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:12:01 verbose #12684 > > │                                                                              │
00:12:01 verbose #12685 > > │                                                                              │
00:12:01 verbose #12686 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:01 verbose #12687 > >
00:12:01 verbose #12688 > > ╭─[ 10.69s - stdout ]──────────────────────────────────────────────────────────╮
00:12:01 verbose #12689 > > │ .fsx output:                                                                 │
00:12:01 verbose #12690 > > │ __assert_eq / actual: -3 / expected: -3                                      │
00:12:01 verbose #12691 > > │                                                                              │
00:12:01 verbose #12692 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:01 verbose #12693 > >
00:12:01 verbose #12694 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:01 verbose #12695 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:01 verbose #12696 > > │ ## comparison                                                                │
00:12:01 verbose #12697 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:01 verbose #12698 > >
00:12:01 verbose #12699 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:01 verbose #12700 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:01 verbose #12701 > > │ ### (=.)                                                                     │
00:12:01 verbose #12702 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:01 verbose #12703 > >
00:12:01 verbose #12704 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:01 verbose #12705 > > inl (=.) forall t. (a : t) (b : t) : bool =
00:12:01 verbose #12706 > >     backend_switch {
00:12:01 verbose #12707 > >         Fsharp = fun () => $'!a = !b ' : bool
00:12:01 verbose #12708 > >         Python = fun () => $'!a == !b ' : bool
00:12:01 verbose #12709 > >     }
00:12:01 verbose #12710 > >
00:12:01 verbose #12711 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:01 verbose #12712 > > //// test
00:12:01 verbose #12713 > > ///! fsharp
00:12:01 verbose #12714 > > ///! cuda
00:12:01 verbose #12715 > > ///! rust
00:12:01 verbose #12716 > > ///! typescript
00:12:01 verbose #12717 > > ///! python
00:12:01 verbose #12718 > >
00:12:01 verbose #12719 > > ($'-3' : i32) =. ($'-3' : i32)
00:12:01 verbose #12720 > > |> _assert_eq true
00:12:12 verbose #12721 > >
00:12:12 verbose #12722 > > ╭─[ 11.10s - return value ]────────────────────────────────────────────────────╮
00:12:12 verbose #12723 > > │ .py output (Cuda):                                                           │
00:12:12 verbose #12724 > > │ __assert_eq / actual: True / expected: True                                  │
00:12:12 verbose #12725 > > │                                                                              │
00:12:12 verbose #12726 > > │ .rs output:                                                                  │
00:12:12 verbose #12727 > > │ __assert_eq / actual: true / expected: true                                  │
00:12:12 verbose #12728 > > │                                                                              │
00:12:12 verbose #12729 > > │ .ts output:                                                                  │
00:12:12 verbose #12730 > > │ __assert_eq / actual: true / expected: true                                  │
00:12:12 verbose #12731 > > │                                                                              │
00:12:12 verbose #12732 > > │ .py output:                                                                  │
00:12:12 verbose #12733 > > │ __assert_eq / actual: true / expected: true                                  │
00:12:12 verbose #12734 > > │                                                                              │
00:12:12 verbose #12735 > > │                                                                              │
00:12:12 verbose #12736 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:12 verbose #12737 > >
00:12:12 verbose #12738 > > ╭─[ 11.10s - stdout ]──────────────────────────────────────────────────────────╮
00:12:12 verbose #12739 > > │ .fsx output:                                                                 │
00:12:12 verbose #12740 > > │ __assert_eq / actual: true / expected: true                                  │
00:12:12 verbose #12741 > > │                                                                              │
00:12:12 verbose #12742 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:12 verbose #12743 > >
00:12:12 verbose #12744 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:12 verbose #12745 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:12 verbose #12746 > > │ ### (<>.)                                                                    │
00:12:12 verbose #12747 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:12 verbose #12748 > >
00:12:12 verbose #12749 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:12 verbose #12750 > > inl (<>.) forall t. (a : t) (b : t) : bool =
00:12:12 verbose #12751 > >     backend_switch {
00:12:12 verbose #12752 > >         Fsharp = fun () => $'!a <> !b ' : bool
00:12:12 verbose #12753 > >         Python = fun () => $'!a \!= !b ' : bool
00:12:12 verbose #12754 > >     }
00:12:12 verbose #12755 > >
00:12:12 verbose #12756 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:12 verbose #12757 > > //// test
00:12:12 verbose #12758 > > ///! fsharp
00:12:12 verbose #12759 > > ///! cuda
00:12:12 verbose #12760 > > ///! rust
00:12:12 verbose #12761 > > ///! typescript
00:12:12 verbose #12762 > > ///! python
00:12:12 verbose #12763 > >
00:12:12 verbose #12764 > > ($'-3' : i32) <>. ($'3' : i32)
00:12:12 verbose #12765 > > |> _assert_eq true
00:12:23 verbose #12766 > >
00:12:23 verbose #12767 > > ╭─[ 10.65s - return value ]────────────────────────────────────────────────────╮
00:12:23 verbose #12768 > > │ .py output (Cuda):                                                           │
00:12:23 verbose #12769 > > │ __assert_eq / actual: True / expected: True                                  │
00:12:23 verbose #12770 > > │                                                                              │
00:12:23 verbose #12771 > > │ .rs output:                                                                  │
00:12:23 verbose #12772 > > │ __assert_eq / actual: true / expected: true                                  │
00:12:23 verbose #12773 > > │                                                                              │
00:12:23 verbose #12774 > > │ .ts output:                                                                  │
00:12:23 verbose #12775 > > │ __assert_eq / actual: true / expected: true                                  │
00:12:23 verbose #12776 > > │                                                                              │
00:12:23 verbose #12777 > > │ .py output:                                                                  │
00:12:23 verbose #12778 > > │ __assert_eq / actual: true / expected: true                                  │
00:12:23 verbose #12779 > > │                                                                              │
00:12:23 verbose #12780 > > │                                                                              │
00:12:23 verbose #12781 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:23 verbose #12782 > >
00:12:23 verbose #12783 > > ╭─[ 10.65s - stdout ]──────────────────────────────────────────────────────────╮
00:12:23 verbose #12784 > > │ .fsx output:                                                                 │
00:12:23 verbose #12785 > > │ __assert_eq / actual: true / expected: true                                  │
00:12:23 verbose #12786 > > │                                                                              │
00:12:23 verbose #12787 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:23 verbose #12788 > >
00:12:23 verbose #12789 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:23 verbose #12790 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:23 verbose #12791 > > │ ## (<>..)                                                                    │
00:12:23 verbose #12792 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:23 verbose #12793 > >
00:12:23 verbose #12794 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:23 verbose #12795 > > inl (<>..) a b =
00:12:23 verbose #12796 > >     fun () => a = b
00:12:23 verbose #12797 > >     |> dyn
00:12:23 verbose #12798 > >     |> eval
00:12:23 verbose #12799 > >     |> not
00:12:23 verbose #12800 > >
00:12:23 verbose #12801 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:23 verbose #12802 > > //// test
00:12:23 verbose #12803 > > ///! fsharp
00:12:23 verbose #12804 > > ///! cuda
00:12:23 verbose #12805 > > ///! rust
00:12:23 verbose #12806 > > ///! typescript
00:12:23 verbose #12807 > > ///! python
00:12:23 verbose #12808 > >
00:12:23 verbose #12809 > > ($'-3' : i32) <>.. ($'3' : i32)
00:12:23 verbose #12810 > > |> _assert_eq true
00:12:34 verbose #12811 > >
00:12:34 verbose #12812 > > ╭─[ 10.66s - return value ]────────────────────────────────────────────────────╮
00:12:34 verbose #12813 > > │ .py output (Cuda):                                                           │
00:12:34 verbose #12814 > > │ __assert_eq / actual: True / expected: True                                  │
00:12:34 verbose #12815 > > │                                                                              │
00:12:34 verbose #12816 > > │ .rs output:                                                                  │
00:12:34 verbose #12817 > > │ __assert_eq / actual: true / expected: true                                  │
00:12:34 verbose #12818 > > │                                                                              │
00:12:34 verbose #12819 > > │ .ts output:                                                                  │
00:12:34 verbose #12820 > > │ __assert_eq / actual: true / expected: true                                  │
00:12:34 verbose #12821 > > │                                                                              │
00:12:34 verbose #12822 > > │ .py output:                                                                  │
00:12:34 verbose #12823 > > │ __assert_eq / actual: true / expected: true                                  │
00:12:34 verbose #12824 > > │                                                                              │
00:12:34 verbose #12825 > > │                                                                              │
00:12:34 verbose #12826 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:34 verbose #12827 > >
00:12:34 verbose #12828 > > ╭─[ 10.66s - stdout ]──────────────────────────────────────────────────────────╮
00:12:34 verbose #12829 > > │ .fsx output:                                                                 │
00:12:34 verbose #12830 > > │ __assert_eq / actual: true / expected: true                                  │
00:12:34 verbose #12831 > > │                                                                              │
00:12:34 verbose #12832 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:34 verbose #12833 > >
00:12:34 verbose #12834 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:34 verbose #12835 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:34 verbose #12836 > > │ ## composition                                                               │
00:12:34 verbose #12837 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:34 verbose #12838 > >
00:12:34 verbose #12839 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:34 verbose #12840 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:34 verbose #12841 > > │ ### append                                                                   │
00:12:34 verbose #12842 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:34 verbose #12843 > >
00:12:34 verbose #12844 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:34 verbose #12845 > > prototype append t : t -> t -> t
00:12:34 verbose #12846 > >
00:12:34 verbose #12847 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:34 verbose #12848 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:34 verbose #12849 > > │ ### (++)                                                                     │
00:12:34 verbose #12850 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:34 verbose #12851 > >
00:12:34 verbose #12852 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:34 verbose #12853 > > inl (++) a b =
00:12:34 verbose #12854 > >     b |> append a
00:12:34 verbose #12855 > >
00:12:34 verbose #12856 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:34 verbose #12857 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:34 verbose #12858 > > │ ## application                                                               │
00:12:34 verbose #12859 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:34 verbose #12860 > >
00:12:34 verbose #12861 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:34 verbose #12862 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:34 verbose #12863 > > │ ### (||>)                                                                    │
00:12:34 verbose #12864 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:34 verbose #12865 > >
00:12:34 verbose #12866 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:34 verbose #12867 > > inl (||>) (arg1, arg2) fn =
00:12:34 verbose #12868 > >     arg2 |> fn arg1
00:12:34 verbose #12869 > >
00:12:34 verbose #12870 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:34 verbose #12871 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:34 verbose #12872 > > │ ### fix_condition                                                            │
00:12:34 verbose #12873 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:34 verbose #12874 > >
00:12:34 verbose #12875 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:34 verbose #12876 > > inl fix_condition x a b =
00:12:34 verbose #12877 > >     if x ()
00:12:34 verbose #12878 > >     then a () |> fun x => $'(*' : ()
00:12:34 verbose #12879 > >     else
00:12:34 verbose #12880 > >         $'*) else' : ()
00:12:34 verbose #12881 > >         b () |> fun x => $'(*' : ()
00:12:34 verbose #12882 > >     |> fun x => $'*)' : ()
00:12:34 verbose #12883 > >
00:12:34 verbose #12884 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:34 verbose #12885 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:34 verbose #12886 > > │ ## type                                                                      │
00:12:34 verbose #12887 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:34 verbose #12888 > >
00:12:34 verbose #12889 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:34 verbose #12890 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:34 verbose #12891 > > │ ### infer                                                                    │
00:12:34 verbose #12892 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:34 verbose #12893 > >
00:12:34 verbose #12894 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:34 verbose #12895 > > nominal infer = $'_'
00:12:34 verbose #12896 > >
00:12:34 verbose #12897 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:34 verbose #12898 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:34 verbose #12899 > > │ ### infer'                                                                   │
00:12:34 verbose #12900 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:34 verbose #12901 > >
00:12:34 verbose #12902 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:34 verbose #12903 > > nominal infer' t = $'_'
00:12:34 verbose #12904 > >
00:12:34 verbose #12905 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:34 verbose #12906 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:34 verbose #12907 > > │ ### any                                                                      │
00:12:34 verbose #12908 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:34 verbose #12909 > >
00:12:34 verbose #12910 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:34 verbose #12911 > > nominal any = $'obj'
00:12:34 verbose #12912 > >
00:12:34 verbose #12913 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:34 verbose #12914 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:34 verbose #12915 > > │ ### unit                                                                     │
00:12:34 verbose #12916 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:34 verbose #12917 > >
00:12:34 verbose #12918 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:34 verbose #12919 > > nominal unit = $'unit'
00:12:34 verbose #12920 > >
00:12:34 verbose #12921 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:34 verbose #12922 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:34 verbose #12923 > > │ ### null                                                                     │
00:12:34 verbose #12924 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:34 verbose #12925 > >
00:12:34 verbose #12926 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:34 verbose #12927 > > inl null forall t. () : t =
00:12:34 verbose #12928 > >     backend_switch {
00:12:34 verbose #12929 > >         Fsharp = fun () => $'null |> unbox<`t>' : t
00:12:34 verbose #12930 > >         Python = fun () => $'None' : t
00:12:34 verbose #12931 > >     }
00:12:34 verbose #12932 > >
00:12:34 verbose #12933 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:34 verbose #12934 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:34 verbose #12935 > > │ ### defaultof                                                                │
00:12:34 verbose #12936 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:34 verbose #12937 > >
00:12:34 verbose #12938 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:34 verbose #12939 > > inl defaultof forall t. () : t =
00:12:34 verbose #12940 > >     $'Unchecked.defaultof<`t>'
00:12:34 verbose #12941 > >
00:12:34 verbose #12942 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:34 verbose #12943 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:34 verbose #12944 > > │ ### choice2'                                                                 │
00:12:34 verbose #12945 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:34 verbose #12946 > >
00:12:34 verbose #12947 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:34 verbose #12948 > > nominal choice2' a b = $'Choice<`a, `b>'
00:12:34 verbose #12949 > >
00:12:34 verbose #12950 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:34 verbose #12951 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:34 verbose #12952 > > │ ### choice2_unbox                                                            │
00:12:34 verbose #12953 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:34 verbose #12954 > >
00:12:34 verbose #12955 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:34 verbose #12956 > > inl choice2_unbox forall t1 t2. (choice : choice2' t1 t2) : choice2 t1 t2 =
00:12:34 verbose #12957 > >     run_target function
00:12:34 verbose #12958 > >         | Fsharp (Native) => fun () =>
00:12:34 verbose #12959 > >             inl c1of2 (x : t1) : _ _ t2 = C1of2 x
00:12:34 verbose #12960 > >             inl c2of2 (x : t2) : _ t1 _ = C2of2 x
00:12:34 verbose #12961 > >             $'match !choice with Choice1Of2 x -> !c1of2 x | Choice2Of2 x ->
00:12:34 verbose #12962 > > !c2of2 x'
00:12:34 verbose #12963 > >         | _ => fun () => null ()
00:12:35 verbose #12964 > >
00:12:35 verbose #12965 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:35 verbose #12966 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:35 verbose #12967 > > │ ## pair                                                                      │
00:12:35 verbose #12968 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:35 verbose #12969 > >
00:12:35 verbose #12970 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:35 verbose #12971 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:35 verbose #12972 > > │ ### pair                                                                     │
00:12:35 verbose #12973 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:35 verbose #12974 > >
00:12:35 verbose #12975 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:35 verbose #12976 > > nominal pair a b = $'(`a * `b)'
00:12:35 verbose #12977 > >
00:12:35 verbose #12978 > > inl pair x y =
00:12:35 verbose #12979 > >     x, y
00:12:35 verbose #12980 > >
00:12:35 verbose #12981 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:35 verbose #12982 > > //// test
00:12:35 verbose #12983 > > ///! fsharp
00:12:35 verbose #12984 > > ///! cuda
00:12:35 verbose #12985 > > ///! rust
00:12:35 verbose #12986 > > ///! typescript
00:12:35 verbose #12987 > > ///! python
00:12:35 verbose #12988 > >
00:12:35 verbose #12989 > > pair 1i32 2i32
00:12:35 verbose #12990 > > |> _assert_eq (1, 2)
00:12:46 verbose #12991 > >
00:12:46 verbose #12992 > > ╭─[ 10.92s - return value ]────────────────────────────────────────────────────╮
00:12:46 verbose #12993 > > │ .py output (Cuda):                                                           │
00:12:46 verbose #12994 > > │ __assert_eq / actual: (1, 2) / expected: (1, 2)                              │
00:12:46 verbose #12995 > > │                                                                              │
00:12:46 verbose #12996 > > │ .rs output:                                                                  │
00:12:46 verbose #12997 > > │ __assert_eq / actual: (1, 2) / expected: (1, 2)                              │
00:12:46 verbose #12998 > > │                                                                              │
00:12:46 verbose #12999 > > │ .ts output:                                                                  │
00:12:46 verbose #13000 > > │ __assert_eq / actual: 1,2 / expected: 1,2                                    │
00:12:46 verbose #13001 > > │                                                                              │
00:12:46 verbose #13002 > > │ .py output:                                                                  │
00:12:46 verbose #13003 > > │ __assert_eq / actual: (1, 2) / expected: (1, 2)                              │
00:12:46 verbose #13004 > > │                                                                              │
00:12:46 verbose #13005 > > │                                                                              │
00:12:46 verbose #13006 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:46 verbose #13007 > >
00:12:46 verbose #13008 > > ╭─[ 10.92s - stdout ]──────────────────────────────────────────────────────────╮
00:12:46 verbose #13009 > > │ .fsx output:                                                                 │
00:12:46 verbose #13010 > > │ __assert_eq / actual: struct (1, 2) / expected: struct (1, 2)                │
00:12:46 verbose #13011 > > │                                                                              │
00:12:46 verbose #13012 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:46 verbose #13013 > >
00:12:46 verbose #13014 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:46 verbose #13015 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:46 verbose #13016 > > │ ### new_pair                                                                 │
00:12:46 verbose #13017 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:46 verbose #13018 > >
00:12:46 verbose #13019 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:46 verbose #13020 > > inl new_pair forall a b. (a : a) (b : b) : pair a b =
00:12:46 verbose #13021 > >     $'!a, !b '
00:12:46 verbose #13022 > >
00:12:46 verbose #13023 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:46 verbose #13024 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:46 verbose #13025 > > │ ### from_pair                                                                │
00:12:46 verbose #13026 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:46 verbose #13027 > >
00:12:46 verbose #13028 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:46 verbose #13029 > > inl from_pair forall a b. (pair : pair a b) : a * b =
00:12:46 verbose #13030 > >     backend_switch {
00:12:46 verbose #13031 > >         Fsharp = fun () =>
00:12:46 verbose #13032 > >             $'let (a, b) = !pair '
00:12:46 verbose #13033 > >             ($'a' : a), ($'b' : b)
00:12:46 verbose #13034 > >         Python = fun () =>
00:12:46 verbose #13035 > >             $'a, b = !pair '
00:12:46 verbose #13036 > >             ($'a' : a), ($'b' : b)
00:12:46 verbose #13037 > >     }
00:12:46 verbose #13038 > >
00:12:46 verbose #13039 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:46 verbose #13040 > > //// test
00:12:46 verbose #13041 > > ///! fsharp
00:12:46 verbose #13042 > > ///! cuda
00:12:46 verbose #13043 > > ///! rust
00:12:46 verbose #13044 > > ///! typescript
00:12:46 verbose #13045 > > ///! python
00:12:46 verbose #13046 > >
00:12:46 verbose #13047 > > new_pair "a" (new_pair 1i32 "b")
00:12:46 verbose #13048 > > |> from_pair
00:12:46 verbose #13049 > > |> _assert_eq' ("a", (new_pair 1i32 "b"))
00:12:56 verbose #13050 > >
00:12:56 verbose #13051 > > ╭─[ 10.44s - return value ]────────────────────────────────────────────────────╮
00:12:56 verbose #13052 > > │ .py output (Cuda):                                                           │
00:12:56 verbose #13053 > > │ __assert_eq' / actual: ('a', (1, 'b')) / expected: ('a', (1, 'b'))           │
00:12:56 verbose #13054 > > │                                                                              │
00:12:56 verbose #13055 > > │ .rs output:                                                                  │
00:12:56 verbose #13056 > > │ __assert_eq' / actual: ("a", (1, "b")) / expected: ("a", (1, "b"))           │
00:12:56 verbose #13057 > > │                                                                              │
00:12:56 verbose #13058 > > │ .ts output:                                                                  │
00:12:56 verbose #13059 > > │ __assert_eq' / actual: a,1,b / expected: a,1,b                               │
00:12:56 verbose #13060 > > │                                                                              │
00:12:56 verbose #13061 > > │ .py output:                                                                  │
00:12:56 verbose #13062 > > │ __assert_eq' / actual: ('a', (1, 'b')) / expected: ('a', (1, 'b'))           │
00:12:56 verbose #13063 > > │                                                                              │
00:12:56 verbose #13064 > > │                                                                              │
00:12:56 verbose #13065 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:56 verbose #13066 > >
00:12:56 verbose #13067 > > ╭─[ 10.44s - stdout ]──────────────────────────────────────────────────────────╮
00:12:56 verbose #13068 > > │ .fsx output:                                                                 │
00:12:56 verbose #13069 > > │ __assert_eq' / actual: struct ("a", (1, "b")) / expected: struct ("a", (1,   │
00:12:56 verbose #13070 > > │ "b"))                                                                        │
00:12:56 verbose #13071 > > │                                                                              │
00:12:56 verbose #13072 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:56 verbose #13073 > >
00:12:56 verbose #13074 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:56 verbose #13075 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:56 verbose #13076 > > │ ## ref                                                                       │
00:12:56 verbose #13077 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:56 verbose #13078 > >
00:12:56 verbose #13079 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:56 verbose #13080 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:56 verbose #13081 > > │ ### ref                                                                      │
00:12:56 verbose #13082 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:56 verbose #13083 > >
00:12:56 verbose #13084 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:56 verbose #13085 > > nominal ref t = $'`t ref'
00:12:56 verbose #13086 > >
00:12:56 verbose #13087 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:56 verbose #13088 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:56 verbose #13089 > > │ ### new_ref                                                                  │
00:12:56 verbose #13090 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:56 verbose #13091 > >
00:12:56 verbose #13092 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:56 verbose #13093 > > inl new_ref forall t. (x : t) : ref t =
00:12:56 verbose #13094 > >     $'ref !x '
00:12:56 verbose #13095 > >
00:12:56 verbose #13096 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:56 verbose #13097 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:56 verbose #13098 > > │ ### ref_value                                                                │
00:12:56 verbose #13099 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:56 verbose #13100 > >
00:12:56 verbose #13101 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:56 verbose #13102 > > inl ref_value forall t. (x : ref t) : t =
00:12:56 verbose #13103 > >     $'!x.Value'
00:12:56 verbose #13104 > >
00:12:56 verbose #13105 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:56 verbose #13106 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:56 verbose #13107 > > │ ### ref_set_value                                                            │
00:12:56 verbose #13108 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:56 verbose #13109 > >
00:12:56 verbose #13110 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:56 verbose #13111 > > inl ref_set_value forall t. (value : t) (ref : ref t) : ref t =
00:12:56 verbose #13112 > >     $'!ref.Value <- !value '
00:12:56 verbose #13113 > >     ref
00:12:57 verbose #13114 > >
00:12:57 verbose #13115 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:57 verbose #13116 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:57 verbose #13117 > > │ ## convert                                                                   │
00:12:57 verbose #13118 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:57 verbose #13119 > >
00:12:57 verbose #13120 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:57 verbose #13121 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:57 verbose #13122 > > │ ### convert                                                                  │
00:12:57 verbose #13123 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:57 verbose #13124 > >
00:12:57 verbose #13125 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:57 verbose #13126 > > inl convert forall t u. (x : t) : u =
00:12:57 verbose #13127 > >     backend_switch {
00:12:57 verbose #13128 > >         Fsharp = fun () => $'!x |> `u ' : u
00:12:57 verbose #13129 > >         Python = fun () => $'!x ' : u
00:12:57 verbose #13130 > >     }
00:12:57 verbose #13131 > >
00:12:57 verbose #13132 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:57 verbose #13133 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:57 verbose #13134 > > │ ### unbox                                                                    │
00:12:57 verbose #13135 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:57 verbose #13136 > >
00:12:57 verbose #13137 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:57 verbose #13138 > > inl unbox forall t u. (x : t) : u =
00:12:57 verbose #13139 > >     backend_switch {
00:12:57 verbose #13140 > >         Fsharp = fun () => $'!x |> unbox<`u>' : u
00:12:57 verbose #13141 > >         Python = fun () => $'!x ' : u
00:12:57 verbose #13142 > >     }
00:12:57 verbose #13143 > >
00:12:57 verbose #13144 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:57 verbose #13145 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:57 verbose #13146 > > │ ### u8                                                                       │
00:12:57 verbose #13147 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:57 verbose #13148 > >
00:12:57 verbose #13149 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:57 verbose #13150 > > inl u8 forall t. (x : t) : u8 =
00:12:57 verbose #13151 > >     x |> $'uint8'
00:12:57 verbose #13152 > >
00:12:57 verbose #13153 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:57 verbose #13154 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:57 verbose #13155 > > │ ### u16                                                                      │
00:12:57 verbose #13156 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:57 verbose #13157 > >
00:12:57 verbose #13158 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:57 verbose #13159 > > inl u16 forall t. (x : t) : u16 =
00:12:57 verbose #13160 > >     x |> $'uint16'
00:12:57 verbose #13161 > >
00:12:57 verbose #13162 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:57 verbose #13163 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:57 verbose #13164 > > │ ### u64                                                                      │
00:12:57 verbose #13165 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:57 verbose #13166 > >
00:12:57 verbose #13167 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:57 verbose #13168 > > inl u64 forall t. (x : t) : u64 =
00:12:57 verbose #13169 > >     x |> $'uint64'
00:12:57 verbose #13170 > >
00:12:57 verbose #13171 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:57 verbose #13172 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:57 verbose #13173 > > │ ### i32                                                                      │
00:12:57 verbose #13174 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:57 verbose #13175 > >
00:12:57 verbose #13176 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:57 verbose #13177 > > inl i32 forall t. (x : t) : i32 =
00:12:57 verbose #13178 > >     x |> $'int32'
00:12:57 verbose #13179 > >
00:12:57 verbose #13180 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:57 verbose #13181 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:57 verbose #13182 > > │ ### i64                                                                      │
00:12:57 verbose #13183 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:57 verbose #13184 > >
00:12:57 verbose #13185 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:57 verbose #13186 > > inl i64 forall t. (x : t) : i64 =
00:12:57 verbose #13187 > >     x |> $'int64'
00:12:57 verbose #13188 > >
00:12:57 verbose #13189 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:57 verbose #13190 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:57 verbose #13191 > > │ ### f32                                                                      │
00:12:57 verbose #13192 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:57 verbose #13193 > >
00:12:57 verbose #13194 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:57 verbose #13195 > > inl f32 forall t. (x : t) : f32 =
00:12:57 verbose #13196 > >     x |> $'float32'
00:12:57 verbose #13197 > >
00:12:57 verbose #13198 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:57 verbose #13199 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:57 verbose #13200 > > │ ### f64                                                                      │
00:12:57 verbose #13201 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:57 verbose #13202 > >
00:12:57 verbose #13203 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:57 verbose #13204 > > inl f64 forall t. (x : t) : f64 =
00:12:57 verbose #13205 > >     x |> $'float'
00:12:57 verbose #13206 > >
00:12:57 verbose #13207 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:57 verbose #13208 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:57 verbose #13209 > > │ ### unativeint                                                               │
00:12:57 verbose #13210 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:57 verbose #13211 > >
00:12:57 verbose #13212 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:57 verbose #13213 > > nominal unativeint = $'unativeint'
00:12:57 verbose #13214 > >
00:12:57 verbose #13215 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:57 verbose #13216 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:57 verbose #13217 > > │ ### convert_i32                                                              │
00:12:57 verbose #13218 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:57 verbose #13219 > >
00:12:57 verbose #13220 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:57 verbose #13221 > > inl convert_i32 forall t. (x : t) : i32 =
00:12:57 verbose #13222 > >     x |> $'System.Convert.ToInt32'
00:12:57 verbose #13223 > >
00:12:57 verbose #13224 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:57 verbose #13225 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:57 verbose #13226 > > │ ### convert_i32_base                                                         │
00:12:57 verbose #13227 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:57 verbose #13228 > >
00:12:57 verbose #13229 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:57 verbose #13230 > > inl convert_i32_base forall t. (base : i32) (x : t) : i32 =
00:12:57 verbose #13231 > >     $'System.Convert.ToInt32 (!x, !base)'
00:12:58 verbose #13232 > >
00:12:58 verbose #13233 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:58 verbose #13234 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:58 verbose #13235 > > │ ## error                                                                     │
00:12:58 verbose #13236 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:58 verbose #13237 > >
00:12:58 verbose #13238 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:58 verbose #13239 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:58 verbose #13240 > > │ ### exn                                                                      │
00:12:58 verbose #13241 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:58 verbose #13242 > >
00:12:58 verbose #13243 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:58 verbose #13244 > > nominal exn = $"backend_switch `({ Fsharp : $'exn'; Python : $'BaseException'
00:12:58 verbose #13245 > > })"
00:12:58 verbose #13246 > >
00:12:58 verbose #13247 > > inl exn x =
00:12:58 verbose #13248 > >     x |> $'`exn '
00:12:58 verbose #13249 > >
00:12:58 verbose #13250 > > ── markdown ────────────────────────────────────────────────────────────────────
00:12:58 verbose #13251 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:12:58 verbose #13252 > > │ ### try                                                                      │
00:12:58 verbose #13253 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:12:58 verbose #13254 > >
00:12:58 verbose #13255 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:58 verbose #13256 > > inl try forall t. (fn : () -> t) (ex_fn : exn -> option t) : option t =
00:12:58 verbose #13257 > >     backend_switch {
00:12:58 verbose #13258 > >         Fsharp = fun () =>
00:12:58 verbose #13259 > >             inl some x : option t = Some x
00:12:58 verbose #13260 > >             inl some = dyn some
00:12:58 verbose #13261 > >             inl fn = dyn fn
00:12:58 verbose #13262 > >             inl ex_fn = dyn ex_fn
00:12:58 verbose #13263 > >             $'let result = ref !(None : option t)'
00:12:58 verbose #13264 > >             $'try'
00:12:58 verbose #13265 > >             $'    result.Value <- !fn () |> !some '
00:12:58 verbose #13266 > >             $'with ex ->'
00:12:58 verbose #13267 > >             $'    result.Value <- !ex_fn ex '
00:12:58 verbose #13268 > >             $'result.Value' : option t
00:12:58 verbose #13269 > >         Python = fun () =>
00:12:58 verbose #13270 > >             $'result = !(None : option t)'
00:12:58 verbose #13271 > >             inl fn = dyn fn
00:12:58 verbose #13272 > >             inl ex_fn = dyn ex_fn
00:12:58 verbose #13273 > >             $'try:'
00:12:58 verbose #13274 > >             $'    result = !fn()\n        \'\'\''
00:12:58 verbose #13275 > >             $'\'\'\''
00:12:58 verbose #13276 > >             $'except Exception as e:'
00:12:58 verbose #13277 > >             $'    result = !ex_fn(e)'
00:12:58 verbose #13278 > >             $'result' : option t
00:12:58 verbose #13279 > >     }
00:12:58 verbose #13280 > >
00:12:58 verbose #13281 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:12:58 verbose #13282 > > //// test
00:12:58 verbose #13283 > > ///! fsharp
00:12:58 verbose #13284 > > ////! cuda // cudaErrorInsufficientDriver: CUDA driver version is insufficient
00:12:58 verbose #13285 > > for CUDA runtime version
00:12:58 verbose #13286 > > ///! rust
00:12:58 verbose #13287 > > ///! typescript
00:12:58 verbose #13288 > > ///! python
00:12:58 verbose #13289 > >
00:12:58 verbose #13290 > > try
00:12:58 verbose #13291 > >     fun () => a ;[[ 0i32 ]] |> am'.index 1i32 |> sm'.format
00:12:58 verbose #13292 > >     (fun ex => $'!ex ' |> sm'.format_exception |> Some)
00:12:58 verbose #13293 > > |> optionm.value
00:12:58 verbose #13294 > > |> _assert_eq (run_target function
00:12:58 verbose #13295 > >     | Fsharp => fun () => "System.IndexOutOfRangeException: Index was outside
00:12:58 verbose #13296 > > the bounds of the array."
00:12:58 verbose #13297 > >     | Cuda => fun () => "array index out of range"
00:12:58 verbose #13298 > >     | Rust => fun () => "Exception { message: \"index out of bounds: the len is
00:12:58 verbose #13299 > > 1 but the index is 1\" }"
00:12:58 verbose #13300 > >     | TypeScript => fun () => "Error: Index was outside the bounds of the
00:12:58 verbose #13301 > > array.\\nParameter name: index"
00:12:58 verbose #13302 > >     | Python => fun () => "array index out of range"
00:12:58 verbose #13303 > > )
00:13:09 verbose #13304 > >
00:13:09 verbose #13305 > > ╭─[ 10.98s - return value ]────────────────────────────────────────────────────╮
00:13:09 verbose #13306 > > │ .rs output:                                                                  │
00:13:09 verbose #13307 > > │ __assert_eq / actual: "Exception { message: "index out of bounds: the len is │
00:13:09 verbose #13308 > > │ 1 but the index is 1" }" / expected: "Exception { message: "index out of     │
00:13:09 verbose #13309 > > │ bounds: the len is 1 but the index is 1" }"                                  │
00:13:09 verbose #13310 > > │                                                                              │
00:13:09 verbose #13311 > > │ .ts output:                                                                  │
00:13:09 verbose #13312 > > │ __assert_eq / actual: Error: Index was outside the bounds of the             │
00:13:09 verbose #13313 > > │ array.\nParameter name: index / expected: Error: Index was outside the       │
00:13:09 verbose #13314 > > │ bounds of the array.\nParameter name: index                                  │
00:13:09 verbose #13315 > > │                                                                              │
00:13:09 verbose #13316 > > │ .py output:                                                                  │
00:13:09 verbose #13317 > > │ __assert_eq / actual: array index out of range / expected: array index out   │
00:13:09 verbose #13318 > > │ of range                                                                     │
00:13:09 verbose #13319 > > │                                                                              │
00:13:09 verbose #13320 > > │                                                                              │
00:13:09 verbose #13321 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:09 verbose #13322 > >
00:13:09 verbose #13323 > > ╭─[ 10.98s - stdout ]──────────────────────────────────────────────────────────╮
00:13:09 verbose #13324 > > │ .fsx output:                                                                 │
00:13:09 verbose #13325 > > │ __assert_eq / actual: "System.IndexOutOfRangeException: Index was outside    │
00:13:09 verbose #13326 > > │ the bounds of the array." / expected: "System.IndexOutOfRangeException:      │
00:13:09 verbose #13327 > > │ Index was outside the bounds of the array."                                  │
00:13:09 verbose #13328 > > │                                                                              │
00:13:09 verbose #13329 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:09 verbose #13330 > >
00:13:09 verbose #13331 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:09 verbose #13332 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:09 verbose #13333 > > │ ### try_unit                                                                 │
00:13:09 verbose #13334 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:09 verbose #13335 > >
00:13:09 verbose #13336 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:09 verbose #13337 > > inl try_unit forall t. (fn : () -> ()) (ex_fn : exn -> ()) : t =
00:13:09 verbose #13338 > >     $'try'
00:13:09 verbose #13339 > >     fn ()
00:13:09 verbose #13340 > >     |> ignore
00:13:09 verbose #13341 > >     $'with ex ->'
00:13:09 verbose #13342 > >     ex_fn $'ex'
00:13:09 verbose #13343 > >     |> ignore
00:13:09 verbose #13344 > >     $'(*'
00:13:09 verbose #13345 > >     $'*)'
00:13:09 verbose #13346 > >
00:13:09 verbose #13347 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:09 verbose #13348 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:09 verbose #13349 > > │ ### try_finally                                                              │
00:13:09 verbose #13350 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:09 verbose #13351 > >
00:13:09 verbose #13352 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:09 verbose #13353 > > inl try_finally forall t. (fn : () -> ()) (finally : () -> ()) : t =
00:13:09 verbose #13354 > >     $'try'
00:13:09 verbose #13355 > >     fn ()
00:13:09 verbose #13356 > >     |> ignore
00:13:09 verbose #13357 > >     $'finally'
00:13:09 verbose #13358 > >     finally ()
00:13:09 verbose #13359 > >     |> ignore
00:13:09 verbose #13360 > >     $'(*'
00:13:09 verbose #13361 > >     $'*)'
00:13:10 verbose #13362 > 00:02:21 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 69703 }
00:13:10 verbose #13363 > 00:02:21   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:13:10 verbose #13364 >     "nbconvert",
00:13:10 verbose #13365 >     "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb",
00:13:10 verbose #13366 >     "--to",
00:13:10 verbose #13367 >     "html",
00:13:10 verbose #13368 >     "--HTMLExporter.theme=dark",
00:13:10 verbose #13369 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:10 verbose #13370 > 00:02:21 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb to html
00:13:10 verbose #13371 > 00:02:21 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:13:10 verbose #13372 > 00:02:21 verbose #7 !   validate(nb)
00:13:11 verbose #13373 > 00:02:22 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:13:11 verbose #13374 > 00:02:22 verbose #9 !   return _pygments_highlight(
00:13:11 verbose #13375 > 00:02:22 verbose #10 ! [NbConvertApp] Writing 410422 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/base.dib.html
00:13:11 verbose #13376 > 00:02:22 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 }
00:13:11 verbose #13377 > 00:02:22   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 }
00:13:11 verbose #13378 > 00:02:22   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:13:11 verbose #13379 >     "-c",
00:13:11 verbose #13380 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:13:11 verbose #13381 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:11 verbose #13382 > 00:02:23 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:13:11 verbose #13383 > 00:02:23   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:13:11 verbose #13384 > 00:02:23   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 70654 }
00:13:12   debug #13385 runtime.execute_with_options_async / { exit_code = 0; output_length = 75774 }
00:13:11   debug #15 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path base.dib --retries 3
00:13:12   debug #13386 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path date_time.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:12 verbose #13387 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "date_time.dib", "--retries", "3"])) }
00:13:12 verbose #13388 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:13:12 verbose #13389 >     "repl",
00:13:12 verbose #13390 >     "--exit-after-run",
00:13:12 verbose #13391 >     "--run",
00:13:12 verbose #13392 >     "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib",
00:13:12 verbose #13393 >     "--output-path",
00:13:12 verbose #13394 >     "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb",
00:13:12 verbose #13395 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:13:13 verbose #13396 > >
00:13:13 verbose #13397 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:13 verbose #13398 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:13 verbose #13399 > > │ # date_time                                                                  │
00:13:13 verbose #13400 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:15 verbose #13401 > >
00:13:15 verbose #13402 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:15 verbose #13403 > > open rust.rust_operators
00:13:15 verbose #13404 > > open sm'_operators
00:13:16 verbose #13405 > >
00:13:16 verbose #13406 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:16 verbose #13407 > > //// test
00:13:16 verbose #13408 > >
00:13:16 verbose #13409 > > open testing
00:13:16 verbose #13410 > >
00:13:16 verbose #13411 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:16 verbose #13412 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:16 verbose #13413 > > │ ## date_time                                                                 │
00:13:16 verbose #13414 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:16 verbose #13415 > >
00:13:16 verbose #13416 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:16 verbose #13417 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:16 verbose #13418 > > │ ### timestamp                                                                │
00:13:16 verbose #13419 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:16 verbose #13420 > >
00:13:16 verbose #13421 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:16 verbose #13422 > > nominal timestamp = i64
00:13:16 verbose #13423 > >
00:13:16 verbose #13424 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:16 verbose #13425 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:16 verbose #13426 > > │ ### timestamp_guid                                                           │
00:13:16 verbose #13427 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:16 verbose #13428 > >
00:13:16 verbose #13429 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:16 verbose #13430 > > type timestamp_guid = guid.guid
00:13:16 verbose #13431 > >
00:13:16 verbose #13432 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:16 verbose #13433 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:16 verbose #13434 > > │ ### date_time_guid                                                           │
00:13:16 verbose #13435 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:16 verbose #13436 > >
00:13:16 verbose #13437 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:16 verbose #13438 > > type date_time_guid = guid.guid
00:13:16 verbose #13439 > >
00:13:16 verbose #13440 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:16 verbose #13441 > > //// test
00:13:16 verbose #13442 > >
00:13:16 verbose #13443 > > inl test_guid () =
00:13:16 verbose #13444 > >     guid.new_guid "FEDCBA98-7654-3210-FEDC-BA9876543210"
00:13:16 verbose #13445 > >
00:13:16 verbose #13446 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:16 verbose #13447 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:16 verbose #13448 > > │ ## fsharp                                                                    │
00:13:16 verbose #13449 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:16 verbose #13450 > >
00:13:16 verbose #13451 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:16 verbose #13452 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:16 verbose #13453 > > │ ### date_time                                                                │
00:13:16 verbose #13454 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:16 verbose #13455 > >
00:13:16 verbose #13456 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:16 verbose #13457 > > nominal date_time_python =
00:13:16 verbose #13458 > >     `(
00:13:16 verbose #13459 > >         backend_switch {
00:13:16 verbose #13460 > >             Python = fun () =>
00:13:16 verbose #13461 > >                 global "import datetime"
00:13:16 verbose #13462 > >         }
00:13:16 verbose #13463 > >         $'' : $'datetime.datetime'
00:13:16 verbose #13464 > >     )
00:13:16 verbose #13465 > > type date_time_switch =
00:13:16 verbose #13466 > >     {
00:13:16 verbose #13467 > >         Fsharp : $'System.DateTime'
00:13:16 verbose #13468 > >         Python : date_time_python
00:13:16 verbose #13469 > >     }
00:13:16 verbose #13470 > > nominal date_time = $'backend_switch `(date_time_switch)'
00:13:17 verbose #13471 > >
00:13:17 verbose #13472 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:17 verbose #13473 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:17 verbose #13474 > > │ ### date_time_milliseconds                                                   │
00:13:17 verbose #13475 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:17 verbose #13476 > >
00:13:17 verbose #13477 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:17 verbose #13478 > > inl date_time_milliseconds
00:13:17 verbose #13479 > >     (year : int) (month : int) (day : int) (hour : int) (minute : int) (second :
00:13:17 verbose #13480 > > int) (millisecond : int)
00:13:17 verbose #13481 > >     : date_time
00:13:17 verbose #13482 > >     =
00:13:17 verbose #13483 > >     backend_switch {
00:13:17 verbose #13484 > >         Fsharp = fun () =>
00:13:17 verbose #13485 > >             $'System.DateTime (!year, !month, !day, !hour, !minute, !second,
00:13:17 verbose #13486 > > !millisecond)' : date_time
00:13:17 verbose #13487 > >         Python = fun () =>
00:13:17 verbose #13488 > >             $'datetime.datetime(!year, !month, !day, !hour, !minute, !second,
00:13:17 verbose #13489 > > !millisecond)' : date_time
00:13:17 verbose #13490 > >     }
00:13:17 verbose #13491 > >
00:13:17 verbose #13492 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:17 verbose #13493 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:17 verbose #13494 > > │ ### date_time_utc                                                            │
00:13:17 verbose #13495 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:17 verbose #13496 > >
00:13:17 verbose #13497 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:17 verbose #13498 > > inl date_time_utc
00:13:17 verbose #13499 > >     (year : int) (month : int) (day : int) (hour : int) (minute : int) (second :
00:13:17 verbose #13500 > > int)
00:13:17 verbose #13501 > >     : date_time
00:13:17 verbose #13502 > >     =
00:13:17 verbose #13503 > >     backend_switch {
00:13:17 verbose #13504 > >         Fsharp = fun () =>
00:13:17 verbose #13505 > >             $'System.DateTime (!year, !month, !day, !hour, !minute, !second,
00:13:17 verbose #13506 > > System.DateTimeKind.Utc)' : date_time
00:13:17 verbose #13507 > >         Python = fun () =>
00:13:17 verbose #13508 > >             $'datetime.datetime(!year, !month, !day, !hour, !minute, !second,
00:13:17 verbose #13509 > > tzinfo=datetime.timezone.utc)' : date_time
00:13:17 verbose #13510 > >     }
00:13:17 verbose #13511 > >
00:13:17 verbose #13512 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:17 verbose #13513 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:17 verbose #13514 > > │ ### ticks                                                                    │
00:13:17 verbose #13515 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:17 verbose #13516 > >
00:13:17 verbose #13517 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:17 verbose #13518 > > inl ticks (date_time : date_time) : timestamp =
00:13:17 verbose #13519 > >     backend_switch {
00:13:17 verbose #13520 > >         Fsharp = fun () => date_time |> $'_.Ticks' : timestamp
00:13:17 verbose #13521 > >         Python = fun () => $'!date_time.timestamp()' : timestamp
00:13:17 verbose #13522 > >     }
00:13:17 verbose #13523 > >
00:13:17 verbose #13524 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:17 verbose #13525 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:17 verbose #13526 > > │ ### format                                                                   │
00:13:17 verbose #13527 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:17 verbose #13528 > >
00:13:17 verbose #13529 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:17 verbose #13530 > > inl format (format : string) (date_time : date_time) : string =
00:13:17 verbose #13531 > >     backend_switch {
00:13:17 verbose #13532 > >         Fsharp = fun () => $'!date_time.ToString' format : string
00:13:17 verbose #13533 > >         Python = fun () => $'!date_time.strftime(!format)' : string
00:13:17 verbose #13534 > >     }
00:13:17 verbose #13535 > >
00:13:17 verbose #13536 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:17 verbose #13537 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:17 verbose #13538 > > │ ### format_iso8601                                                           │
00:13:17 verbose #13539 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:17 verbose #13540 > >
00:13:17 verbose #13541 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:17 verbose #13542 > > inl format_iso8601 (date_time : date_time) : string =
00:13:17 verbose #13543 > >     backend_switch {
00:13:17 verbose #13544 > >         Fsharp = fun () => date_time |> format "yyyy-MM-ddTHH-mm-ss.fff" :
00:13:17 verbose #13545 > > string
00:13:17 verbose #13546 > >         Python = fun () => date_time |> format "%Y-%m-%dT%H-%M-%S.%f" : string
00:13:17 verbose #13547 > >     }
00:13:17 verbose #13548 > >
00:13:17 verbose #13549 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:17 verbose #13550 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:17 verbose #13551 > > │ ### min_value                                                                │
00:13:17 verbose #13552 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:17 verbose #13553 > >
00:13:17 verbose #13554 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:17 verbose #13555 > > inl min_value () : date_time =
00:13:17 verbose #13556 > >     backend_switch {
00:13:17 verbose #13557 > >         Fsharp = fun () => $'System.DateTime.MinValue' : date_time
00:13:17 verbose #13558 > >         Python = fun () => $'datetime.datetime.min' : date_time
00:13:17 verbose #13559 > >     }
00:13:17 verbose #13560 > >
00:13:17 verbose #13561 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:17 verbose #13562 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:17 verbose #13563 > > │ ### max_value                                                                │
00:13:17 verbose #13564 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:17 verbose #13565 > >
00:13:17 verbose #13566 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:17 verbose #13567 > > inl max_value () : date_time =
00:13:17 verbose #13568 > >     backend_switch {
00:13:17 verbose #13569 > >         Fsharp = fun () => $'System.DateTime.MaxValue' : date_time
00:13:17 verbose #13570 > >         Python = fun () => $'datetime.datetime.max' : date_time
00:13:17 verbose #13571 > >     }
00:13:17 verbose #13572 > >
00:13:17 verbose #13573 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:17 verbose #13574 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:17 verbose #13575 > > │ ### unix_epoch                                                               │
00:13:17 verbose #13576 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:17 verbose #13577 > >
00:13:17 verbose #13578 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:17 verbose #13579 > > inl unix_epoch () : date_time =
00:13:17 verbose #13580 > >     backend_switch {
00:13:17 verbose #13581 > >         Fsharp = fun () => $'System.DateTime.UnixEpoch' : date_time
00:13:17 verbose #13582 > >         Python = fun () => $'datetime.datetime(1970, 1, 1)' : date_time
00:13:17 verbose #13583 > >     }
00:13:17 verbose #13584 > >
00:13:17 verbose #13585 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:17 verbose #13586 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:17 verbose #13587 > > │ ### to_universal_time                                                        │
00:13:17 verbose #13588 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:17 verbose #13589 > >
00:13:17 verbose #13590 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:17 verbose #13591 > > inl to_universal_time (date_time : date_time) : date_time =
00:13:17 verbose #13592 > >     backend_switch {
00:13:17 verbose #13593 > >         Fsharp = fun () => date_time |> $'_.ToUniversalTime()' : date_time
00:13:17 verbose #13594 > >         Python = fun () => $'!date_time.astimezone(datetime.timezone.utc)' :
00:13:17 verbose #13595 > > date_time
00:13:17 verbose #13596 > >     }
00:13:17 verbose #13597 > >
00:13:17 verbose #13598 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:17 verbose #13599 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:17 verbose #13600 > > │ ### date_time_kind                                                           │
00:13:17 verbose #13601 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:17 verbose #13602 > >
00:13:17 verbose #13603 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:17 verbose #13604 > > union date_time_kind =
00:13:17 verbose #13605 > >     | Unspecified
00:13:17 verbose #13606 > >     | Utc
00:13:17 verbose #13607 > >     | Local
00:13:18 verbose #13608 > >
00:13:18 verbose #13609 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:18 verbose #13610 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:18 verbose #13611 > > │ ### specify_date_kind                                                        │
00:13:18 verbose #13612 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:18 verbose #13613 > >
00:13:18 verbose #13614 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:18 verbose #13615 > > inl specify_date_kind (kind : date_time_kind) (date_time : date_time) :
00:13:18 verbose #13616 > > date_time =
00:13:18 verbose #13617 > >     inl kind : $'System.DateTimeKind' =
00:13:18 verbose #13618 > >         match kind with
00:13:18 verbose #13619 > >         | Unspecified => $'System.DateTimeKind.Unspecified'
00:13:18 verbose #13620 > >         | Utc => $'System.DateTimeKind.Utc'
00:13:18 verbose #13621 > >         | Local => $'System.DateTimeKind.Local'
00:13:18 verbose #13622 > >     $'System.DateTime.SpecifyKind (!date_time, !kind)'
00:13:18 verbose #13623 > >
00:13:18 verbose #13624 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:18 verbose #13625 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:18 verbose #13626 > > │ ### time_span                                                                │
00:13:18 verbose #13627 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:18 verbose #13628 > >
00:13:18 verbose #13629 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:18 verbose #13630 > > nominal time_span = $"backend_switch `({ Fsharp : $"System.TimeSpan"; Python :
00:13:18 verbose #13631 > > $"datetime.timedelta" })"
00:13:18 verbose #13632 > >
00:13:18 verbose #13633 > > inl time_span x : time_span =
00:13:18 verbose #13634 > >     backend_switch {
00:13:18 verbose #13635 > >         Fsharp = fun () => x |> $'`time_span ' : time_span
00:13:18 verbose #13636 > >         Python = fun () => $'datetime.timedelta(!x)' : time_span
00:13:18 verbose #13637 > >     }
00:13:18 verbose #13638 > >
00:13:18 verbose #13639 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:18 verbose #13640 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:18 verbose #13641 > > │ ### new_time_span                                                            │
00:13:18 verbose #13642 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:18 verbose #13643 > >
00:13:18 verbose #13644 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:18 verbose #13645 > > inl new_time_span (a : date_time) (b : date_time) : time_span =
00:13:18 verbose #13646 > >     $'!b - !a '
00:13:18 verbose #13647 > >
00:13:18 verbose #13648 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:18 verbose #13649 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:18 verbose #13650 > > │ ### time_span_format                                                         │
00:13:18 verbose #13651 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:18 verbose #13652 > >
00:13:18 verbose #13653 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:18 verbose #13654 > > inl time_span_format (format : string) (time_span : time_span) : string =
00:13:18 verbose #13655 > >     run_target function
00:13:18 verbose #13656 > >         | (TypeScript _ | Python _) => fun () =>
00:13:18 verbose #13657 > >             $'!time_span.ToString ("c",
00:13:18 verbose #13658 > > System.Globalization.CultureInfo.InvariantCulture)'
00:13:18 verbose #13659 > >         | _ => fun () =>
00:13:18 verbose #13660 > >             $'!time_span.ToString !format '
00:13:18 verbose #13661 > >
00:13:18 verbose #13662 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:18 verbose #13663 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:18 verbose #13664 > > │ ### hours                                                                    │
00:13:18 verbose #13665 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:18 verbose #13666 > >
00:13:18 verbose #13667 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:18 verbose #13668 > > inl hours (time_span : time_span) : i32 =
00:13:18 verbose #13669 > >     backend_switch {
00:13:18 verbose #13670 > >         Fsharp = fun () => time_span |> $'_.Hours' : i32
00:13:18 verbose #13671 > >         Python = fun () => $'!time_span.days * 24 + !time_span.seconds // 3600'
00:13:18 verbose #13672 > > : i32
00:13:18 verbose #13673 > >     }
00:13:18 verbose #13674 > >
00:13:18 verbose #13675 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:18 verbose #13676 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:18 verbose #13677 > > │ ### milliseconds                                                             │
00:13:18 verbose #13678 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:18 verbose #13679 > >
00:13:18 verbose #13680 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:18 verbose #13681 > > inl milliseconds (time_span : time_span) : i32 =
00:13:18 verbose #13682 > >     backend_switch {
00:13:18 verbose #13683 > >         Fsharp = fun () => time_span |> $'_.Milliseconds' : i32
00:13:18 verbose #13684 > >         Python = fun () => $'!time_span.microseconds // 1000' : i32
00:13:18 verbose #13685 > >     }
00:13:18 verbose #13686 > >
00:13:18 verbose #13687 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:18 verbose #13688 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:18 verbose #13689 > > │ ### minutes                                                                  │
00:13:18 verbose #13690 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:18 verbose #13691 > >
00:13:18 verbose #13692 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:18 verbose #13693 > > inl minutes (time_span : time_span) : i32 =
00:13:18 verbose #13694 > >     backend_switch {
00:13:18 verbose #13695 > >         Fsharp = fun () => time_span |> $'_.Minutes' : i32
00:13:18 verbose #13696 > >         Python = fun () => $'!time_span.seconds // 60' : i32
00:13:18 verbose #13697 > >     }
00:13:18 verbose #13698 > >
00:13:18 verbose #13699 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:18 verbose #13700 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:18 verbose #13701 > > │ ### seconds                                                                  │
00:13:18 verbose #13702 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:18 verbose #13703 > >
00:13:18 verbose #13704 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:18 verbose #13705 > > inl seconds (time_span : time_span) : i32 =
00:13:18 verbose #13706 > >     backend_switch {
00:13:18 verbose #13707 > >         Fsharp = fun () => time_span |> $'_.Seconds' : i32
00:13:18 verbose #13708 > >         Python = fun () => $'!time_span.seconds % 60' : i32
00:13:18 verbose #13709 > >     }
00:13:18 verbose #13710 > >
00:13:18 verbose #13711 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:18 verbose #13712 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:18 verbose #13713 > > │ ### total_seconds                                                            │
00:13:18 verbose #13714 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:18 verbose #13715 > >
00:13:18 verbose #13716 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:18 verbose #13717 > > inl total_seconds (time_span : time_span) : f64 =
00:13:18 verbose #13718 > >     backend_switch {
00:13:18 verbose #13719 > >         Fsharp = fun () => time_span |> $'_.TotalSeconds' : f64
00:13:18 verbose #13720 > >         Python = fun () => $'!time_span.total_seconds()' : f64
00:13:18 verbose #13721 > >     }
00:13:18 verbose #13722 > >
00:13:18 verbose #13723 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:18 verbose #13724 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:18 verbose #13725 > > │ ### time_zone_info                                                           │
00:13:18 verbose #13726 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:18 verbose #13727 > >
00:13:18 verbose #13728 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:18 verbose #13729 > > nominal time_zone_info = $'System.TimeZoneInfo'
00:13:18 verbose #13730 > >
00:13:18 verbose #13731 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:18 verbose #13732 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:18 verbose #13733 > > │ ### add_days                                                                 │
00:13:18 verbose #13734 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:18 verbose #13735 > >
00:13:18 verbose #13736 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:18 verbose #13737 > > inl add_days (days : i32) (date_time : date_time) : date_time =
00:13:18 verbose #13738 > >     $'!date_time.AddDays' days
00:13:19 verbose #13739 > >
00:13:19 verbose #13740 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:19 verbose #13741 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:19 verbose #13742 > > │ ### now                                                                      │
00:13:19 verbose #13743 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:19 verbose #13744 > >
00:13:19 verbose #13745 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:19 verbose #13746 > > inl now () : date_time =
00:13:19 verbose #13747 > >     backend_switch {
00:13:19 verbose #13748 > >         Fsharp = fun () => $'System.DateTime.Now' : date_time
00:13:19 verbose #13749 > >         Python = fun () =>
00:13:19 verbose #13750 > >             backend_switch {
00:13:19 verbose #13751 > >                 Python = fun () =>
00:13:19 verbose #13752 > >                     global "import datetime"
00:13:19 verbose #13753 > >             }
00:13:19 verbose #13754 > >             $'datetime.datetime.now()' : date_time
00:13:19 verbose #13755 > >     }
00:13:19 verbose #13756 > >
00:13:19 verbose #13757 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:19 verbose #13758 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:19 verbose #13759 > > │ ### utc_now                                                                  │
00:13:19 verbose #13760 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:19 verbose #13761 > >
00:13:19 verbose #13762 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:19 verbose #13763 > > inl utc_now () : date_time =
00:13:19 verbose #13764 > >     backend_switch {
00:13:19 verbose #13765 > >         Fsharp = fun () => $'System.DateTime.UtcNow' : date_time
00:13:19 verbose #13766 > >         Python = fun () =>
00:13:19 verbose #13767 > >             backend_switch {
00:13:19 verbose #13768 > >                 Python = fun () =>
00:13:19 verbose #13769 > >                     global "import datetime"
00:13:19 verbose #13770 > >             }
00:13:19 verbose #13771 > >             $'datetime.datetime.utcnow()' : date_time
00:13:19 verbose #13772 > >     }
00:13:19 verbose #13773 > >
00:13:19 verbose #13774 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:19 verbose #13775 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:19 verbose #13776 > > │ ### stopwatch                                                                │
00:13:19 verbose #13777 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:19 verbose #13778 > >
00:13:19 verbose #13779 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:19 verbose #13780 > > nominal stopwatch_python =
00:13:19 verbose #13781 > >     `(
00:13:19 verbose #13782 > >         global "import timeit"
00:13:19 verbose #13783 > >         $'' : $'timeit.default_timer'
00:13:19 verbose #13784 > >     )
00:13:19 verbose #13785 > > type stopwatch_switch =
00:13:19 verbose #13786 > >     {
00:13:19 verbose #13787 > >         Fsharp : $'System.Diagnostics.Stopwatch'
00:13:19 verbose #13788 > >         Python : stopwatch_python
00:13:19 verbose #13789 > >     }
00:13:19 verbose #13790 > > nominal stopwatch = $'backend_switch `(stopwatch_switch)'
00:13:19 verbose #13791 > >
00:13:19 verbose #13792 > > inl stopwatch () : stopwatch =
00:13:19 verbose #13793 > >     backend_switch {
00:13:19 verbose #13794 > >         Fsharp = fun () => $'`stopwatch ' () : stopwatch
00:13:19 verbose #13795 > >         Python = fun () => $'`stopwatch ' : stopwatch
00:13:19 verbose #13796 > >     }
00:13:19 verbose #13797 > >
00:13:19 verbose #13798 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:19 verbose #13799 > > inl stopwatch_elapsed_milliseconds (stopwatch : stopwatch) : i64 =
00:13:19 verbose #13800 > >     $'!stopwatch.ElapsedMilliseconds'
00:13:19 verbose #13801 > >
00:13:19 verbose #13802 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:19 verbose #13803 > > inl stopwatch_start (stopwatch : stopwatch) : () =
00:13:19 verbose #13804 > >     $'!stopwatch.Start' ()
00:13:19 verbose #13805 > >
00:13:19 verbose #13806 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:19 verbose #13807 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:19 verbose #13808 > > │ ## rust                                                                      │
00:13:19 verbose #13809 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:19 verbose #13810 > >
00:13:19 verbose #13811 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:19 verbose #13812 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:19 verbose #13813 > > │ ### duration                                                                 │
00:13:19 verbose #13814 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:19 verbose #13815 > >
00:13:19 verbose #13816 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:19 verbose #13817 > > nominal duration =
00:13:19 verbose #13818 > >     `(
00:13:19 verbose #13819 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:13:19 verbose #13820 > > Fable.Core.Emit(\"std::time::Duration\")>]]\n#endif\ntype std_time_Duration =
00:13:19 verbose #13821 > > class end"
00:13:19 verbose #13822 > >         $'' : $'std_time_Duration'
00:13:19 verbose #13823 > >     )
00:13:19 verbose #13824 > >
00:13:19 verbose #13825 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:19 verbose #13826 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:19 verbose #13827 > > │ ### date_time'                                                               │
00:13:19 verbose #13828 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:19 verbose #13829 > >
00:13:19 verbose #13830 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:19 verbose #13831 > > nominal date_time' t =
00:13:19 verbose #13832 > >     `(
00:13:19 verbose #13833 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:13:19 verbose #13834 > > Fable.Core.Emit(\"chrono::DateTime<$0>\")>]]\n#endif\ntype chrono_DateTime<'T> =
00:13:19 verbose #13835 > > class end"
00:13:19 verbose #13836 > >         $'' : $'chrono_DateTime<`t>'
00:13:19 verbose #13837 > >     )
00:13:19 verbose #13838 > >
00:13:19 verbose #13839 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:19 verbose #13840 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:19 verbose #13841 > > │ ### local                                                                    │
00:13:19 verbose #13842 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:19 verbose #13843 > >
00:13:19 verbose #13844 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:19 verbose #13845 > > nominal local =
00:13:19 verbose #13846 > >     `(
00:13:19 verbose #13847 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:13:19 verbose #13848 > > Fable.Core.Emit(\"chrono::Local\")>]]\n#endif\ntype chrono_Local = class end"
00:13:19 verbose #13849 > >         $'' : $'chrono_Local'
00:13:19 verbose #13850 > >     )
00:13:19 verbose #13851 > >
00:13:19 verbose #13852 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:19 verbose #13853 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:19 verbose #13854 > > │ ### naive_date_time                                                          │
00:13:19 verbose #13855 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:19 verbose #13856 > >
00:13:19 verbose #13857 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:19 verbose #13858 > > nominal naive_date_time =
00:13:19 verbose #13859 > >     `(
00:13:19 verbose #13860 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:13:19 verbose #13861 > > Fable.Core.Emit(\"chrono::NaiveDateTime\")>]]\n#endif\ntype chrono_NaiveDateTime
00:13:19 verbose #13862 > > = class end"
00:13:19 verbose #13863 > >         $'' : $'chrono_NaiveDateTime'
00:13:19 verbose #13864 > >     )
00:13:19 verbose #13865 > >
00:13:19 verbose #13866 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:19 verbose #13867 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:19 verbose #13868 > > │ ## utc                                                                       │
00:13:19 verbose #13869 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:19 verbose #13870 > >
00:13:19 verbose #13871 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:19 verbose #13872 > > nominal utc =
00:13:19 verbose #13873 > >     `(
00:13:19 verbose #13874 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:13:19 verbose #13875 > > Fable.Core.Emit(\"chrono::Utc\")>]]\n#endif\ntype chrono_Utc = class end"
00:13:19 verbose #13876 > >         $'' : $'chrono_Utc'
00:13:19 verbose #13877 > >     )
00:13:19 verbose #13878 > >
00:13:19 verbose #13879 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:19 verbose #13880 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:19 verbose #13881 > > │ ### naive_utc                                                                │
00:13:19 verbose #13882 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:19 verbose #13883 > >
00:13:19 verbose #13884 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:19 verbose #13885 > > inl naive_utc (date_time : date_time' utc) : naive_date_time =
00:13:19 verbose #13886 > >     !\\(date_time, $'"$0.naive_utc()"')
00:13:20 verbose #13887 > >
00:13:20 verbose #13888 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:20 verbose #13889 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:20 verbose #13890 > > │ ### to_local                                                                 │
00:13:20 verbose #13891 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:20 verbose #13892 > >
00:13:20 verbose #13893 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:20 verbose #13894 > > inl to_local (date_time : date_time' utc) : date_time' local =
00:13:20 verbose #13895 > >     inl naive_date_time = date_time |> naive_utc
00:13:20 verbose #13896 > >     !\\(naive_date_time,
00:13:20 verbose #13897 > > $'"chrono::offset::TimeZone::from_utc_datetime(&chrono::Local, &$0)"')
00:13:20 verbose #13898 > >
00:13:20 verbose #13899 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:20 verbose #13900 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:20 verbose #13901 > > │ ### from_timestamp_micros                                                    │
00:13:20 verbose #13902 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:20 verbose #13903 > >
00:13:20 verbose #13904 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:20 verbose #13905 > > inl from_timestamp_micros forall t {number; int}. (timestamp : t) : option
00:13:20 verbose #13906 > > (date_time' utc) =
00:13:20 verbose #13907 > >     inl result : optionm'.option' (date_time' utc) =
00:13:20 verbose #13908 > >         !\\(timestamp, $'"chrono::DateTime::from_timestamp_micros($0)"')
00:13:20 verbose #13909 > >     result |> optionm'.unbox
00:13:20 verbose #13910 > >
00:13:20 verbose #13911 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:20 verbose #13912 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:20 verbose #13913 > > │ ### format'                                                                  │
00:13:20 verbose #13914 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:20 verbose #13915 > >
00:13:20 verbose #13916 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:20 verbose #13917 > > inl format' (format : string) (date_time : date_time' utc) : sm'.std_string =
00:13:20 verbose #13918 > >     !\\((date_time, #format), $'"$0.format($1).to_string()"')
00:13:20 verbose #13919 > >
00:13:20 verbose #13920 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:20 verbose #13921 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:20 verbose #13922 > > │ ### format''                                                                 │
00:13:20 verbose #13923 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:20 verbose #13924 > >
00:13:20 verbose #13925 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:20 verbose #13926 > > inl format'' (format : string) (date_time : date_time' _) : sm'.std_string =
00:13:20 verbose #13927 > >     !\\((date_time, #format), $'"$0.format($1).to_string()"')
00:13:20 verbose #13928 > >
00:13:20 verbose #13929 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:20 verbose #13930 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:20 verbose #13931 > > │ ### format_timestamp                                                         │
00:13:20 verbose #13932 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:20 verbose #13933 > >
00:13:20 verbose #13934 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:20 verbose #13935 > > inl format_timestamp forall t {number; int}. (timestamp : t) =
00:13:20 verbose #13936 > >     inl timestamp = join timestamp
00:13:20 verbose #13937 > >     (timestamp / 1000)
00:13:20 verbose #13938 > >     |> from_timestamp_micros
00:13:20 verbose #13939 > >     |> optionm.map fun x =>
00:13:20 verbose #13940 > >         x
00:13:20 verbose #13941 > >         |> to_local
00:13:20 verbose #13942 > >         |> format'' "%Y-%m-%d %H:%M:%S"
00:13:20 verbose #13943 > >         |> sm'.from_std_string
00:13:20 verbose #13944 > >     |> resultm.from_option
00:13:20 verbose #13945 > >
00:13:20 verbose #13946 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:20 verbose #13947 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:20 verbose #13948 > > │ ### duration_from_millis                                                     │
00:13:20 verbose #13949 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:20 verbose #13950 > >
00:13:20 verbose #13951 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:20 verbose #13952 > > inl duration_from_millis (ms : u64) : duration =
00:13:20 verbose #13953 > >     inl ms = join ms
00:13:20 verbose #13954 > >     !\($'"std::time::Duration::from_millis(!ms)"')
00:13:20 verbose #13955 > >
00:13:20 verbose #13956 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:20 verbose #13957 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:20 verbose #13958 > > │ ## date_time                                                                 │
00:13:20 verbose #13959 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:20 verbose #13960 > >
00:13:20 verbose #13961 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:20 verbose #13962 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:20 verbose #13963 > > │ ### time_zone_local                                                          │
00:13:20 verbose #13964 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:20 verbose #13965 > >
00:13:20 verbose #13966 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:20 verbose #13967 > > inl time_zone_local () : time_zone_info =
00:13:20 verbose #13968 > >     run_target function
00:13:20 verbose #13969 > >         | Rust (Native) => fun () =>
00:13:20 verbose #13970 > >             open rust.rust_operators
00:13:20 verbose #13971 > >             !\($'"0i64.into()"')
00:13:20 verbose #13972 > >         | Fsharp _ => fun () =>
00:13:20 verbose #13973 > >             $'System.TimeZoneInfo.Local'
00:13:20 verbose #13974 > >         | _ => fun () => null ()
00:13:20 verbose #13975 > >
00:13:20 verbose #13976 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:20 verbose #13977 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:20 verbose #13978 > > │ ### get_utc_offset                                                           │
00:13:20 verbose #13979 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:20 verbose #13980 > >
00:13:20 verbose #13981 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:20 verbose #13982 > > inl get_utc_offset (time_zone_info : time_zone_info) (date_time : date_time) :
00:13:20 verbose #13983 > > time_span =
00:13:20 verbose #13984 > >     run_target function
00:13:20 verbose #13985 > >         | Rust _ => fun () => time_span ()
00:13:20 verbose #13986 > >         | Fsharp _ => fun () => date_time |> $'_.GetUtcOffset' (time_zone_local
00:13:20 verbose #13987 > > ())
00:13:20 verbose #13988 > >         | target => fun () => failwith $'$"date_time.get_utc_offset / target:
00:13:20 verbose #13989 > > {!target}"'
00:13:20 verbose #13990 > >
00:13:20 verbose #13991 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:20 verbose #13992 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:20 verbose #13993 > > │ ### date_time_guid_from_date_time                                            │
00:13:20 verbose #13994 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:20 verbose #13995 > >
00:13:20 verbose #13996 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:20 verbose #13997 > > let date_time_guid_from_date_time (guid : guid.guid) (date_time : date_time) =
00:13:20 verbose #13998 > >     inl create prefix time_zone : date_time_guid =
00:13:20 verbose #13999 > >         inl guid = guid |> sm'.obj_to_string
00:13:20 verbose #14000 > >         $'`date_time_guid $"{!prefix}{!time_zone}{!guid.[[!prefix.Length +
00:13:20 verbose #14001 > > !time_zone.Length..]]}"'
00:13:20 verbose #14002 > >     run_target function
00:13:20 verbose #14003 > >         | Rust (Contract) => fun () => null ()
00:13:20 verbose #14004 > >         | Rust (Native | Wasm) => fun () =>
00:13:20 verbose #14005 > >             inl epoch =
00:13:20 verbose #14006 > >                 date_time_utc 1970 1 1 0 0 0
00:13:20 verbose #14007 > >                 |> to_universal_time
00:13:20 verbose #14008 > >             inl date_time =
00:13:20 verbose #14009 > >                 date_time
00:13:20 verbose #14010 > >                 |> specify_date_kind Local
00:13:20 verbose #14011 > >                 |> to_universal_time
00:13:20 verbose #14012 > >             inl unixticks =
00:13:20 verbose #14013 > >                 match date_time |> ticks, epoch |> ticks with
00:13:20 verbose #14014 > >                 | timestamp date_time, timestamp epoch => date_time - epoch
00:13:20 verbose #14015 > >             inl prefix =
00:13:20 verbose #14016 > >                 unixticks / 10
00:13:20 verbose #14017 > >                 |> from_timestamp_micros
00:13:20 verbose #14018 > >                 |> optionm.map (
00:13:20 verbose #14019 > >                     to_local
00:13:20 verbose #14020 > >                     >> format'' "%Y%m%d-%H%M-%S%f"
00:13:20 verbose #14021 > >                     >> sm'.from_std_string
00:13:20 verbose #14022 > >                     >> fun s => $'$"{!s.[[0..17]]}-{!s.[[18..21]]}-{!s.[[22]]}"'
00:13:20 verbose #14023 > >                 )
00:13:20 verbose #14024 > >                 |> optionm'.default_value ""
00:13:20 verbose #14025 > >             inl time_zone = date_time |> get_utc_offset (time_zone_local ())
00:13:20 verbose #14026 > >             inl time_zone_signal = if hours time_zone > 0 then 1u8 else 0
00:13:20 verbose #14027 > >             inl time_zone_value = time_zone |> time_span_format (join "hh:mm")
00:13:20 verbose #14028 > >             inl time_zone =
00:13:20 verbose #14029 > > $'$"{!time_zone_signal}{!time_zone_value.[[0..1]]}{!time_zone_value.[[3..4]]}"'
00:13:20 verbose #14030 > > : string
00:13:20 verbose #14031 > >             create prefix time_zone
00:13:20 verbose #14032 > >         | target => fun () =>
00:13:20 verbose #14033 > >             inl prefix = date_time |> format (join "yyyyMMdd-HHmm-ssff-ffff-f")
00:13:20 verbose #14034 > >             inl time_zone = date_time |> get_utc_offset (time_zone_local ())
00:13:20 verbose #14035 > >             inl time_zone_signal = if hours time_zone > 0 then 1u8 else 0
00:13:20 verbose #14036 > >             inl time_zone_value = time_zone |> time_span_format (join "hhmm")
00:13:20 verbose #14037 > >             inl time_zone = $'$"{!time_zone_signal}{!time_zone_value}"' : string
00:13:20 verbose #14038 > >             create prefix time_zone
00:13:20 verbose #14039 > >
00:13:20 verbose #14040 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:20 verbose #14041 > > //// test
00:13:20 verbose #14042 > >
00:13:20 verbose #14043 > > now () |> to_universal_time |> date_time_guid_from_date_time (test_guid ()) |>
00:13:20 verbose #14044 > > sm'.obj_to_string
00:13:20 verbose #14045 > > |> console.write_line
00:13:22 verbose #14046 > >
00:13:22 verbose #14047 > > ╭─[ 1.19s - stdout ]───────────────────────────────────────────────────────────╮
00:13:22 verbose #14048 > > │ 20240906-1456-5655-5555-500000543210                                         │
00:13:22 verbose #14049 > > │                                                                              │
00:13:22 verbose #14050 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:22 verbose #14051 > >
00:13:22 verbose #14052 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:22 verbose #14053 > > //// test
00:13:22 verbose #14054 > > ///! rust -d chrono
00:13:22 verbose #14055 > >
00:13:22 verbose #14056 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x
00:13:22 verbose #14057 > > - 6i32) (am'.End id)
00:13:22 verbose #14058 > > now ()
00:13:22 verbose #14059 > > |> to_universal_time
00:13:22 verbose #14060 > > |> date_time_guid_from_date_time (test_guid ())
00:13:22 verbose #14061 > > |> sm'.obj_to_string
00:13:22 verbose #14062 > > |> fun s => s |> _assert_eq' $'$"{!s.[[0..29]]}{!suffix}"'
00:13:29 verbose #14063 > >
00:13:29 verbose #14064 > > ╭─[ 7.79s - return value ]─────────────────────────────────────────────────────╮
00:13:29 verbose #14065 > > │ __assert_eq' / actual: "20240906-1457-0430-3629-000000543210" / expected:    │
00:13:29 verbose #14066 > > │ "20240906-1457-0430-3629-000000543210"                                       │
00:13:29 verbose #14067 > > │                                                                              │
00:13:29 verbose #14068 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:29 verbose #14069 > >
00:13:29 verbose #14070 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:29 verbose #14071 > > //// test
00:13:29 verbose #14072 > > ///! fsharp
00:13:29 verbose #14073 > > ///! rust -d chrono
00:13:29 verbose #14074 > >
00:13:29 verbose #14075 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x
00:13:29 verbose #14076 > > - 6i32) (am'.End id)
00:13:29 verbose #14077 > > min_value ()
00:13:29 verbose #14078 > > |> specify_date_kind Local
00:13:29 verbose #14079 > > |> date_time_guid_from_date_time (test_guid ())
00:13:29 verbose #14080 > > |> sm'.obj_to_string
00:13:29 verbose #14081 > > |> fun s => s |> _assert_eq'
00:13:29 verbose #14082 > > $'$"00010101-0000-0000-0000-0{!s.[[25..29]]}{!suffix}"'
00:13:37 verbose #14083 > >
00:13:37 verbose #14084 > > ╭─[ 7.68s - return value ]─────────────────────────────────────────────────────╮
00:13:37 verbose #14085 > > │ .rs output (rust -d chrono):                                                 │
00:13:37 verbose #14086 > > │ __assert_eq' / actual: "00010101-0000-0000-0000-000000543210" / expected:    │
00:13:37 verbose #14087 > > │ "00010101-0000-0000-0000-000000543210"                                       │
00:13:37 verbose #14088 > > │                                                                              │
00:13:37 verbose #14089 > > │                                                                              │
00:13:37 verbose #14090 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:37 verbose #14091 > >
00:13:37 verbose #14092 > > ╭─[ 7.68s - stdout ]───────────────────────────────────────────────────────────╮
00:13:37 verbose #14093 > > │ .fsx output:                                                                 │
00:13:37 verbose #14094 > > │ __assert_eq' / actual: "00010101-0000-0000-0000-000000543210" / expected:    │
00:13:37 verbose #14095 > > │ "00010101-0000-0000-0000-000000543210"                                       │
00:13:37 verbose #14096 > > │                                                                              │
00:13:37 verbose #14097 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:37 verbose #14098 > >
00:13:37 verbose #14099 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:37 verbose #14100 > > //// test
00:13:37 verbose #14101 > > ///! fsharp
00:13:37 verbose #14102 > >
00:13:37 verbose #14103 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x
00:13:37 verbose #14104 > > - 6i32) (am'.End id)
00:13:37 verbose #14105 > > max_value ()
00:13:37 verbose #14106 > > |> specify_date_kind Utc
00:13:37 verbose #14107 > > |> add_days -1
00:13:37 verbose #14108 > > |> date_time_guid_from_date_time (test_guid ())
00:13:37 verbose #14109 > > |> sm'.obj_to_string
00:13:37 verbose #14110 > > |> fun s => s |> _assert_eq
00:13:37 verbose #14111 > > $'$"99991230-2359-5999-9999-9{!s.[[25..29]]}{!suffix}"'
00:13:37 verbose #14112 > >
00:13:37 verbose #14113 > > ╭─[ 242.38ms - stdout ]────────────────────────────────────────────────────────╮
00:13:37 verbose #14114 > > │ __assert_eq / actual: "99991230-2359-5999-9999-900000543210" / expected:     │
00:13:37 verbose #14115 > > │ "99991230-2359-5999-9999-900000543210"                                       │
00:13:37 verbose #14116 > > │                                                                              │
00:13:37 verbose #14117 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:37 verbose #14118 > >
00:13:37 verbose #14119 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:37 verbose #14120 > > //// test
00:13:37 verbose #14121 > > ///! rust -d chrono
00:13:37 verbose #14122 > >
00:13:37 verbose #14123 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x
00:13:37 verbose #14124 > > - 6i32) (am'.End id)
00:13:37 verbose #14125 > > max_value ()
00:13:37 verbose #14126 > > |> specify_date_kind Utc
00:13:37 verbose #14127 > > |> add_days -1
00:13:37 verbose #14128 > > |> date_time_guid_from_date_time (test_guid ())
00:13:37 verbose #14129 > > |> sm'.obj_to_string
00:13:37 verbose #14130 > > |> fun s => s |> _assert_eq
00:13:37 verbose #14131 > > $'$"99991230-2359-5999-9999-0{!s.[[25..29]]}{!suffix}"'
00:13:46 verbose #14132 > >
00:13:46 verbose #14133 > > ╭─[ 8.31s - return value ]─────────────────────────────────────────────────────╮
00:13:46 verbose #14134 > > │ __assert_eq / actual: "99991230-2359-5999-9999-000000543210" / expected:     │
00:13:46 verbose #14135 > > │ "99991230-2359-5999-9999-000000543210"                                       │
00:13:46 verbose #14136 > > │                                                                              │
00:13:46 verbose #14137 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:46 verbose #14138 > >
00:13:46 verbose #14139 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:46 verbose #14140 > > //// test
00:13:46 verbose #14141 > >
00:13:46 verbose #14142 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x
00:13:46 verbose #14143 > > - 6i32) (am'.End id)
00:13:46 verbose #14144 > > unix_epoch ()
00:13:46 verbose #14145 > > |> specify_date_kind Utc
00:13:46 verbose #14146 > > |> add_days 1
00:13:46 verbose #14147 > > |> date_time_guid_from_date_time (test_guid ())
00:13:46 verbose #14148 > > |> sm'.obj_to_string
00:13:46 verbose #14149 > > |> fun s => s |> _assert_eq
00:13:46 verbose #14150 > > $'$"19700102-0000-0000-0000-0{!s.[[25..29]]}{!suffix}"'
00:13:46 verbose #14151 > >
00:13:46 verbose #14152 > > ╭─[ 234.39ms - stdout ]────────────────────────────────────────────────────────╮
00:13:46 verbose #14153 > > │ __assert_eq / actual: "19700102-0000-0000-0000-000000543210" / expected:     │
00:13:46 verbose #14154 > > │ "19700102-0000-0000-0000-000000543210"                                       │
00:13:46 verbose #14155 > > │                                                                              │
00:13:46 verbose #14156 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:46 verbose #14157 > >
00:13:46 verbose #14158 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:46 verbose #14159 > > //// test
00:13:46 verbose #14160 > > ///! rust -d chrono
00:13:46 verbose #14161 > >
00:13:46 verbose #14162 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x
00:13:46 verbose #14163 > > - 6i32) (am'.End id)
00:13:46 verbose #14164 > > unix_epoch ()
00:13:46 verbose #14165 > > |> specify_date_kind Utc
00:13:46 verbose #14166 > > |> add_days 1
00:13:46 verbose #14167 > > |> date_time_guid_from_date_time (test_guid ())
00:13:46 verbose #14168 > > |> sm'.obj_to_string
00:13:46 verbose #14169 > > |> fun s => s |> _assert_eq
00:13:46 verbose #14170 > > $'$"19700102-0000-0000-0000-0{!s.[[25..29]]}{!suffix}"'
00:13:54 verbose #14171 > >
00:13:54 verbose #14172 > > ╭─[ 7.72s - return value ]─────────────────────────────────────────────────────╮
00:13:54 verbose #14173 > > │ __assert_eq / actual: "19700102-0000-0000-0000-000000543210" / expected:     │
00:13:54 verbose #14174 > > │ "19700102-0000-0000-0000-000000543210"                                       │
00:13:54 verbose #14175 > > │                                                                              │
00:13:54 verbose #14176 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:54 verbose #14177 > >
00:13:54 verbose #14178 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:54 verbose #14179 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:54 verbose #14180 > > │ ### date_time_from_guid                                                      │
00:13:54 verbose #14181 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:54 verbose #14182 > >
00:13:54 verbose #14183 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:54 verbose #14184 > > inl date_time_from_guid (date_time_guid : date_time_guid) =
00:13:54 verbose #14185 > >     inl date_time_guid = date_time_guid |> sm'.obj_to_string
00:13:54 verbose #14186 > >     inl sm_replace = sm'.replace "-" ""
00:13:54 verbose #14187 > >     run_target_args (fun () => sm_replace) function
00:13:54 verbose #14188 > >         | (Rust _ | TypeScript _) => fun sm_replace =>
00:13:54 verbose #14189 > >             $'System.DateTime.Parse (!date_time_guid.[[..24]] |> !sm_replace)' :
00:13:54 verbose #14190 > > date_time
00:13:54 verbose #14191 > >         | _ => fun sm_replace => $'System.DateTime.ParseExact
00:13:54 verbose #14192 > > (!date_time_guid.[[..24]] |> !sm_replace, "yyyyMMddHHmmssfffffff", null)' :
00:13:54 verbose #14193 > > date_time
00:13:54 verbose #14194 > >
00:13:54 verbose #14195 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:54 verbose #14196 > > //// test
00:13:54 verbose #14197 > >
00:13:54 verbose #14198 > > date_time_from_guid (guid.new_guid "00010101-0000-0000-0000-0a9876543210")
00:13:54 verbose #14199 > > |> _assert_eq' (min_value ())
00:13:54 verbose #14200 > >
00:13:54 verbose #14201 > > ╭─[ 116.57ms - stdout ]────────────────────────────────────────────────────────╮
00:13:54 verbose #14202 > > │ __assert_eq' / actual: 01/01/0001 00:00:00 / expected: 01/01/0001 00:00:00   │
00:13:54 verbose #14203 > > │                                                                              │
00:13:54 verbose #14204 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:54 verbose #14205 > >
00:13:54 verbose #14206 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:54 verbose #14207 > > //// test
00:13:54 verbose #14208 > >
00:13:54 verbose #14209 > > date_time_from_guid (guid.new_guid $'$"99991231-2359-5999-9999-9{(!test_guid ()
00:13:54 verbose #14210 > > |> string).[[^10..]]}"')
00:13:54 verbose #14211 > > |> _assert_eq' (max_value ())
00:13:54 verbose #14212 > >
00:13:54 verbose #14213 > > ╭─[ 127.53ms - stdout ]────────────────────────────────────────────────────────╮
00:13:54 verbose #14214 > > │ __assert_eq' / actual: 12/31/9999 23:59:59 / expected: 12/31/9999 23:59:59   │
00:13:54 verbose #14215 > > │                                                                              │
00:13:54 verbose #14216 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:54 verbose #14217 > >
00:13:54 verbose #14218 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:54 verbose #14219 > > //// test
00:13:54 verbose #14220 > >
00:13:54 verbose #14221 > > date_time_from_guid (guid.new_guid $'$"19700101-0000-0000-0000-0{(!test_guid ()
00:13:54 verbose #14222 > > |> string).[[^10..]]}"')
00:13:54 verbose #14223 > > |> _assert_eq' $'System.DateTime.UnixEpoch'
00:13:54 verbose #14224 > >
00:13:54 verbose #14225 > > ╭─[ 113.12ms - stdout ]────────────────────────────────────────────────────────╮
00:13:54 verbose #14226 > > │ __assert_eq' / actual: 01/01/1970 00:00:00 / expected: 01/01/1970 00:00:00   │
00:13:54 verbose #14227 > > │                                                                              │
00:13:54 verbose #14228 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:54 verbose #14229 > >
00:13:54 verbose #14230 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:54 verbose #14231 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:54 verbose #14232 > > │ ### timestamp_guid_from_timestamp                                            │
00:13:54 verbose #14233 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:54 verbose #14234 > >
00:13:54 verbose #14235 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:54 verbose #14236 > > inl timestamp_guid_from_timestamp (guid : guid.guid) (timestamp : timestamp) :
00:13:54 verbose #14237 > > timestamp_guid =
00:13:54 verbose #14238 > >     inl guid = guid |> sm'.obj_to_string
00:13:54 verbose #14239 > >     inl timestamp = timestamp |> sm'.obj_to_string |> sm'.pad_left 18i32 '0'
00:13:54 verbose #14240 > >     $'`timestamp_guid
00:13:54 verbose #14241 > > $"{!timestamp.[[0..7]]}-{!timestamp.[[8..11]]}-{!timestamp.[[12..15]]}-{!timesta
00:13:54 verbose #14242 > > mp.[[16..17]]}{!guid.[[21..]]}"'
00:13:54 verbose #14243 > >
00:13:54 verbose #14244 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:54 verbose #14245 > > //// test
00:13:54 verbose #14246 > >
00:13:54 verbose #14247 > > timestamp_guid_from_timestamp (test_guid ()) (timestamp 0i64)
00:13:54 verbose #14248 > > |> _assert_eq' (guid.new_guid "00000000-0000-0000-00dc-ba9876543210")
00:13:54 verbose #14249 > >
00:13:54 verbose #14250 > > ╭─[ 122.44ms - stdout ]────────────────────────────────────────────────────────╮
00:13:54 verbose #14251 > > │ __assert_eq' / actual: 00000000-0000-0000-00dc-ba9876543210 / expected:      │
00:13:54 verbose #14252 > > │ 00000000-0000-0000-00dc-ba9876543210                                         │
00:13:54 verbose #14253 > > │                                                                              │
00:13:54 verbose #14254 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:54 verbose #14255 > >
00:13:54 verbose #14256 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:54 verbose #14257 > > //// test
00:13:54 verbose #14258 > >
00:13:54 verbose #14259 > > timestamp_guid_from_timestamp (test_guid ()) (timestamp 999999999999999999i64)
00:13:54 verbose #14260 > > |> _assert_eq' (guid.new_guid $'$"99999999-9999-9999-99dc-b{(!test_guid () |>
00:13:54 verbose #14261 > > string).[[^10..]]}"')
00:13:54 verbose #14262 > >
00:13:54 verbose #14263 > > ╭─[ 155.73ms - stdout ]────────────────────────────────────────────────────────╮
00:13:54 verbose #14264 > > │ __assert_eq' / actual: 99999999-9999-9999-99dc-ba9876543210 / expected:      │
00:13:54 verbose #14265 > > │ 99999999-9999-9999-99dc-ba9876543210                                         │
00:13:54 verbose #14266 > > │                                                                              │
00:13:54 verbose #14267 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:54 verbose #14268 > >
00:13:54 verbose #14269 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:54 verbose #14270 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:54 verbose #14271 > > │ ### timestamp_from_guid                                                      │
00:13:54 verbose #14272 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:54 verbose #14273 > >
00:13:54 verbose #14274 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:54 verbose #14275 > > inl timestamp_from_guid (guid : date_time_guid) : timestamp =
00:13:54 verbose #14276 > >     inl guid = guid |> sm'.obj_to_string
00:13:54 verbose #14277 > >     $'`i64
00:13:54 verbose #14278 > > $"{!guid.[[0..7]]}{!guid.[[9..12]]}{!guid.[[14..17]]}{!guid.[[19..20]]}"'
00:13:55 verbose #14279 > >
00:13:55 verbose #14280 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:55 verbose #14281 > > //// test
00:13:55 verbose #14282 > >
00:13:55 verbose #14283 > > timestamp_from_guid (guid.new_guid "00000000-0000-0000-00dc-ba9876543210")
00:13:55 verbose #14284 > > |> _assert_eq (timestamp 0)
00:13:55 verbose #14285 > >
00:13:55 verbose #14286 > > ╭─[ 113.03ms - stdout ]────────────────────────────────────────────────────────╮
00:13:55 verbose #14287 > > │ __assert_eq / actual: 0L / expected: 0L                                      │
00:13:55 verbose #14288 > > │                                                                              │
00:13:55 verbose #14289 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:55 verbose #14290 > >
00:13:55 verbose #14291 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:55 verbose #14292 > > //// test
00:13:55 verbose #14293 > >
00:13:55 verbose #14294 > > timestamp_from_guid (guid.new_guid $'$"99999999-9999-9999-99{(!test_guid () |>
00:13:55 verbose #14295 > > string).[[^14..]]}"')
00:13:55 verbose #14296 > > |> _assert_eq (timestamp 999999999999999999)
00:13:55 verbose #14297 > >
00:13:55 verbose #14298 > > ╭─[ 114.96ms - stdout ]────────────────────────────────────────────────────────╮
00:13:55 verbose #14299 > > │ __assert_eq / actual: 999999999999999999L / expected: 999999999999999999L    │
00:13:55 verbose #14300 > > │                                                                              │
00:13:55 verbose #14301 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:55 verbose #14302 > >
00:13:55 verbose #14303 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:55 verbose #14304 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:55 verbose #14305 > > │ ### new_guid_from_date_time                                                  │
00:13:55 verbose #14306 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:55 verbose #14307 > >
00:13:55 verbose #14308 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:55 verbose #14309 > > inl new_guid_from_date_time (date_time : date_time) =
00:13:55 verbose #14310 > >     inl guid = guid.new_raw_guid ()
00:13:55 verbose #14311 > >     date_time_guid_from_date_time guid date_time
00:13:55 verbose #14312 > >
00:13:55 verbose #14313 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:55 verbose #14314 > > //// test
00:13:55 verbose #14315 > >
00:13:55 verbose #14316 > > utc_now ()
00:13:55 verbose #14317 > > |> new_guid_from_date_time
00:13:55 verbose #14318 > > |> date_time_from_guid
00:13:55 verbose #14319 > > |> fun date_time => new_time_span date_time (utc_now ()) |> total_seconds |> i32
00:13:55 verbose #14320 > > |> _assert_eq 0
00:13:55 verbose #14321 > >
00:13:55 verbose #14322 > > ╭─[ 188.90ms - stdout ]────────────────────────────────────────────────────────╮
00:13:55 verbose #14323 > > │ __assert_eq / actual: 0 / expected: 0                                        │
00:13:55 verbose #14324 > > │                                                                              │
00:13:55 verbose #14325 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:55 verbose #14326 > >
00:13:55 verbose #14327 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:55 verbose #14328 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:55 verbose #14329 > > │ ### new_guid_from_timestamp                                                  │
00:13:55 verbose #14330 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:55 verbose #14331 > >
00:13:55 verbose #14332 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:55 verbose #14333 > > inl new_guid_from_timestamp (timestamp : timestamp) =
00:13:55 verbose #14334 > >     inl guid = guid.new_raw_guid ()
00:13:55 verbose #14335 > >     timestamp_guid_from_timestamp guid timestamp
00:13:55 verbose #14336 > >
00:13:55 verbose #14337 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:55 verbose #14338 > > //// test
00:13:55 verbose #14339 > >
00:13:55 verbose #14340 > > utc_now ()
00:13:55 verbose #14341 > > |> ticks
00:13:55 verbose #14342 > > |> new_guid_from_timestamp
00:13:55 verbose #14343 > > |> timestamp_from_guid
00:13:55 verbose #14344 > > |> fun (timestamp timestamp) => (timestamp - (utc_now () |> ticks |> fun
00:13:55 verbose #14345 > > (timestamp x) => x)) / 100000i64
00:13:55 verbose #14346 > > |> _assert_eq 0i64
00:13:55 verbose #14347 > >
00:13:55 verbose #14348 > > ╭─[ 140.99ms - stdout ]────────────────────────────────────────────────────────╮
00:13:55 verbose #14349 > > │ __assert_eq / actual: 0L / expected: 0L                                      │
00:13:55 verbose #14350 > > │                                                                              │
00:13:55 verbose #14351 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:55 verbose #14352 > >
00:13:55 verbose #14353 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:55 verbose #14354 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:55 verbose #14355 > > │ ## main                                                                      │
00:13:55 verbose #14356 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:13:55 verbose #14357 > >
00:13:55 verbose #14358 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:13:55 verbose #14359 > > inl main () =
00:13:55 verbose #14360 > >     $'let date_time_guid_from_date_time x = !date_time_guid_from_date_time x' :
00:13:55 verbose #14361 > > ()
00:13:55 verbose #14362 > >     $'let date_time_from_guid x = !date_time_from_guid x' : ()
00:13:55 verbose #14363 > >     $'let timestamp_guid_from_timestamp x = !timestamp_guid_from_timestamp x' :
00:13:55 verbose #14364 > > ()
00:13:55 verbose #14365 > >     $'let timestamp_from_guid x = !timestamp_from_guid x' : ()
00:13:55 verbose #14366 > >     $'let new_guid_from_date_time x = !new_guid_from_date_time x' : ()
00:13:55 verbose #14367 > >     $'let new_guid_from_timestamp x = !new_guid_from_timestamp x' : ()
00:13:55 verbose #14368 > >     $'let format x = !format x' : ()
00:13:55 verbose #14369 > >     $'let format_iso8601 x = !format_iso8601 x' : ()
00:13:56 verbose #14370 > 00:00:44 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 53359 }
00:13:56 verbose #14371 > 00:00:44   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:13:56 verbose #14372 >     "nbconvert",
00:13:56 verbose #14373 >     "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb",
00:13:56 verbose #14374 >     "--to",
00:13:56 verbose #14375 >     "html",
00:13:56 verbose #14376 >     "--HTMLExporter.theme=dark",
00:13:56 verbose #14377 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:56 verbose #14378 > 00:00:44 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb to html
00:13:56 verbose #14379 > 00:00:44 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:13:56 verbose #14380 > 00:00:44 verbose #7 !   validate(nb)
00:13:57 verbose #14381 > 00:00:45 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:13:57 verbose #14382 > 00:00:45 verbose #9 !   return _pygments_highlight(
00:13:57 verbose #14383 > 00:00:45 verbose #10 ! [NbConvertApp] Writing 411815 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.html
00:13:57 verbose #14384 > 00:00:45 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 }
00:13:57 verbose #14385 > 00:00:45   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 }
00:13:57 verbose #14386 > 00:00:45   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:13:57 verbose #14387 >     "-c",
00:13:57 verbose #14388 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:13:57 verbose #14389 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:58 verbose #14390 > 00:00:46 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:13:58 verbose #14391 > 00:00:46   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:13:58 verbose #14392 > 00:00:46   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 54320 }
00:13:58   debug #14393 runtime.execute_with_options_async / { exit_code = 0; output_length = 59139 }
00:13:58   debug #16 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path date_time.dib --retries 3
00:13:58   debug #14394 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path math.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:13:58 verbose #14395 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "math.dib", "--retries", "3"])) }
00:13:58 verbose #14396 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:13:58 verbose #14397 >     "repl",
00:13:58 verbose #14398 >     "--exit-after-run",
00:13:58 verbose #14399 >     "--run",
00:13:58 verbose #14400 >     "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib",
00:13:58 verbose #14401 >     "--output-path",
00:13:58 verbose #14402 >     "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb",
00:13:58 verbose #14403 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:13:59 verbose #14404 > >
00:13:59 verbose #14405 > > ── markdown ────────────────────────────────────────────────────────────────────
00:13:59 verbose #14406 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:13:59 verbose #14407 > > │ # math                                                                       │
00:13:59 verbose #14408 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:01 verbose #14409 > >
00:14:01 verbose #14410 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:01 verbose #14411 > > //// test
00:14:01 verbose #14412 > >
00:14:01 verbose #14413 > > open testing
00:14:02 verbose #14414 > >
00:14:02 verbose #14415 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:02 verbose #14416 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:02 verbose #14417 > > │ ## math                                                                      │
00:14:02 verbose #14418 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:02 verbose #14419 > >
00:14:02 verbose #14420 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:02 verbose #14421 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:02 verbose #14422 > > │ ### e                                                                        │
00:14:02 verbose #14423 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:02 verbose #14424 > >
00:14:02 verbose #14425 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:02 verbose #14426 > > inl e () =
00:14:02 verbose #14427 > >     exp 1f64
00:14:02 verbose #14428 > >
00:14:02 verbose #14429 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:02 verbose #14430 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:02 verbose #14431 > > │ ## square                                                                    │
00:14:02 verbose #14432 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:02 verbose #14433 > >
00:14:02 verbose #14434 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:02 verbose #14435 > > inl square x =
00:14:02 verbose #14436 > >     x ** 2
00:14:02 verbose #14437 > >
00:14:02 verbose #14438 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:02 verbose #14439 > > //// test
00:14:02 verbose #14440 > >
00:14:02 verbose #14441 > > 5f64
00:14:02 verbose #14442 > > |> sqrt
00:14:02 verbose #14443 > > |> square
00:14:02 verbose #14444 > > |> _assert_approx_eq None 5
00:14:03 verbose #14445 > >
00:14:03 verbose #14446 > > ╭─[ 703.82ms - stdout ]────────────────────────────────────────────────────────╮
00:14:03 verbose #14447 > > │ __assert_approx_eq / actual: 5.0 / expected: 5.0                             │
00:14:03 verbose #14448 > > │                                                                              │
00:14:03 verbose #14449 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:03 verbose #14450 > >
00:14:03 verbose #14451 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:03 verbose #14452 > > //// test
00:14:03 verbose #14453 > >
00:14:03 verbose #14454 > > e () |> square
00:14:03 verbose #14455 > > |> _assert_approx_eq None 7.3890560989306495
00:14:03 verbose #14456 > >
00:14:03 verbose #14457 > > ╭─[ 94.56ms - stdout ]─────────────────────────────────────────────────────────╮
00:14:03 verbose #14458 > > │ __assert_approx_eq / actual: 7.389056099 / expected: 7.389056099             │
00:14:03 verbose #14459 > > │                                                                              │
00:14:03 verbose #14460 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:03 verbose #14461 > >
00:14:03 verbose #14462 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:03 verbose #14463 > > //// test
00:14:03 verbose #14464 > >
00:14:03 verbose #14465 > > 2 * 2 / 0.4f64 |> sqrt
00:14:03 verbose #14466 > > |> _assert_approx_eq None 3.1622776601683795
00:14:03 verbose #14467 > >
00:14:03 verbose #14468 > > ╭─[ 92.74ms - stdout ]─────────────────────────────────────────────────────────╮
00:14:03 verbose #14469 > > │ __assert_approx_eq / actual: 3.16227766 / expected: 3.16227766               │
00:14:03 verbose #14470 > > │                                                                              │
00:14:03 verbose #14471 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:03 verbose #14472 > >
00:14:03 verbose #14473 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:03 verbose #14474 > > //// test
00:14:03 verbose #14475 > >
00:14:03 verbose #14476 > > 2f64 / 3
00:14:03 verbose #14477 > > |> _assert_approx_eq None 0.6666666666666666
00:14:03 verbose #14478 > >
00:14:03 verbose #14479 > > ╭─[ 99.20ms - stdout ]─────────────────────────────────────────────────────────╮
00:14:03 verbose #14480 > > │ __assert_approx_eq / actual: 0.6666666667 / expected: 0.6666666667           │
00:14:03 verbose #14481 > > │                                                                              │
00:14:03 verbose #14482 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:03 verbose #14483 > >
00:14:03 verbose #14484 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:03 verbose #14485 > > //// test
00:14:03 verbose #14486 > >
00:14:03 verbose #14487 > > 2f64 |> log
00:14:03 verbose #14488 > > |> _assert_approx_eq None 0.6931471805599453
00:14:03 verbose #14489 > >
00:14:03 verbose #14490 > > ╭─[ 95.83ms - stdout ]─────────────────────────────────────────────────────────╮
00:14:03 verbose #14491 > > │ __assert_approx_eq / actual: 0.6931471806 / expected: 0.6931471806           │
00:14:03 verbose #14492 > > │                                                                              │
00:14:03 verbose #14493 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:03 verbose #14494 > >
00:14:03 verbose #14495 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:03 verbose #14496 > > //// test
00:14:03 verbose #14497 > >
00:14:03 verbose #14498 > > pi
00:14:03 verbose #14499 > > |> _assert_approx_eq None 3.141592653589793f64
00:14:04 verbose #14500 > >
00:14:04 verbose #14501 > > ╭─[ 92.17ms - stdout ]─────────────────────────────────────────────────────────╮
00:14:04 verbose #14502 > > │ __assert_approx_eq / actual: 3.141592654 / expected: 3.141592654             │
00:14:04 verbose #14503 > > │                                                                              │
00:14:04 verbose #14504 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:04 verbose #14505 > >
00:14:04 verbose #14506 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:04 verbose #14507 > > //// test
00:14:04 verbose #14508 > >
00:14:04 verbose #14509 > > pi |> cos
00:14:04 verbose #14510 > > |> _assert_eq -1f64
00:14:04 verbose #14511 > >
00:14:04 verbose #14512 > > ╭─[ 91.87ms - stdout ]─────────────────────────────────────────────────────────╮
00:14:04 verbose #14513 > > │ __assert_eq / actual: -1.0 / expected: -1.0                                  │
00:14:04 verbose #14514 > > │                                                                              │
00:14:04 verbose #14515 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:04 verbose #14516 > >
00:14:04 verbose #14517 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:04 verbose #14518 > > //// test
00:14:04 verbose #14519 > >
00:14:04 verbose #14520 > > pi
00:14:04 verbose #14521 > > |> cos
00:14:04 verbose #14522 > > |> fun n => n / 2f64
00:14:04 verbose #14523 > > |> _assert_approx_eq None -0.5
00:14:04 verbose #14524 > >
00:14:04 verbose #14525 > > ╭─[ 96.95ms - stdout ]─────────────────────────────────────────────────────────╮
00:14:04 verbose #14526 > > │ __assert_approx_eq / actual: -0.5 / expected: -0.5                           │
00:14:04 verbose #14527 > > │                                                                              │
00:14:04 verbose #14528 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:04 verbose #14529 > >
00:14:04 verbose #14530 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:04 verbose #14531 > > //// test
00:14:04 verbose #14532 > >
00:14:04 verbose #14533 > > pi / 2 |> cos
00:14:04 verbose #14534 > > |> _assert_approx_eq None 0.00000000000000006123233995736766f64
00:14:04 verbose #14535 > >
00:14:04 verbose #14536 > > ╭─[ 93.44ms - stdout ]─────────────────────────────────────────────────────────╮
00:14:04 verbose #14537 > > │ __assert_approx_eq / actual: 6.123233996e-17 / expected: 6.123233996e-17     │
00:14:04 verbose #14538 > > │                                                                              │
00:14:04 verbose #14539 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:04 verbose #14540 > >
00:14:04 verbose #14541 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:04 verbose #14542 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:04 verbose #14543 > > │ ## fsharp                                                                    │
00:14:04 verbose #14544 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:04 verbose #14545 > >
00:14:04 verbose #14546 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:04 verbose #14547 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:04 verbose #14548 > > │ ### atan2                                                                    │
00:14:04 verbose #14549 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:04 verbose #14550 > >
00:14:04 verbose #14551 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:04 verbose #14552 > > inl atan2 (y : f64) (x : f64) : f64 =
00:14:04 verbose #14553 > >     $'System.Math.Atan2 (!y, !x)'
00:14:04 verbose #14554 > >
00:14:04 verbose #14555 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:04 verbose #14556 > > //// test
00:14:04 verbose #14557 > >
00:14:04 verbose #14558 > > 0 |> atan2 1
00:14:04 verbose #14559 > > |> _assert_eq 1.5707963267948966
00:14:04 verbose #14560 > >
00:14:04 verbose #14561 > > ╭─[ 180.51ms - stdout ]────────────────────────────────────────────────────────╮
00:14:04 verbose #14562 > > │ __assert_eq / actual: 1.570796327 / expected: 1.570796327                    │
00:14:04 verbose #14563 > > │                                                                              │
00:14:04 verbose #14564 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:04 verbose #14565 > >
00:14:04 verbose #14566 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:04 verbose #14567 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:04 verbose #14568 > > │ ## floor                                                                     │
00:14:04 verbose #14569 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:04 verbose #14570 > >
00:14:04 verbose #14571 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:04 verbose #14572 > > inl floor forall t {float}. (n : t) : t =
00:14:04 verbose #14573 > >     n |> $'floor'
00:14:04 verbose #14574 > >
00:14:04 verbose #14575 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:04 verbose #14576 > > //// test
00:14:04 verbose #14577 > >
00:14:04 verbose #14578 > > 0.6 |> floor
00:14:04 verbose #14579 > > |> _assert_eq 0f64
00:14:04 verbose #14580 > >
00:14:04 verbose #14581 > > ╭─[ 123.94ms - stdout ]────────────────────────────────────────────────────────╮
00:14:04 verbose #14582 > > │ __assert_eq / actual: 0.0 / expected: 0.0                                    │
00:14:04 verbose #14583 > > │                                                                              │
00:14:04 verbose #14584 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:04 verbose #14585 > >
00:14:04 verbose #14586 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:04 verbose #14587 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:04 verbose #14588 > > │ ## ceil                                                                      │
00:14:04 verbose #14589 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:04 verbose #14590 > >
00:14:04 verbose #14591 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:04 verbose #14592 > > inl ceil forall t {float}. (n : t) : t =
00:14:04 verbose #14593 > >     n |> $'ceil'
00:14:04 verbose #14594 > >
00:14:04 verbose #14595 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:04 verbose #14596 > > //// test
00:14:04 verbose #14597 > >
00:14:04 verbose #14598 > > 0.6 |> ceil
00:14:04 verbose #14599 > > |> _assert_eq 1f64
00:14:04 verbose #14600 > >
00:14:04 verbose #14601 > > ╭─[ 95.85ms - stdout ]─────────────────────────────────────────────────────────╮
00:14:04 verbose #14602 > > │ __assert_eq / actual: 1.0 / expected: 1.0                                    │
00:14:04 verbose #14603 > > │                                                                              │
00:14:04 verbose #14604 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:04 verbose #14605 > >
00:14:04 verbose #14606 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:04 verbose #14607 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:04 verbose #14608 > > │ ## round                                                                     │
00:14:04 verbose #14609 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:04 verbose #14610 > >
00:14:04 verbose #14611 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:04 verbose #14612 > > inl round forall t {float}. (n : t) : t =
00:14:04 verbose #14613 > >     n |> $'round'
00:14:05 verbose #14614 > >
00:14:05 verbose #14615 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:05 verbose #14616 > > //// test
00:14:05 verbose #14617 > >
00:14:05 verbose #14618 > > 0.5 |> round
00:14:05 verbose #14619 > > |> _assert_eq 0f64
00:14:05 verbose #14620 > >
00:14:05 verbose #14621 > > 1.5 |> round
00:14:05 verbose #14622 > > |> _assert_eq 2f64
00:14:05 verbose #14623 > >
00:14:05 verbose #14624 > > 2.5 |> round
00:14:05 verbose #14625 > > |> _assert_eq 2f64
00:14:05 verbose #14626 > >
00:14:05 verbose #14627 > > 3.5 |> round
00:14:05 verbose #14628 > > |> _assert_eq 4f64
00:14:05 verbose #14629 > >
00:14:05 verbose #14630 > > ╭─[ 122.51ms - stdout ]────────────────────────────────────────────────────────╮
00:14:05 verbose #14631 > > │ __assert_eq / actual: 0.0 / expected: 0.0                                    │
00:14:05 verbose #14632 > > │ __assert_eq / actual: 2.0 / expected: 2.0                                    │
00:14:05 verbose #14633 > > │ __assert_eq / actual: 2.0 / expected: 2.0                                    │
00:14:05 verbose #14634 > > │ __assert_eq / actual: 4.0 / expected: 4.0                                    │
00:14:05 verbose #14635 > > │                                                                              │
00:14:05 verbose #14636 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:05 verbose #14637 > >
00:14:05 verbose #14638 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:05 verbose #14639 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:05 verbose #14640 > > │ ## log_base                                                                  │
00:14:05 verbose #14641 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:05 verbose #14642 > >
00:14:05 verbose #14643 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:05 verbose #14644 > > inl log_base (new_base : f64) (a : f64) : f64 =
00:14:05 verbose #14645 > >     $'System.Math.Log (!a, !new_base)'
00:14:05 verbose #14646 > >
00:14:05 verbose #14647 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:05 verbose #14648 > > //// test
00:14:05 verbose #14649 > >
00:14:05 verbose #14650 > > 100 |> log_base 10
00:14:05 verbose #14651 > > |> _assert_eq 2
00:14:05 verbose #14652 > >
00:14:05 verbose #14653 > > ╭─[ 105.32ms - stdout ]────────────────────────────────────────────────────────╮
00:14:05 verbose #14654 > > │ __assert_eq / actual: 2.0 / expected: 2.0                                    │
00:14:05 verbose #14655 > > │                                                                              │
00:14:05 verbose #14656 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:05 verbose #14657 > >
00:14:05 verbose #14658 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:05 verbose #14659 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:05 verbose #14660 > > │ ## round                                                                     │
00:14:05 verbose #14661 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:05 verbose #14662 > >
00:14:05 verbose #14663 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:05 verbose #14664 > > inl round forall t {float}. (x : t) : t =
00:14:05 verbose #14665 > >     x |> $'round'
00:14:05 verbose #14666 > >
00:14:05 verbose #14667 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:05 verbose #14668 > > //// test
00:14:05 verbose #14669 > >
00:14:05 verbose #14670 > > 0.5 |> round
00:14:05 verbose #14671 > > |> _assert_eq 0f64
00:14:05 verbose #14672 > >
00:14:05 verbose #14673 > > ╭─[ 100.13ms - stdout ]────────────────────────────────────────────────────────╮
00:14:05 verbose #14674 > > │ __assert_eq / actual: 0.0 / expected: 0.0                                    │
00:14:05 verbose #14675 > > │                                                                              │
00:14:05 verbose #14676 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:05 verbose #14677 > >
00:14:05 verbose #14678 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:05 verbose #14679 > > //// test
00:14:05 verbose #14680 > >
00:14:05 verbose #14681 > > 0.6 |> round
00:14:05 verbose #14682 > > |> _assert_eq 1f64
00:14:05 verbose #14683 > >
00:14:05 verbose #14684 > > ╭─[ 98.64ms - stdout ]─────────────────────────────────────────────────────────╮
00:14:05 verbose #14685 > > │ __assert_eq / actual: 1.0 / expected: 1.0                                    │
00:14:05 verbose #14686 > > │                                                                              │
00:14:05 verbose #14687 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:05 verbose #14688 > 00:00:07 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 15089 }
00:14:05 verbose #14689 > 00:00:07   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:14:05 verbose #14690 >     "nbconvert",
00:14:05 verbose #14691 >     "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb",
00:14:05 verbose #14692 >     "--to",
00:14:05 verbose #14693 >     "html",
00:14:05 verbose #14694 >     "--HTMLExporter.theme=dark",
00:14:05 verbose #14695 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:14:06 verbose #14696 > 00:00:08 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb to html
00:14:06 verbose #14697 > 00:00:08 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:14:06 verbose #14698 > 00:00:08 verbose #7 !   validate(nb)
00:14:06 verbose #14699 > 00:00:08 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:14:06 verbose #14700 > 00:00:08 verbose #9 !   return _pygments_highlight(
00:14:06 verbose #14701 > 00:00:08 verbose #10 ! [NbConvertApp] Writing 304823 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/math.dib.html
00:14:07 verbose #14702 > 00:00:08 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 }
00:14:07 verbose #14703 > 00:00:08   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 }
00:14:07 verbose #14704 > 00:00:08   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:14:07 verbose #14705 >     "-c",
00:14:07 verbose #14706 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:14:07 verbose #14707 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:14:07 verbose #14708 > 00:00:09 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:14:07 verbose #14709 > 00:00:09   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:14:07 verbose #14710 > 00:00:09   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 16040 }
00:14:07   debug #14711 runtime.execute_with_options_async / { exit_code = 0; output_length = 19434 }
00:14:07   debug #17 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path math.dib --retries 3
00:14:07   debug #14712 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path mapm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:14:07 verbose #14713 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "mapm.dib", "--retries", "3"])) }
00:14:07 verbose #14714 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:14:07 verbose #14715 >     "repl",
00:14:07 verbose #14716 >     "--exit-after-run",
00:14:07 verbose #14717 >     "--run",
00:14:07 verbose #14718 >     "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib",
00:14:07 verbose #14719 >     "--output-path",
00:14:07 verbose #14720 >     "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb",
00:14:07 verbose #14721 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:14:08 verbose #14722 > >
00:14:08 verbose #14723 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:08 verbose #14724 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:08 verbose #14725 > > │ # mapm                                                                       │
00:14:08 verbose #14726 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:11 verbose #14727 > >
00:14:11 verbose #14728 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:11 verbose #14729 > > open rust.rust_operators
00:14:11 verbose #14730 > >
00:14:11 verbose #14731 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:11 verbose #14732 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:11 verbose #14733 > > │ ## rust                                                                      │
00:14:11 verbose #14734 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:11 verbose #14735 > >
00:14:11 verbose #14736 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:11 verbose #14737 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:11 verbose #14738 > > │ ### hash_map                                                                 │
00:14:11 verbose #14739 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:11 verbose #14740 > >
00:14:11 verbose #14741 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:11 verbose #14742 > > nominal hash_map k v =
00:14:11 verbose #14743 > >     `(
00:14:11 verbose #14744 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:14:11 verbose #14745 > > Fable.Core.Emit(\"std::collections::HashMap<$0, $1>\")>]]\n#endif\ntype
00:14:11 verbose #14746 > > std_collections_HashMap<'K, 'V> = class end"
00:14:11 verbose #14747 > >         $'' : $'std_collections_HashMap<`k, `v>'
00:14:11 verbose #14748 > >     )
00:14:11 verbose #14749 > >
00:14:11 verbose #14750 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:11 verbose #14751 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:11 verbose #14752 > > │ ### b_tree_map                                                               │
00:14:11 verbose #14753 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:11 verbose #14754 > >
00:14:11 verbose #14755 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:11 verbose #14756 > > nominal b_tree_map k v =
00:14:11 verbose #14757 > >     `(
00:14:11 verbose #14758 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:14:11 verbose #14759 > > Fable.Core.Emit(\"std::collections::BTreeMap<$0, $1>\")>]]\n#endif\ntype
00:14:11 verbose #14760 > > std_collections_BTreeMap<'K, 'V> = class end"
00:14:11 verbose #14761 > >         $'' : $'std_collections_BTreeMap<`k, `v>'
00:14:11 verbose #14762 > >     )
00:14:11 verbose #14763 > >
00:14:11 verbose #14764 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:11 verbose #14765 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:11 verbose #14766 > > │ ### new_hash_map                                                             │
00:14:11 verbose #14767 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:11 verbose #14768 > >
00:14:11 verbose #14769 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:11 verbose #14770 > > inl new_hash_map () : hash_map _ _ =
00:14:11 verbose #14771 > >     !\($'"std::collections::HashMap::new()"')
00:14:11 verbose #14772 > >
00:14:11 verbose #14773 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:11 verbose #14774 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:11 verbose #14775 > > │ ### new_b_tree_map                                                           │
00:14:11 verbose #14776 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:11 verbose #14777 > >
00:14:11 verbose #14778 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:11 verbose #14779 > > inl new_b_tree_map () : b_tree_map _ _ =
00:14:11 verbose #14780 > >     !\($'"std::collections::BTreeMap::new()"')
00:14:12 verbose #14781 > >
00:14:12 verbose #14782 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:12 verbose #14783 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:12 verbose #14784 > > │ ### get                                                                      │
00:14:12 verbose #14785 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:12 verbose #14786 > >
00:14:12 verbose #14787 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:12 verbose #14788 > > inl get forall k v. (key : k) (map : hash_map k v) : optionm'.option' v =
00:14:12 verbose #14789 > >     inl key = join key
00:14:12 verbose #14790 > >     !\\(map, $'"std::collections::HashMap::get(&$0, &!key).map(|x|
00:14:12 verbose #14791 > > x).cloned()"')
00:14:12 verbose #14792 > >
00:14:12 verbose #14793 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:12 verbose #14794 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:12 verbose #14795 > > │ ### insert                                                                   │
00:14:12 verbose #14796 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:12 verbose #14797 > >
00:14:12 verbose #14798 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:12 verbose #14799 > > inl insert forall k v. (key : k) (value : v) (map : hash_map k v) :
00:14:12 verbose #14800 > > optionm'.option' v =
00:14:12 verbose #14801 > >     inl key = join key
00:14:12 verbose #14802 > >     !\($'"let mut !map = !map"')
00:14:12 verbose #14803 > >     !\($'"std::collections::HashMap::insert(&mut !map, !key, !value)"')
00:14:12 verbose #14804 > >
00:14:12 verbose #14805 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:12 verbose #14806 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:12 verbose #14807 > > │ ### map'                                                                     │
00:14:12 verbose #14808 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:12 verbose #14809 > >
00:14:12 verbose #14810 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:12 verbose #14811 > > inl map' forall k v w. (fn : v -> w) (map : hash_map k v) : hash_map k w =
00:14:12 verbose #14812 > >     !\\((map, fn), $'"$0.into_iter().map(|(k, v)| (k, $1(v))).collect()"')
00:14:12 verbose #14813 > >
00:14:12 verbose #14814 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:12 verbose #14815 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:12 verbose #14816 > > │ ### hash_map_count                                                           │
00:14:12 verbose #14817 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:12 verbose #14818 > >
00:14:12 verbose #14819 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:12 verbose #14820 > > inl hash_map_count forall k v. (map : hash_map k v) : i32 =
00:14:12 verbose #14821 > >     !\\(map, $'"$0.count()"')
00:14:12 verbose #14822 > >
00:14:12 verbose #14823 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:12 verbose #14824 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:12 verbose #14825 > > │ ### from_vec                                                                 │
00:14:12 verbose #14826 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:12 verbose #14827 > >
00:14:12 verbose #14828 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:12 verbose #14829 > > inl from_vec forall k v. (vec : am'.vec (k * v)) : hash_map k v =
00:14:12 verbose #14830 > >     !\($'"std::collections::HashMap::from_iter(!vec)"')
00:14:12 verbose #14831 > >
00:14:12 verbose #14832 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:12 verbose #14833 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:12 verbose #14834 > > │ ### from_vec_pairs                                                           │
00:14:12 verbose #14835 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:12 verbose #14836 > >
00:14:12 verbose #14837 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:12 verbose #14838 > > inl from_vec_pairs forall k v. (vec : am'.vec (pair k v)) : hash_map k v =
00:14:12 verbose #14839 > >     !\($'"std::collections::HashMap::from_iter(!vec.iter().map(|x|
00:14:12 verbose #14840 > > x.as_ref()).map(|&(ref k, ref v)| (k.clone(), v.clone())))"')
00:14:13 verbose #14841 > >
00:14:13 verbose #14842 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:13 verbose #14843 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:13 verbose #14844 > > │ ### b_tree_map_from_vec_pairs                                                │
00:14:13 verbose #14845 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:13 verbose #14846 > >
00:14:13 verbose #14847 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:13 verbose #14848 > > inl b_tree_map_from_vec_pairs forall k v. (vec : am'.vec (pair k v)) :
00:14:13 verbose #14849 > > b_tree_map k v =
00:14:13 verbose #14850 > >     !\($'"std::collections::BTreeMap::from_iter(!vec.iter().map(|x|
00:14:13 verbose #14851 > > x.as_ref()).map(|&(ref k, ref v)| (k.clone(), v.clone())))"')
00:14:13 verbose #14852 > >
00:14:13 verbose #14853 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:13 verbose #14854 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:13 verbose #14855 > > │ ### from_array                                                               │
00:14:13 verbose #14856 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:13 verbose #14857 > >
00:14:13 verbose #14858 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:13 verbose #14859 > > inl from_array forall k v. (array : array_base (k * v)) : hash_map k v =
00:14:13 verbose #14860 > >     array |> am'.to_vec |> from_vec
00:14:13 verbose #14861 > >
00:14:13 verbose #14862 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:13 verbose #14863 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:13 verbose #14864 > > │ ### from_list                                                                │
00:14:13 verbose #14865 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:13 verbose #14866 > >
00:14:13 verbose #14867 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:13 verbose #14868 > > inl from_list forall k v. (list : list (k * v)) : hash_map k v =
00:14:13 verbose #14869 > >     inl (a list) : _ i32 _ = list |> listm.toArray
00:14:13 verbose #14870 > >     list |> am'.to_vec |> from_vec
00:14:13 verbose #14871 > >
00:14:13 verbose #14872 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:13 verbose #14873 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:13 verbose #14874 > > │ ### to_vec                                                                   │
00:14:13 verbose #14875 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:13 verbose #14876 > >
00:14:13 verbose #14877 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:13 verbose #14878 > > inl to_vec forall k v. (map : hash_map k v) : am'.vec (k * v) =
00:14:13 verbose #14879 > >     !\\(map, $'"$0.into_iter().map(|(k, v)| (k, v)).collect::<Vec<_>>()"')
00:14:13 verbose #14880 > >
00:14:13 verbose #14881 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:13 verbose #14882 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:13 verbose #14883 > > │ ## fsharp                                                                    │
00:14:13 verbose #14884 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:13 verbose #14885 > >
00:14:13 verbose #14886 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:13 verbose #14887 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:13 verbose #14888 > > │ ### map                                                                      │
00:14:13 verbose #14889 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:13 verbose #14890 > >
00:14:13 verbose #14891 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:13 verbose #14892 > > nominal map k v = $'Map<`k, `v>'
00:14:13 verbose #14893 > >
00:14:13 verbose #14894 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:13 verbose #14895 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:13 verbose #14896 > > │ ### item                                                                     │
00:14:13 verbose #14897 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:13 verbose #14898 > >
00:14:13 verbose #14899 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:13 verbose #14900 > > inl item forall k v. (k : k) (map : map k v) : v =
00:14:13 verbose #14901 > >     $'!map.[[!k]]'
00:14:13 verbose #14902 > >
00:14:13 verbose #14903 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:13 verbose #14904 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:13 verbose #14905 > > │ ### of_array                                                                 │
00:14:13 verbose #14906 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:13 verbose #14907 > >
00:14:13 verbose #14908 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:13 verbose #14909 > > inl of_array forall k v. (array : a _ (k * v)) : map k v =
00:14:13 verbose #14910 > >     $'!array |> Array.map (fun (struct (a, b)) -> a, b) |> Map.ofArray'
00:14:13 verbose #14911 > 00:00:06 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 12286 }
00:14:13 verbose #14912 > 00:00:06   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:14:13 verbose #14913 >     "nbconvert",
00:14:13 verbose #14914 >     "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb",
00:14:13 verbose #14915 >     "--to",
00:14:13 verbose #14916 >     "html",
00:14:13 verbose #14917 >     "--HTMLExporter.theme=dark",
00:14:13 verbose #14918 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:14:14 verbose #14919 > 00:00:07 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb to html
00:14:14 verbose #14920 > 00:00:07 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:14:14 verbose #14921 > 00:00:07 verbose #7 !   validate(nb)
00:14:14 verbose #14922 > 00:00:07 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:14:14 verbose #14923 > 00:00:07 verbose #9 !   return _pygments_highlight(
00:14:15 verbose #14924 > 00:00:07 verbose #10 ! [NbConvertApp] Writing 301372 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.html
00:14:15 verbose #14925 > 00:00:07 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 }
00:14:15 verbose #14926 > 00:00:07   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 }
00:14:15 verbose #14927 > 00:00:07   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:14:15 verbose #14928 >     "-c",
00:14:15 verbose #14929 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:14:15 verbose #14930 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:14:15 verbose #14931 > 00:00:08 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:14:15 verbose #14932 > 00:00:08   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:14:15 verbose #14933 > 00:00:08   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 13237 }
00:14:15   debug #14934 runtime.execute_with_options_async / { exit_code = 0; output_length = 16441 }
00:14:15   debug #18 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path mapm.dib --retries 3
00:14:15   debug #14935 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path optionm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:14:15 verbose #14936 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "optionm'.dib", "--retries", "3"])) }
00:14:15 verbose #14937 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:14:15 verbose #14938 >     "repl",
00:14:15 verbose #14939 >     "--exit-after-run",
00:14:15 verbose #14940 >     "--run",
00:14:15 verbose #14941 >     "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib",
00:14:15 verbose #14942 >     "--output-path",
00:14:15 verbose #14943 >     "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb",
00:14:15 verbose #14944 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:14:16 verbose #14945 > >
00:14:16 verbose #14946 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:16 verbose #14947 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:16 verbose #14948 > > │ # optionm'                                                                   │
00:14:16 verbose #14949 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:19 verbose #14950 > >
00:14:19 verbose #14951 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:19 verbose #14952 > > open rust
00:14:19 verbose #14953 > > open rust_operators
00:14:19 verbose #14954 > >
00:14:19 verbose #14955 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:19 verbose #14956 > > //// test
00:14:19 verbose #14957 > >
00:14:19 verbose #14958 > > open testing
00:14:19 verbose #14959 > >
00:14:19 verbose #14960 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:19 verbose #14961 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:19 verbose #14962 > > │ ## optionm'                                                                  │
00:14:19 verbose #14963 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:19 verbose #14964 > >
00:14:19 verbose #14965 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:19 verbose #14966 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:19 verbose #14967 > > │ ### default_value                                                            │
00:14:19 verbose #14968 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:19 verbose #14969 > >
00:14:19 verbose #14970 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:19 verbose #14971 > > inl default_value d =
00:14:19 verbose #14972 > >     optionm.defaultWith d
00:14:20 verbose #14973 > >
00:14:20 verbose #14974 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:20 verbose #14975 > > //// test
00:14:20 verbose #14976 > >
00:14:20 verbose #14977 > > None
00:14:20 verbose #14978 > > |> default_value 3i32
00:14:20 verbose #14979 > > |> _assert_eq 3i32
00:14:20 verbose #14980 > >
00:14:20 verbose #14981 > > ╭─[ 687.79ms - stdout ]────────────────────────────────────────────────────────╮
00:14:20 verbose #14982 > > │ __assert_eq / actual: 3 / expected: 3                                        │
00:14:20 verbose #14983 > > │                                                                              │
00:14:20 verbose #14984 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:20 verbose #14985 > >
00:14:20 verbose #14986 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:20 verbose #14987 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:20 verbose #14988 > > │ ### (/??)                                                                    │
00:14:20 verbose #14989 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:20 verbose #14990 > >
00:14:20 verbose #14991 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:20 verbose #14992 > > inl (/??) a b =
00:14:20 verbose #14993 > >     a |> default_value b
00:14:20 verbose #14994 > >
00:14:20 verbose #14995 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:20 verbose #14996 > > //// test
00:14:20 verbose #14997 > >
00:14:20 verbose #14998 > > None /?? 3i32
00:14:20 verbose #14999 > > |> _assert_eq 3i32
00:14:20 verbose #15000 > >
00:14:20 verbose #15001 > > ╭─[ 93.94ms - stdout ]─────────────────────────────────────────────────────────╮
00:14:20 verbose #15002 > > │ __assert_eq / actual: 3 / expected: 3                                        │
00:14:20 verbose #15003 > > │                                                                              │
00:14:20 verbose #15004 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:20 verbose #15005 > >
00:14:20 verbose #15006 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:20 verbose #15007 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:20 verbose #15008 > > │ ### default_with                                                             │
00:14:20 verbose #15009 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:20 verbose #15010 > >
00:14:20 verbose #15011 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:20 verbose #15012 > > inl default_with fn = function
00:14:20 verbose #15013 > >     | Some x => x
00:14:20 verbose #15014 > >     | None => fn ()
00:14:20 verbose #15015 > >
00:14:20 verbose #15016 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:20 verbose #15017 > > //// test
00:14:20 verbose #15018 > >
00:14:20 verbose #15019 > > None
00:14:20 verbose #15020 > > |> default_with fun () => 3i32
00:14:20 verbose #15021 > > |> _assert_eq 3i32
00:14:21 verbose #15022 > >
00:14:21 verbose #15023 > > ╭─[ 96.05ms - stdout ]─────────────────────────────────────────────────────────╮
00:14:21 verbose #15024 > > │ __assert_eq / actual: 3 / expected: 3                                        │
00:14:21 verbose #15025 > > │                                                                              │
00:14:21 verbose #15026 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:21 verbose #15027 > >
00:14:21 verbose #15028 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:21 verbose #15029 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:21 verbose #15030 > > │ ### choose                                                                   │
00:14:21 verbose #15031 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:21 verbose #15032 > >
00:14:21 verbose #15033 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:21 verbose #15034 > > inl choose fn a b =
00:14:21 verbose #15035 > >     match a, b with
00:14:21 verbose #15036 > >     | Some x, Some y => fn x y |> Some
00:14:21 verbose #15037 > >     | _ => None
00:14:21 verbose #15038 > >
00:14:21 verbose #15039 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:21 verbose #15040 > > //// test
00:14:21 verbose #15041 > >
00:14:21 verbose #15042 > > (Some 2i32, Some 3)
00:14:21 verbose #15043 > > ||> choose (+)
00:14:21 verbose #15044 > > |> _assert_eq (Some 5)
00:14:21 verbose #15045 > >
00:14:21 verbose #15046 > > ╭─[ 405.56ms - stdout ]────────────────────────────────────────────────────────╮
00:14:21 verbose #15047 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5                            │
00:14:21 verbose #15048 > > │                                                                              │
00:14:21 verbose #15049 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:21 verbose #15050 > >
00:14:21 verbose #15051 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:21 verbose #15052 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:21 verbose #15053 > > │ ### iter                                                                     │
00:14:21 verbose #15054 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:21 verbose #15055 > >
00:14:21 verbose #15056 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:21 verbose #15057 > > inl iter fn = function
00:14:21 verbose #15058 > >     | Some x => fn x
00:14:21 verbose #15059 > >     | None => ()
00:14:21 verbose #15060 > >
00:14:21 verbose #15061 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:21 verbose #15062 > > //// test
00:14:21 verbose #15063 > >
00:14:21 verbose #15064 > > inl n = mut 1i32
00:14:21 verbose #15065 > > inl fn =
00:14:21 verbose #15066 > >     fun n' =>
00:14:21 verbose #15067 > >         n <- *n + n'
00:14:21 verbose #15068 > > Some 1i32 |> iter fn
00:14:21 verbose #15069 > > None |> iter fn
00:14:21 verbose #15070 > > *n
00:14:21 verbose #15071 > > |> _assert_eq 2i32
00:14:21 verbose #15072 > >
00:14:21 verbose #15073 > > ╭─[ 198.39ms - stdout ]────────────────────────────────────────────────────────╮
00:14:21 verbose #15074 > > │ __assert_eq / actual: 2 / expected: 2                                        │
00:14:21 verbose #15075 > > │                                                                              │
00:14:21 verbose #15076 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:21 verbose #15077 > >
00:14:21 verbose #15078 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:21 verbose #15079 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:21 verbose #15080 > > │ ### flatten                                                                  │
00:14:21 verbose #15081 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:21 verbose #15082 > >
00:14:21 verbose #15083 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:21 verbose #15084 > > inl flatten x =
00:14:21 verbose #15085 > >     match x with
00:14:21 verbose #15086 > >     | Some (Some x) => Some x
00:14:21 verbose #15087 > >     | _ => None
00:14:21 verbose #15088 > >
00:14:21 verbose #15089 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:21 verbose #15090 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:21 verbose #15091 > > │ ## fsharp                                                                    │
00:14:21 verbose #15092 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:21 verbose #15093 > >
00:14:21 verbose #15094 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:21 verbose #15095 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:21 verbose #15096 > > │ ### option'                                                                  │
00:14:21 verbose #15097 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:21 verbose #15098 > >
00:14:21 verbose #15099 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:21 verbose #15100 > > nominal option' t = $"backend_switch `({ Fsharp : $"`t option"; Python : t })"
00:14:22 verbose #15101 > >
00:14:22 verbose #15102 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:22 verbose #15103 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:22 verbose #15104 > > │ ### none'                                                                    │
00:14:22 verbose #15105 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:22 verbose #15106 > >
00:14:22 verbose #15107 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:22 verbose #15108 > > inl none' forall t. () : option' t =
00:14:22 verbose #15109 > >     $'None'
00:14:22 verbose #15110 > >
00:14:22 verbose #15111 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:22 verbose #15112 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:22 verbose #15113 > > │ ### some'                                                                    │
00:14:22 verbose #15114 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:22 verbose #15115 > >
00:14:22 verbose #15116 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:22 verbose #15117 > > inl some' forall t. (x : t) : option' t =
00:14:22 verbose #15118 > >     backend_switch {
00:14:22 verbose #15119 > >         Fsharp = fun () => $'Some !x ' : option' t
00:14:22 verbose #15120 > >         Python = fun () => $'!x # some\' ' : option' t
00:14:22 verbose #15121 > >     }
00:14:22 verbose #15122 > >
00:14:22 verbose #15123 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:22 verbose #15124 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:22 verbose #15125 > > │ ### default_value'                                                           │
00:14:22 verbose #15126 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:22 verbose #15127 > >
00:14:22 verbose #15128 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:22 verbose #15129 > > inl default_value' forall t. (value : t) (x : option' t) : t =
00:14:22 verbose #15130 > >     backend_switch {
00:14:22 verbose #15131 > >         Fsharp = fun () => $'!x |> Option.defaultValue !value ' : t
00:14:22 verbose #15132 > >         Python = fun () => $'!x or !value ' : t
00:14:22 verbose #15133 > >     }
00:14:22 verbose #15134 > >
00:14:22 verbose #15135 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:22 verbose #15136 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:22 verbose #15137 > > │ ### box                                                                      │
00:14:22 verbose #15138 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:22 verbose #15139 > >
00:14:22 verbose #15140 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:22 verbose #15141 > > inl box forall t. (x : option t) : option' t =
00:14:22 verbose #15142 > >     // x
00:14:22 verbose #15143 > >     // |> optionm.map some'
00:14:22 verbose #15144 > >     // |> default_with none'
00:14:22 verbose #15145 > >     match x with
00:14:22 verbose #15146 > >     | Some x => some' x
00:14:22 verbose #15147 > >     | None => none' ()
00:14:22 verbose #15148 > >
00:14:22 verbose #15149 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:22 verbose #15150 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:22 verbose #15151 > > │ ### map                                                                      │
00:14:22 verbose #15152 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:22 verbose #15153 > >
00:14:22 verbose #15154 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:22 verbose #15155 > > inl map forall t u. (fn : t -> u) (x : option' t) : option' u =
00:14:22 verbose #15156 > >     backend_switch {
00:14:22 verbose #15157 > >         Fsharp = fun () =>
00:14:22 verbose #15158 > >             inl result : option' u = none' ()
00:14:22 verbose #15159 > >             $'let _!result = ref !result '
00:14:22 verbose #15160 > >             inl set_result (result : ref (option' u)) (x : option' u) : ref
00:14:22 verbose #15161 > > (option' u) =
00:14:22 verbose #15162 > >                 result |> ref_set_value x
00:14:22 verbose #15163 > >             inl set_result = set_result $'_!result ' |> dyn
00:14:22 verbose #15164 > >             fun () =>
00:14:22 verbose #15165 > >                 $'match !x with'
00:14:22 verbose #15166 > >                 $'| Some x -> ('
00:14:22 verbose #15167 > >                 $'(fun () ->'
00:14:22 verbose #15168 > >                 $'(fun () ->'
00:14:22 verbose #15169 > >                 inl x = dyn $'x'
00:14:22 verbose #15170 > >                 x |> fn |> emit_unit
00:14:22 verbose #15171 > >                 $')'
00:14:22 verbose #15172 > >                 $'|> fun x -> x () |> Some'
00:14:22 verbose #15173 > >                 $') () ) | None -> None'
00:14:22 verbose #15174 > >                 $'|> !set_result |> ignore'
00:14:22 verbose #15175 > >             |> exec_unit
00:14:22 verbose #15176 > >             $'_!result.Value ' : option' u
00:14:22 verbose #15177 > >         Python = fun () =>
00:14:22 verbose #15178 > >             if x =. none' ()
00:14:22 verbose #15179 > >             then none' ()
00:14:22 verbose #15180 > >             else fn $'!x ' |> fun x => $'!x ' : option' u
00:14:22 verbose #15181 > >     }
00:14:22 verbose #15182 > >
00:14:22 verbose #15183 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:22 verbose #15184 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:22 verbose #15185 > > │ ### map''                                                                    │
00:14:22 verbose #15186 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:22 verbose #15187 > >
00:14:22 verbose #15188 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:22 verbose #15189 > > inl map'' forall t u. (fn : t -> u) (x : option' t) : option' u =
00:14:22 verbose #15190 > >     backend_switch {
00:14:22 verbose #15191 > >         Fsharp = fun () => $'!x |> Option.map !fn ' : option' u
00:14:22 verbose #15192 > >         Python = fun () => x |> map fn
00:14:22 verbose #15193 > >     }
00:14:22 verbose #15194 > >
00:14:22 verbose #15195 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:22 verbose #15196 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:22 verbose #15197 > > │ ### unbox                                                                    │
00:14:22 verbose #15198 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:22 verbose #15199 > >
00:14:22 verbose #15200 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:22 verbose #15201 > > inl unbox forall t. (x : option' t) : option t =
00:14:22 verbose #15202 > >     x |> map Some |> default_value' None
00:14:22 verbose #15203 > >     // inl some x : option t = Some x
00:14:22 verbose #15204 > >     // inl some = join some
00:14:22 verbose #15205 > >     // inl none : option t = None
00:14:22 verbose #15206 > >     // $'!x |> Option.map !some |> Option.defaultValue !none '
00:14:22 verbose #15207 > >
00:14:22 verbose #15208 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:22 verbose #15209 > > //// test
00:14:22 verbose #15210 > > ///! fsharp
00:14:22 verbose #15211 > > ///! cuda
00:14:22 verbose #15212 > > ///! rust
00:14:22 verbose #15213 > > ///! typescript
00:14:22 verbose #15214 > > ///! python
00:14:22 verbose #15215 > >
00:14:22 verbose #15216 > > inl x = Some 3i32
00:14:22 verbose #15217 > > inl y : option i32 = None
00:14:22 verbose #15218 > > inl x' = x |> box |> unbox
00:14:22 verbose #15219 > > inl y' = y |> box |> map id |> unbox
00:14:22 verbose #15220 > > (x', y') |> _assert_eq' (x, y)
00:14:34 verbose #15221 > >
00:14:34 verbose #15222 > > ╭─[ 11.44s - return value ]────────────────────────────────────────────────────╮
00:14:34 verbose #15223 > > │ .py output (Cuda):                                                           │
00:14:34 verbose #15224 > > │ __assert_eq' / actual: (US0_0(v0=3), US0_1()) / expected: (US0_0(v0=3),      │
00:14:34 verbose #15225 > > │ US0_1())                                                                     │
00:14:34 verbose #15226 > > │                                                                              │
00:14:34 verbose #15227 > > │ .rs output:                                                                  │
00:14:34 verbose #15228 > > │ __assert_eq' / actual: (US0_0(3), US0_1) / expected: (US0_0(3), US0_1)       │
00:14:34 verbose #15229 > > │                                                                              │
00:14:34 verbose #15230 > > │ .ts output:                                                                  │
00:14:34 verbose #15231 > > │ __assert_eq' / actual: US0_0 3,US0_1 / expected: US0_0 3,US0_1               │
00:14:34 verbose #15232 > > │                                                                              │
00:14:34 verbose #15233 > > │ .py output:                                                                  │
00:14:34 verbose #15234 > > │ __assert_eq' / actual: (US0_0 3, US0_1) / expected: (US0_0 3, US0_1)         │
00:14:34 verbose #15235 > > │                                                                              │
00:14:34 verbose #15236 > > │                                                                              │
00:14:34 verbose #15237 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:34 verbose #15238 > >
00:14:34 verbose #15239 > > ╭─[ 11.44s - stdout ]──────────────────────────────────────────────────────────╮
00:14:34 verbose #15240 > > │ .fsx output:                                                                 │
00:14:34 verbose #15241 > > │ __assert_eq' / actual: struct (US0_0 3, US0_1) / expected: struct (US0_0 3,  │
00:14:34 verbose #15242 > > │ US0_1)                                                                       │
00:14:34 verbose #15243 > > │                                                                              │
00:14:34 verbose #15244 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:34 verbose #15245 > >
00:14:34 verbose #15246 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:34 verbose #15247 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:34 verbose #15248 > > │ ### of_obj                                                                   │
00:14:34 verbose #15249 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:34 verbose #15250 > >
00:14:34 verbose #15251 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:34 verbose #15252 > > inl of_obj forall t. (x : t) : option' t =
00:14:34 verbose #15253 > >     backend_switch {
00:14:34 verbose #15254 > >         Fsharp = fun () =>
00:14:34 verbose #15255 > >             $'let mutable _!x = None'
00:14:34 verbose #15256 > >             $'#if \!FABLE_COMPILER && \!WASM && \!CONTRACT'
00:14:34 verbose #15257 > >             ((x |> $'Option.ofObj') : option' t) |> emit_unit
00:14:34 verbose #15258 > >             $'#else'
00:14:34 verbose #15259 > >             $'Some !x '
00:14:34 verbose #15260 > >             $'#endif'
00:14:34 verbose #15261 > >             $'|> fun x -> _!x <- Some x'
00:14:34 verbose #15262 > >             $'match _!x with Some x -> x | None -> failwith "optionm\'.of_obj
00:14:34 verbose #15263 > > _!x=None"' : option' t
00:14:34 verbose #15264 > >         Python = fun () =>
00:14:34 verbose #15265 > >             $'!x ' : option' t
00:14:34 verbose #15266 > >     }
00:14:34 verbose #15267 > >
00:14:34 verbose #15268 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:34 verbose #15269 > > //// test
00:14:34 verbose #15270 > > ///! fsharp
00:14:34 verbose #15271 > > ///! cuda
00:14:34 verbose #15272 > > ////! rust // attempted to zero-initialize type `alloc::sync::Arc<dyn
00:14:34 verbose #15273 > > core::any::Any>`, which is invalid
00:14:34 verbose #15274 > > ///! typescript
00:14:34 verbose #15275 > > ///! python
00:14:34 verbose #15276 > >
00:14:34 verbose #15277 > > null ()
00:14:34 verbose #15278 > > |> of_obj
00:14:34 verbose #15279 > > |> unbox
00:14:34 verbose #15280 > > |> _assert_eq (None : option string)
00:14:42 verbose #15281 > >
00:14:42 verbose #15282 > > ╭─[ 8.56s - return value ]─────────────────────────────────────────────────────╮
00:14:42 verbose #15283 > > │ .py output (Cuda):                                                           │
00:14:42 verbose #15284 > > │ __assert_eq / actual: US0_1() / expected: US0_1()                            │
00:14:42 verbose #15285 > > │                                                                              │
00:14:42 verbose #15286 > > │ .ts output:                                                                  │
00:14:42 verbose #15287 > > │ __assert_eq / actual: US0_1 / expected: US0_1                                │
00:14:42 verbose #15288 > > │                                                                              │
00:14:42 verbose #15289 > > │ .py output:                                                                  │
00:14:42 verbose #15290 > > │ __assert_eq / actual: US0_1 / expected: US0_1                                │
00:14:42 verbose #15291 > > │                                                                              │
00:14:42 verbose #15292 > > │                                                                              │
00:14:42 verbose #15293 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:42 verbose #15294 > >
00:14:42 verbose #15295 > > ╭─[ 8.56s - stdout ]───────────────────────────────────────────────────────────╮
00:14:42 verbose #15296 > > │ .fsx output:                                                                 │
00:14:42 verbose #15297 > > │ __assert_eq / actual: US0_1 / expected: US0_1                                │
00:14:42 verbose #15298 > > │                                                                              │
00:14:42 verbose #15299 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:42 verbose #15300 > >
00:14:42 verbose #15301 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:42 verbose #15302 > > //// test
00:14:42 verbose #15303 > > ///! fsharp
00:14:42 verbose #15304 > > ///! cuda
00:14:42 verbose #15305 > > ///! rust
00:14:42 verbose #15306 > > ///! typescript
00:14:42 verbose #15307 > > ///! python
00:14:42 verbose #15308 > >
00:14:42 verbose #15309 > > ""
00:14:42 verbose #15310 > > |> of_obj
00:14:42 verbose #15311 > > |> unbox
00:14:42 verbose #15312 > > |> _assert_eq' (Some "")
00:14:54 verbose #15313 > >
00:14:54 verbose #15314 > > ╭─[ 11.35s - return value ]────────────────────────────────────────────────────╮
00:14:54 verbose #15315 > > │ .py output (Cuda):                                                           │
00:14:54 verbose #15316 > > │ __assert_eq' / actual: US0_0(v0='') / expected: US0_0(v0='')                 │
00:14:54 verbose #15317 > > │                                                                              │
00:14:54 verbose #15318 > > │ .rs output:                                                                  │
00:14:54 verbose #15319 > > │ __assert_eq' / actual: US0_0("") / expected: US0_0("")                       │
00:14:54 verbose #15320 > > │                                                                              │
00:14:54 verbose #15321 > > │ .ts output:                                                                  │
00:14:54 verbose #15322 > > │ __assert_eq' / actual: US0_0  / expected: US0_0                              │
00:14:54 verbose #15323 > > │                                                                              │
00:14:54 verbose #15324 > > │ .py output:                                                                  │
00:14:54 verbose #15325 > > │ __assert_eq' / actual: US0_0 "" / expected: US0_0 ""                         │
00:14:54 verbose #15326 > > │                                                                              │
00:14:54 verbose #15327 > > │                                                                              │
00:14:54 verbose #15328 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 verbose #15329 > >
00:14:54 verbose #15330 > > ╭─[ 11.35s - stdout ]──────────────────────────────────────────────────────────╮
00:14:54 verbose #15331 > > │ .fsx output:                                                                 │
00:14:54 verbose #15332 > > │ __assert_eq' / actual: US0_0 "" / expected: US0_0 ""                         │
00:14:54 verbose #15333 > > │                                                                              │
00:14:54 verbose #15334 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 verbose #15335 > >
00:14:54 verbose #15336 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:54 verbose #15337 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:54 verbose #15338 > > │ ### flatten'                                                                 │
00:14:54 verbose #15339 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 verbose #15340 > >
00:14:54 verbose #15341 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:54 verbose #15342 > > inl flatten' x =
00:14:54 verbose #15343 > >     x
00:14:54 verbose #15344 > >     |> unbox
00:14:54 verbose #15345 > >     |> optionm.map unbox
00:14:54 verbose #15346 > >     |> flatten
00:14:54 verbose #15347 > >
00:14:54 verbose #15348 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:54 verbose #15349 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:54 verbose #15350 > > │ ## rust                                                                      │
00:14:54 verbose #15351 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 verbose #15352 > >
00:14:54 verbose #15353 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:54 verbose #15354 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:54 verbose #15355 > > │ ### try'                                                                     │
00:14:54 verbose #15356 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 verbose #15357 > >
00:14:54 verbose #15358 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:54 verbose #15359 > > inl try' forall t. (x : option' t) : t =
00:14:54 verbose #15360 > >     !\\(x, $'"$0?"')
00:14:54 verbose #15361 > >
00:14:54 verbose #15362 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:54 verbose #15363 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:54 verbose #15364 > > │ ### map'                                                                     │
00:14:54 verbose #15365 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 verbose #15366 > >
00:14:54 verbose #15367 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:54 verbose #15368 > > inl map' forall t u. (fn : t -> u) (x : option' t) : option' u =
00:14:54 verbose #15369 > >     (!\\(x, $'"true; let _optionm_map_ = $0.map(|x| { //"') : bool) |> ignore
00:14:54 verbose #15370 > >     inl result = fn !\($'"x"')
00:14:54 verbose #15371 > >     (!\\(result, $'"true; $0 })"') : bool) |> ignore
00:14:54 verbose #15372 > >     !\($'"_optionm_map_"')
00:14:54 verbose #15373 > >
00:14:54 verbose #15374 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:54 verbose #15375 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:54 verbose #15376 > > │ ### unwrap                                                                   │
00:14:54 verbose #15377 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 verbose #15378 > >
00:14:54 verbose #15379 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:54 verbose #15380 > > inl unwrap forall t. (x : option' t) : t =
00:14:54 verbose #15381 > >     !\\(x, $'"$0.unwrap()"')
00:14:54 verbose #15382 > >
00:14:54 verbose #15383 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:54 verbose #15384 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:54 verbose #15385 > > │ ### take                                                                     │
00:14:54 verbose #15386 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 verbose #15387 > >
00:14:54 verbose #15388 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:54 verbose #15389 > > inl take forall t. (x : option' t) : option' t =
00:14:54 verbose #15390 > >     (!\\(x, $'"true; let mut !x = !x"') : bool) |> ignore
00:14:54 verbose #15391 > >     !\\(x, $'"Option::take(&mut $0)"')
00:14:54 verbose #15392 > >
00:14:54 verbose #15393 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:54 verbose #15394 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:54 verbose #15395 > > │ ### take_ref                                                                 │
00:14:54 verbose #15396 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 verbose #15397 > >
00:14:54 verbose #15398 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:54 verbose #15399 > > inl take_ref forall t. (x : rust.ref (option' t)) : option' t =
00:14:54 verbose #15400 > >     (!\\(x, $'"true; let mut !x = !x"') : bool) |> ignore
00:14:54 verbose #15401 > >     !\\(x, $'"Option::take(&mut $0)"')
00:14:54 verbose #15402 > >
00:14:54 verbose #15403 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:54 verbose #15404 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:54 verbose #15405 > > │ ### take_ref_mut                                                             │
00:14:54 verbose #15406 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 verbose #15407 > >
00:14:54 verbose #15408 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:54 verbose #15409 > > inl take_ref_mut forall t. (x : rust.ref (rust.mut' (option' t))) : option' t =
00:14:54 verbose #15410 > >     !\\(x, $'"Option::take($0)"')
00:14:54 verbose #15411 > >
00:14:54 verbose #15412 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:54 verbose #15413 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:54 verbose #15414 > > │ ### as_ref                                                                   │
00:14:54 verbose #15415 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 verbose #15416 > >
00:14:54 verbose #15417 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:54 verbose #15418 > > inl as_ref forall t. (x : rust.ref (option' t)) : option' (rust.ref t) =
00:14:54 verbose #15419 > >     !\\(x, $'"$0.as_ref()"')
00:14:54 verbose #15420 > >
00:14:54 verbose #15421 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:54 verbose #15422 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:54 verbose #15423 > > │ ### as_mut                                                                   │
00:14:54 verbose #15424 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 verbose #15425 > >
00:14:54 verbose #15426 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:54 verbose #15427 > > inl as_mut forall t. (x : rust.ref (rust.mut' (option' t))) : option' (rust.ref
00:14:54 verbose #15428 > > (rust.mut' t)) =
00:14:54 verbose #15429 > >     !\\(x, $'"$0.as_mut()"')
00:14:54 verbose #15430 > >
00:14:54 verbose #15431 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:54 verbose #15432 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:54 verbose #15433 > > │ ### unwrap_or                                                                │
00:14:54 verbose #15434 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 verbose #15435 > >
00:14:54 verbose #15436 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:54 verbose #15437 > > inl unwrap_or forall t. (def : t) (x : option' t) : t =
00:14:54 verbose #15438 > >     !\($'"!x.unwrap_or(!def)"')
00:14:54 verbose #15439 > >
00:14:54 verbose #15440 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:54 verbose #15441 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:54 verbose #15442 > > │ ### and_then                                                                 │
00:14:54 verbose #15443 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 verbose #15444 > >
00:14:54 verbose #15445 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:54 verbose #15446 > > inl and_then forall t u. (fn : t -> option' u) (x : option' t) : option' u =
00:14:54 verbose #15447 > >     !\\((x, fn), $'"$0.and_then(|x| $1(x))"')
00:14:54 verbose #15448 > >
00:14:54 verbose #15449 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:54 verbose #15450 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:54 verbose #15451 > > │ ### rc_upgrade                                                               │
00:14:54 verbose #15452 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:54 verbose #15453 > >
00:14:54 verbose #15454 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:54 verbose #15455 > > inl rc_upgrade forall t. (x : rust.weak_rc t) : option' (rust.rc t) =
00:14:54 verbose #15456 > >     !\\(x, $'"std::rc::Weak::upgrade(&$0)"')
00:14:55 verbose #15457 > >
00:14:55 verbose #15458 > > ── markdown ────────────────────────────────────────────────────────────────────
00:14:55 verbose #15459 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:14:55 verbose #15460 > > │ ### rc_into_inner                                                            │
00:14:55 verbose #15461 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:14:55 verbose #15462 > >
00:14:55 verbose #15463 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:55 verbose #15464 > > inl rc_into_inner forall t. (x : rust.rc t) : option' t =
00:14:55 verbose #15465 > >     !\\(x, $'"std::rc::Rc::into_inner($0)"')
00:14:55 verbose #15466 > >
00:14:55 verbose #15467 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:14:55 verbose #15468 > > //// test
00:14:55 verbose #15469 > > ///! rust
00:14:55 verbose #15470 > >
00:14:55 verbose #15471 > > rust.new_rc 0i32
00:14:55 verbose #15472 > > |> rc_into_inner
00:14:55 verbose #15473 > > |> unbox
00:14:55 verbose #15474 > > |> _assert_eq' (Some 0i32)
00:15:02 verbose #15475 > >
00:15:02 verbose #15476 > > ╭─[ 7.18s - return value ]─────────────────────────────────────────────────────╮
00:15:02 verbose #15477 > > │ __assert_eq' / actual: US0_0(0) / expected: US0_0(0)                         │
00:15:02 verbose #15478 > > │                                                                              │
00:15:02 verbose #15479 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:02 verbose #15480 > 00:00:47 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 30808 }
00:15:02 verbose #15481 > 00:00:47   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:15:02 verbose #15482 >     "nbconvert",
00:15:02 verbose #15483 >     "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb",
00:15:02 verbose #15484 >     "--to",
00:15:02 verbose #15485 >     "html",
00:15:02 verbose #15486 >     "--HTMLExporter.theme=dark",
00:15:02 verbose #15487 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:15:03 verbose #15488 > 00:00:47 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb to html
00:15:03 verbose #15489 > 00:00:47 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:15:03 verbose #15490 > 00:00:47 verbose #7 !   validate(nb)
00:15:03 verbose #15491 > 00:00:48 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:15:03 verbose #15492 > 00:00:48 verbose #9 !   return _pygments_highlight(
00:15:03 verbose #15493 > 00:00:48 verbose #10 ! [NbConvertApp] Writing 343180 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.html
00:15:03 verbose #15494 > 00:00:48 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 900 }
00:15:03 verbose #15495 > 00:00:48   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 900 }
00:15:03 verbose #15496 > 00:00:48   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:15:03 verbose #15497 >     "-c",
00:15:03 verbose #15498 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/optionm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:15:03 verbose #15499 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/optionm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:15:04 verbose #15500 > 00:00:48 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:15:04 verbose #15501 > 00:00:48   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:15:04 verbose #15502 > 00:00:48   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 31767 }
00:15:04   debug #15503 runtime.execute_with_options_async / { exit_code = 0; output_length = 35701 }
00:15:04   debug #19 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path optionm'.dib --retries 3
00:15:04   debug #15504 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path listm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:15:04 verbose #15505 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "listm'.dib", "--retries", "3"])) }
00:15:04 verbose #15506 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:15:04 verbose #15507 >     "repl",
00:15:04 verbose #15508 >     "--exit-after-run",
00:15:04 verbose #15509 >     "--run",
00:15:04 verbose #15510 >     "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib",
00:15:04 verbose #15511 >     "--output-path",
00:15:04 verbose #15512 >     "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb",
00:15:04 verbose #15513 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:15:05 verbose #15514 > >
00:15:05 verbose #15515 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:05 verbose #15516 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:05 verbose #15517 > > │ # listm'                                                                     │
00:15:05 verbose #15518 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:07 verbose #15519 > >
00:15:07 verbose #15520 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:07 verbose #15521 > > //// test
00:15:07 verbose #15522 > >
00:15:07 verbose #15523 > > open testing
00:15:08 verbose #15524 > >
00:15:08 verbose #15525 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:08 verbose #15526 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:08 verbose #15527 > > │ ## listm'                                                                    │
00:15:08 verbose #15528 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:08 verbose #15529 > >
00:15:08 verbose #15530 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:08 verbose #15531 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:08 verbose #15532 > > │ ### append                                                                   │
00:15:08 verbose #15533 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:08 verbose #15534 > >
00:15:08 verbose #15535 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:08 verbose #15536 > > instance append list t =
00:15:08 verbose #15537 > >     listm.append
00:15:08 verbose #15538 > >
00:15:08 verbose #15539 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:08 verbose #15540 > > //// test
00:15:08 verbose #15541 > >
00:15:08 verbose #15542 > > [[ "a"; "b" ]] ++ [[ "c"; "d" ]]
00:15:08 verbose #15543 > > |> _assert_eq [[ "a"; "b"; "c"; "d" ]]
00:15:09 verbose #15544 > >
00:15:09 verbose #15545 > > ╭─[ 1.00s - stdout ]───────────────────────────────────────────────────────────╮
00:15:09 verbose #15546 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_1 ("c", UH0_1 ("d",        │
00:15:09 verbose #15547 > > │ UH0_0)))) / expected: UH0_1 ("a", UH0_1 ("b", UH0_1 ("c", UH0_1 ("d",        │
00:15:09 verbose #15548 > > │ UH0_0))))                                                                    │
00:15:09 verbose #15549 > > │                                                                              │
00:15:09 verbose #15550 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:09 verbose #15551 > >
00:15:09 verbose #15552 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:09 verbose #15553 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:09 verbose #15554 > > │ ### collect                                                                  │
00:15:09 verbose #15555 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:09 verbose #15556 > >
00:15:09 verbose #15557 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:09 verbose #15558 > > inl collect forall t r. (fn : t -> list r) (items : list t) : list r =
00:15:09 verbose #15559 > >     items
00:15:09 verbose #15560 > >     |> listm.map fn
00:15:09 verbose #15561 > >     |> listm.fold (++) [[]]
00:15:09 verbose #15562 > >
00:15:09 verbose #15563 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:09 verbose #15564 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:09 verbose #15565 > > │ ### init_series                                                              │
00:15:09 verbose #15566 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:09 verbose #15567 > >
00:15:09 verbose #15568 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:09 verbose #15569 > > inl init_series start end inc =
00:15:09 verbose #15570 > >     inl total : f64 = conv ((end - start) / inc) + 1
00:15:09 verbose #15571 > >     listm.init total (conv >> (*) inc >> (+) start)
00:15:09 verbose #15572 > >
00:15:09 verbose #15573 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:09 verbose #15574 > > //// test
00:15:09 verbose #15575 > >
00:15:09 verbose #15576 > > init_series 0 1 0.5
00:15:09 verbose #15577 > > |> _assert_eq [[ 0f64; 0.5; 1 ]]
00:15:09 verbose #15578 > >
00:15:09 verbose #15579 > > ╭─[ 132.34ms - stdout ]────────────────────────────────────────────────────────╮
00:15:09 verbose #15580 > > │ __assert_eq / actual: UH0_1 (0.0, UH0_1 (0.5, UH0_1 (1.0, UH0_0))) /         │
00:15:09 verbose #15581 > > │ expected: UH0_1 (0.0, UH0_1 (0.5, UH0_1 (1.0, UH0_0)))                       │
00:15:09 verbose #15582 > > │                                                                              │
00:15:09 verbose #15583 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:09 verbose #15584 > >
00:15:09 verbose #15585 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:09 verbose #15586 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:09 verbose #15587 > > │ ### try_item                                                                 │
00:15:09 verbose #15588 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:09 verbose #15589 > >
00:15:09 verbose #15590 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:09 verbose #15591 > > inl rec try_item i = function
00:15:09 verbose #15592 > >     | Cons (x, _) when i = 0 => Some x
00:15:09 verbose #15593 > >     | Cons (_, xs) => try_item (i - 1) xs
00:15:09 verbose #15594 > >     | Nil => None
00:15:09 verbose #15595 > >
00:15:09 verbose #15596 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:09 verbose #15597 > > //// test
00:15:09 verbose #15598 > >
00:15:09 verbose #15599 > > listm.init 10i32 id
00:15:09 verbose #15600 > > |> try_item 9i32
00:15:09 verbose #15601 > > |> _assert_eq (Some 9)
00:15:10 verbose #15602 > >
00:15:10 verbose #15603 > > ╭─[ 144.97ms - stdout ]────────────────────────────────────────────────────────╮
00:15:10 verbose #15604 > > │ __assert_eq / actual: US0_0 9 / expected: US0_0 9                            │
00:15:10 verbose #15605 > > │                                                                              │
00:15:10 verbose #15606 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:10 verbose #15607 > >
00:15:10 verbose #15608 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:10 verbose #15609 > > //// test
00:15:10 verbose #15610 > >
00:15:10 verbose #15611 > > listm.init 10i32 id
00:15:10 verbose #15612 > > |> try_item 10i32
00:15:10 verbose #15613 > > |> _assert_eq None
00:15:10 verbose #15614 > >
00:15:10 verbose #15615 > > ╭─[ 534.47ms - stdout ]────────────────────────────────────────────────────────╮
00:15:10 verbose #15616 > > │ __assert_eq / actual: US0_1 / expected: US0_1                                │
00:15:10 verbose #15617 > > │                                                                              │
00:15:10 verbose #15618 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:10 verbose #15619 > >
00:15:10 verbose #15620 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:10 verbose #15621 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:10 verbose #15622 > > │ ### item                                                                     │
00:15:10 verbose #15623 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:10 verbose #15624 > >
00:15:10 verbose #15625 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:10 verbose #15626 > > inl item i =
00:15:10 verbose #15627 > >     try_item i >> optionm.value
00:15:10 verbose #15628 > >
00:15:10 verbose #15629 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:10 verbose #15630 > > //// test
00:15:10 verbose #15631 > >
00:15:10 verbose #15632 > > listm.init 10i32 id
00:15:10 verbose #15633 > > |> item 9i32
00:15:10 verbose #15634 > > |> _assert_eq 9
00:15:10 verbose #15635 > >
00:15:10 verbose #15636 > > ╭─[ 93.33ms - stdout ]─────────────────────────────────────────────────────────╮
00:15:10 verbose #15637 > > │ __assert_eq / actual: 9 / expected: 9                                        │
00:15:10 verbose #15638 > > │                                                                              │
00:15:10 verbose #15639 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:10 verbose #15640 > >
00:15:10 verbose #15641 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:10 verbose #15642 > > //// test
00:15:10 verbose #15643 > >
00:15:10 verbose #15644 > > fun () =>
00:15:10 verbose #15645 > >     listm.init 10i32 id
00:15:10 verbose #15646 > >     |> item 10i32
00:15:10 verbose #15647 > >     |> ignore
00:15:10 verbose #15648 > > |> _throws
00:15:10 verbose #15649 > > |> optionm.map sm'.format_exception
00:15:10 verbose #15650 > > |> _assert_eq (Some "System.Exception: Option does not have a value.")
00:15:11 verbose #15651 > >
00:15:11 verbose #15652 > > ╭─[ 227.86ms - stdout ]────────────────────────────────────────────────────────╮
00:15:11 verbose #15653 > > │ __assert_eq / actual: US1_0 "System.Exception: Option does not have a        │
00:15:11 verbose #15654 > > │ value." / expected: US1_0 "System.Exception: Option does not have a value."  │
00:15:11 verbose #15655 > > │                                                                              │
00:15:11 verbose #15656 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:11 verbose #15657 > >
00:15:11 verbose #15658 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:11 verbose #15659 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:11 verbose #15660 > > │ ### try_item_                                                                │
00:15:11 verbose #15661 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:11 verbose #15662 > >
00:15:11 verbose #15663 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:11 verbose #15664 > > let rec try_item_ i = function
00:15:11 verbose #15665 > >     | Cons (x, _) when i = 0 => Some x
00:15:11 verbose #15666 > >     | Cons (_, xs) => try_item_ (i - 1) xs
00:15:11 verbose #15667 > >     | Nil => None
00:15:11 verbose #15668 > >
00:15:11 verbose #15669 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:11 verbose #15670 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:11 verbose #15671 > > │ ### item_                                                                    │
00:15:11 verbose #15672 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:11 verbose #15673 > >
00:15:11 verbose #15674 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:11 verbose #15675 > > inl item_ i =
00:15:11 verbose #15676 > >     try_item_ i >> optionm.value
00:15:11 verbose #15677 > >
00:15:11 verbose #15678 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:11 verbose #15679 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:11 verbose #15680 > > │ ### sum                                                                      │
00:15:11 verbose #15681 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:11 verbose #15682 > >
00:15:11 verbose #15683 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:11 verbose #15684 > > inl sum list =
00:15:11 verbose #15685 > >     list |> listm.fold (+) 0
00:15:11 verbose #15686 > >
00:15:11 verbose #15687 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:11 verbose #15688 > > //// test
00:15:11 verbose #15689 > >
00:15:11 verbose #15690 > > listm.init 10i32 id
00:15:11 verbose #15691 > > |> sum
00:15:11 verbose #15692 > > |> _assert_eq 45
00:15:11 verbose #15693 > >
00:15:11 verbose #15694 > > ╭─[ 98.71ms - stdout ]─────────────────────────────────────────────────────────╮
00:15:11 verbose #15695 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:15:11 verbose #15696 > > │                                                                              │
00:15:11 verbose #15697 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:11 verbose #15698 > >
00:15:11 verbose #15699 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:11 verbose #15700 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:11 verbose #15701 > > │ ### unzip                                                                    │
00:15:11 verbose #15702 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:11 verbose #15703 > >
00:15:11 verbose #15704 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:11 verbose #15705 > > inl unzip list =
00:15:11 verbose #15706 > >     (([[]], [[]]), list)
00:15:11 verbose #15707 > >     ||> listm.fold fun (acc_x, acc_y) (x, y) =>
00:15:11 verbose #15708 > >         x :: acc_x, y :: acc_y
00:15:11 verbose #15709 > >     |> fun x, y =>
00:15:11 verbose #15710 > >         x |> listm.rev, y |> listm.rev
00:15:11 verbose #15711 > >
00:15:11 verbose #15712 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:11 verbose #15713 > > //// test
00:15:11 verbose #15714 > >
00:15:11 verbose #15715 > > listm.init 10i32 id
00:15:11 verbose #15716 > > |> listm.map (fun x => x, x)
00:15:11 verbose #15717 > > |> unzip
00:15:11 verbose #15718 > > |> fun x, y =>
00:15:11 verbose #15719 > >     x |> sum
00:15:11 verbose #15720 > >     |> _assert_eq 45
00:15:11 verbose #15721 > >
00:15:11 verbose #15722 > >     y |> sum
00:15:11 verbose #15723 > >     |> _assert_eq 45
00:15:11 verbose #15724 > >
00:15:11 verbose #15725 > > ╭─[ 101.58ms - stdout ]────────────────────────────────────────────────────────╮
00:15:11 verbose #15726 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:15:11 verbose #15727 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:15:11 verbose #15728 > > │                                                                              │
00:15:11 verbose #15729 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:11 verbose #15730 > >
00:15:11 verbose #15731 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:11 verbose #15732 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:11 verbose #15733 > > │ ### try_index_of                                                             │
00:15:11 verbose #15734 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:11 verbose #15735 > >
00:15:11 verbose #15736 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:11 verbose #15737 > > inl try_index_of item list =
00:15:11 verbose #15738 > >     inl rec loop i = function
00:15:11 verbose #15739 > >         | [[]] => None
00:15:11 verbose #15740 > >         | x :: xs =>
00:15:11 verbose #15741 > >             if x = item
00:15:11 verbose #15742 > >             then Some i
00:15:11 verbose #15743 > >             else loop (i + 1) xs
00:15:11 verbose #15744 > >     loop 0 list
00:15:11 verbose #15745 > >
00:15:11 verbose #15746 > > inl index_of item =
00:15:11 verbose #15747 > >     try_index_of item >> optionm.value
00:15:11 verbose #15748 > >
00:15:11 verbose #15749 > > inl try_index_of_ item list =
00:15:11 verbose #15750 > >     let rec loop i = function
00:15:11 verbose #15751 > >         | [[]] => None
00:15:11 verbose #15752 > >         | x :: xs =>
00:15:11 verbose #15753 > >             if x = item
00:15:11 verbose #15754 > >             then Some i
00:15:11 verbose #15755 > >             else loop (i + 1) xs
00:15:11 verbose #15756 > >     loop 0 list
00:15:11 verbose #15757 > >
00:15:11 verbose #15758 > > inl index_of_ item =
00:15:11 verbose #15759 > >     try_index_of_ item >> optionm.value
00:15:11 verbose #15760 > >
00:15:11 verbose #15761 > > inl try_index_of__ item list =
00:15:11 verbose #15762 > >     inl i = mut 0
00:15:11 verbose #15763 > >     inl list = mut list
00:15:11 verbose #15764 > >     inl result = mut None
00:15:11 verbose #15765 > >     let rec loop () =
00:15:11 verbose #15766 > >         match *list with
00:15:11 verbose #15767 > >         | [[]] => result <- None
00:15:11 verbose #15768 > >         | x :: xs =>
00:15:11 verbose #15769 > >             if x = item
00:15:11 verbose #15770 > >             then result <- Some *i
00:15:11 verbose #15771 > >             else
00:15:11 verbose #15772 > >                 i <- *i + 1
00:15:11 verbose #15773 > >                 list <- xs
00:15:11 verbose #15774 > >                 loop ()
00:15:11 verbose #15775 > >     loop ()
00:15:11 verbose #15776 > >     *result
00:15:11 verbose #15777 > >
00:15:11 verbose #15778 > > inl index_of__ item =
00:15:11 verbose #15779 > >     try_index_of__ item >> optionm.value
00:15:11 verbose #15780 > >
00:15:11 verbose #15781 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:11 verbose #15782 > > //// test
00:15:11 verbose #15783 > >
00:15:11 verbose #15784 > > listm.init 10i32 id
00:15:11 verbose #15785 > > |> index_of 5i32
00:15:11 verbose #15786 > > |> _assert_eq 5i32
00:15:11 verbose #15787 > >
00:15:11 verbose #15788 > > ╭─[ 99.29ms - stdout ]─────────────────────────────────────────────────────────╮
00:15:11 verbose #15789 > > │ __assert_eq / actual: 5 / expected: 5                                        │
00:15:11 verbose #15790 > > │                                                                              │
00:15:11 verbose #15791 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:11 verbose #15792 > >
00:15:11 verbose #15793 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:11 verbose #15794 > > //// test
00:15:11 verbose #15795 > >
00:15:11 verbose #15796 > > listm.init 10i32 id
00:15:11 verbose #15797 > > |> try_index_of 10i32
00:15:11 verbose #15798 > > |> _assert_eq (None : option i32)
00:15:11 verbose #15799 > >
00:15:11 verbose #15800 > > ╭─[ 175.50ms - stdout ]────────────────────────────────────────────────────────╮
00:15:11 verbose #15801 > > │ __assert_eq / actual: US0_1 / expected: US0_1                                │
00:15:11 verbose #15802 > > │                                                                              │
00:15:11 verbose #15803 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:11 verbose #15804 > >
00:15:11 verbose #15805 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:11 verbose #15806 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:11 verbose #15807 > > │ ### try_find                                                                 │
00:15:11 verbose #15808 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:11 verbose #15809 > >
00:15:11 verbose #15810 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:11 verbose #15811 > > inl try_find fn list =
00:15:11 verbose #15812 > >     inl rec loop = function
00:15:11 verbose #15813 > >         | [[]] => None
00:15:11 verbose #15814 > >         | x :: xs =>
00:15:11 verbose #15815 > >             if fn x
00:15:11 verbose #15816 > >             then Some x
00:15:11 verbose #15817 > >             else loop xs
00:15:11 verbose #15818 > >     loop list
00:15:11 verbose #15819 > >
00:15:11 verbose #15820 > > inl try_find_ fn list =
00:15:11 verbose #15821 > >     let rec loop = function
00:15:11 verbose #15822 > >         | [[]] => None
00:15:11 verbose #15823 > >         | x :: xs =>
00:15:11 verbose #15824 > >             if fn x
00:15:11 verbose #15825 > >             then Some x
00:15:11 verbose #15826 > >             else loop xs
00:15:11 verbose #15827 > >     loop list
00:15:12 verbose #15828 > >
00:15:12 verbose #15829 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:12 verbose #15830 > > //// test
00:15:12 verbose #15831 > >
00:15:12 verbose #15832 > > listm.init 10i32 id
00:15:12 verbose #15833 > > |> try_find ((=) 5i32)
00:15:12 verbose #15834 > > |> _assert_eq (Some 5i32)
00:15:12 verbose #15835 > >
00:15:12 verbose #15836 > > ╭─[ 114.65ms - stdout ]────────────────────────────────────────────────────────╮
00:15:12 verbose #15837 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5                            │
00:15:12 verbose #15838 > > │                                                                              │
00:15:12 verbose #15839 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:12 verbose #15840 > >
00:15:12 verbose #15841 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:12 verbose #15842 > > inl find x =
00:15:12 verbose #15843 > >     try_find x >> optionm.value
00:15:12 verbose #15844 > >
00:15:12 verbose #15845 > > inl find_ x =
00:15:12 verbose #15846 > >     try_find_ x >> optionm.value
00:15:12 verbose #15847 > >
00:15:12 verbose #15848 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:12 verbose #15849 > > //// test
00:15:12 verbose #15850 > >
00:15:12 verbose #15851 > > listm.init 10i32 id
00:15:12 verbose #15852 > > |> find ((=) 5i32)
00:15:12 verbose #15853 > > |> _assert_eq 5i32
00:15:12 verbose #15854 > >
00:15:12 verbose #15855 > > ╭─[ 95.92ms - stdout ]─────────────────────────────────────────────────────────╮
00:15:12 verbose #15856 > > │ __assert_eq / actual: 5 / expected: 5                                        │
00:15:12 verbose #15857 > > │                                                                              │
00:15:12 verbose #15858 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:12 verbose #15859 > >
00:15:12 verbose #15860 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:12 verbose #15861 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:12 verbose #15862 > > │ ### choose                                                                   │
00:15:12 verbose #15863 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:12 verbose #15864 > >
00:15:12 verbose #15865 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:12 verbose #15866 > > inl choose f l =
00:15:12 verbose #15867 > >     (l, [[]])
00:15:12 verbose #15868 > >     ||> listm.foldBack fun x acc =>
00:15:12 verbose #15869 > >         match f x with
00:15:12 verbose #15870 > >         | Some y => y :: acc
00:15:12 verbose #15871 > >         | None => acc
00:15:12 verbose #15872 > >
00:15:12 verbose #15873 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:12 verbose #15874 > > //// test
00:15:12 verbose #15875 > >
00:15:12 verbose #15876 > > listm.init 10i32 id
00:15:12 verbose #15877 > > |> choose (fun x => if x % 2 = 0 then Some x else None)
00:15:12 verbose #15878 > > |> _assert_eq [[ 0; 2; 4; 6; 8 ]]
00:15:12 verbose #15879 > >
00:15:12 verbose #15880 > > ╭─[ 126.58ms - stdout ]────────────────────────────────────────────────────────╮
00:15:12 verbose #15881 > > │ __assert_eq / actual: UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8,      │
00:15:12 verbose #15882 > > │ UH0_0))))) / expected: UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8,     │
00:15:12 verbose #15883 > > │ UH0_0)))))                                                                   │
00:15:12 verbose #15884 > > │                                                                              │
00:15:12 verbose #15885 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:12 verbose #15886 > >
00:15:12 verbose #15887 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:12 verbose #15888 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:12 verbose #15889 > > │ ### filter                                                                   │
00:15:12 verbose #15890 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:12 verbose #15891 > >
00:15:12 verbose #15892 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:12 verbose #15893 > > inl filter forall t. (fn : t -> bool) (list : list t) : list t =
00:15:12 verbose #15894 > >     (list, Nil)
00:15:12 verbose #15895 > >     ||> listm.foldBack fun x acc =>
00:15:12 verbose #15896 > >         if fn x then x :: acc else acc
00:15:12 verbose #15897 > >
00:15:12 verbose #15898 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:12 verbose #15899 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:12 verbose #15900 > > │ ### zip_with                                                                 │
00:15:12 verbose #15901 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:12 verbose #15902 > >
00:15:12 verbose #15903 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:12 verbose #15904 > > inl zip_with fn xs ys =
00:15:12 verbose #15905 > >     inl rec loop acc xs ys =
00:15:12 verbose #15906 > >         match xs, ys with
00:15:12 verbose #15907 > >         | Cons (x, xs), Cons (y, ys) =>
00:15:12 verbose #15908 > >             loop (fn x y :: acc) xs ys
00:15:12 verbose #15909 > >         | _ => listm.rev acc
00:15:12 verbose #15910 > >     loop [[]] xs ys
00:15:12 verbose #15911 > >
00:15:12 verbose #15912 > > inl zip_with_ fn xs ys =
00:15:12 verbose #15913 > >     let rec loop acc xs ys =
00:15:12 verbose #15914 > >         match xs, ys with
00:15:12 verbose #15915 > >         | Cons (x, xs), Cons (y, ys) =>
00:15:12 verbose #15916 > >             loop (fn x y :: acc) xs ys
00:15:12 verbose #15917 > >         | _ => listm.rev acc
00:15:12 verbose #15918 > >     loop [[]] xs ys
00:15:12 verbose #15919 > >
00:15:12 verbose #15920 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:12 verbose #15921 > > //// test
00:15:12 verbose #15922 > >
00:15:12 verbose #15923 > > ([[ 1i32; 2; 3 ]], [[ 4; 5; 6 ]])
00:15:12 verbose #15924 > > ||> zip_with (+)
00:15:12 verbose #15925 > > |> _assert_eq [[ 5; 7; 9 ]]
00:15:12 verbose #15926 > >
00:15:12 verbose #15927 > > ╭─[ 124.31ms - stdout ]────────────────────────────────────────────────────────╮
00:15:12 verbose #15928 > > │ __assert_eq / actual: UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0))) / expected:     │
00:15:12 verbose #15929 > > │ UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0)))                                       │
00:15:12 verbose #15930 > > │                                                                              │
00:15:12 verbose #15931 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:12 verbose #15932 > >
00:15:12 verbose #15933 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:12 verbose #15934 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:12 verbose #15935 > > │ ### zip                                                                      │
00:15:12 verbose #15936 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:12 verbose #15937 > >
00:15:12 verbose #15938 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:12 verbose #15939 > > inl zip xs ys =
00:15:12 verbose #15940 > >     zip_with pair xs ys
00:15:12 verbose #15941 > >
00:15:12 verbose #15942 > > inl zip_ xs ys =
00:15:12 verbose #15943 > >     zip_with_ pair xs ys
00:15:12 verbose #15944 > >
00:15:12 verbose #15945 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:12 verbose #15946 > > //// test
00:15:12 verbose #15947 > >
00:15:12 verbose #15948 > > ([[ 1i32; 2; 3 ]], [[ 4i32; 5; 6 ]])
00:15:12 verbose #15949 > > ||> zip
00:15:12 verbose #15950 > > |> _assert_eq [[ 1, 4; 2, 5; 3, 6 ]]
00:15:13 verbose #15951 > >
00:15:13 verbose #15952 > > ╭─[ 150.17ms - stdout ]────────────────────────────────────────────────────────╮
00:15:13 verbose #15953 > > │ __assert_eq / actual: UH0_1 (1, 4, UH0_1 (2, 5, UH0_1 (3, 6, UH0_0))) /      │
00:15:13 verbose #15954 > > │ expected: UH0_1 (1, 4, UH0_1 (2, 5, UH0_1 (3, 6, UH0_0)))                    │
00:15:13 verbose #15955 > > │                                                                              │
00:15:13 verbose #15956 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:13 verbose #15957 > >
00:15:13 verbose #15958 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:13 verbose #15959 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:13 verbose #15960 > > │ ### indexed                                                                  │
00:15:13 verbose #15961 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:13 verbose #15962 > >
00:15:13 verbose #15963 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:13 verbose #15964 > > inl indexed list =
00:15:13 verbose #15965 > >     (([[]], 0), list)
00:15:13 verbose #15966 > >     ||> listm.fold fun (acc, i) x =>
00:15:13 verbose #15967 > >         (i, x) :: acc, i + 1
00:15:13 verbose #15968 > >     |> fst
00:15:13 verbose #15969 > >     |> listm.rev
00:15:13 verbose #15970 > >
00:15:13 verbose #15971 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:13 verbose #15972 > > //// test
00:15:13 verbose #15973 > >
00:15:13 verbose #15974 > > listm.init 5i32 ((*) 2)
00:15:13 verbose #15975 > > |> indexed
00:15:13 verbose #15976 > > |> _assert_eq [[ 0i32, 0; 1, 2; 2, 4; 3, 6; 4, 8 ]]
00:15:13 verbose #15977 > >
00:15:13 verbose #15978 > > ╭─[ 132.47ms - stdout ]────────────────────────────────────────────────────────╮
00:15:13 verbose #15979 > > │ __assert_eq / actual: UH0_1 (0, 0, UH0_1 (1, 2, UH0_1 (2, 4, UH0_1 (3, 6,    │
00:15:13 verbose #15980 > > │ UH0_1 (4, 8, UH0_0))))) / expected: UH0_1 (0, 0, UH0_1 (1, 2, UH0_1 (2, 4,   │
00:15:13 verbose #15981 > > │ UH0_1 (3, 6, UH0_1 (4, 8, UH0_0)))))                                         │
00:15:13 verbose #15982 > > │                                                                              │
00:15:13 verbose #15983 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:13 verbose #15984 > >
00:15:13 verbose #15985 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:13 verbose #15986 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:13 verbose #15987 > > │ ### group_by                                                                 │
00:15:13 verbose #15988 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:13 verbose #15989 > >
00:15:13 verbose #15990 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:13 verbose #15991 > > inl group_by fn list =
00:15:13 verbose #15992 > >     (list, [[]])
00:15:13 verbose #15993 > >     ||> listm.foldBack fun x acc =>
00:15:13 verbose #15994 > >         inl xk = fn x
00:15:13 verbose #15995 > >         inl found, new_acc =
00:15:13 verbose #15996 > >             ((false, [[]]), acc)
00:15:13 verbose #15997 > >             ||> listm.fold fun (found, acc') (k, xs) =>
00:15:13 verbose #15998 > >                 if k = xk
00:15:13 verbose #15999 > >                 then true, (k, x :: xs) :: acc'
00:15:13 verbose #16000 > >                 else found, (k, xs) :: acc'
00:15:13 verbose #16001 > >         if found
00:15:13 verbose #16002 > >         then new_acc
00:15:13 verbose #16003 > >         else (xk, [[ x ]]) :: new_acc
00:15:13 verbose #16004 > >
00:15:13 verbose #16005 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:13 verbose #16006 > > //// test
00:15:13 verbose #16007 > >
00:15:13 verbose #16008 > > listm.init 10i32 id
00:15:13 verbose #16009 > > |> group_by (fun x => x % 2 = 0)
00:15:13 verbose #16010 > > |> _assert_eq [[ true, [[ 0; 2; 4; 6; 8 ]]; false, [[ 1; 3; 5; 7; 9 ]] ]]
00:15:13 verbose #16011 > >
00:15:13 verbose #16012 > > ╭─[ 183.80ms - stdout ]────────────────────────────────────────────────────────╮
00:15:13 verbose #16013 > > │ __assert_eq / actual: UH1_1                                                  │
00:15:13 verbose #16014 > > │   (true, UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8, UH0_0))))),       │
00:15:13 verbose #16015 > > │    UH1_1                                                                     │
00:15:13 verbose #16016 > > │      (false, UH0_1 (1, UH0_1 (3, UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0))))),   │
00:15:13 verbose #16017 > > │ UH1_0)) / expected: UH1_1                                                    │
00:15:13 verbose #16018 > > │   (true, UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8, UH0_0))))),       │
00:15:13 verbose #16019 > > │    UH1_1                                                                     │
00:15:13 verbose #16020 > > │      (false, UH0_1 (1, UH0_1 (3, UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0))))),   │
00:15:13 verbose #16021 > > │ UH1_0))                                                                      │
00:15:13 verbose #16022 > > │                                                                              │
00:15:13 verbose #16023 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:13 verbose #16024 > >
00:15:13 verbose #16025 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:13 verbose #16026 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:13 verbose #16027 > > │ ### forall'                                                                  │
00:15:13 verbose #16028 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:13 verbose #16029 > >
00:15:13 verbose #16030 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:13 verbose #16031 > > inl forall' fn (head :: tail) =
00:15:13 verbose #16032 > >     (true, tail)
00:15:13 verbose #16033 > >     ||> listm.fold fun acc x =>
00:15:13 verbose #16034 > >         acc && x = head
00:15:13 verbose #16035 > >
00:15:13 verbose #16036 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:13 verbose #16037 > > //// test
00:15:13 verbose #16038 > >
00:15:13 verbose #16039 > > [[ 1i32; 1; 1; 1; 1 ]]
00:15:13 verbose #16040 > > |> forall' ((=) 1i32)
00:15:13 verbose #16041 > > |> _assert_eq true
00:15:13 verbose #16042 > >
00:15:13 verbose #16043 > > ╭─[ 102.53ms - stdout ]────────────────────────────────────────────────────────╮
00:15:13 verbose #16044 > > │ __assert_eq / actual: true / expected: true                                  │
00:15:13 verbose #16045 > > │                                                                              │
00:15:13 verbose #16046 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:13 verbose #16047 > >
00:15:13 verbose #16048 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:13 verbose #16049 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:13 verbose #16050 > > │ ### last                                                                     │
00:15:13 verbose #16051 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:13 verbose #16052 > >
00:15:13 verbose #16053 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:13 verbose #16054 > > inl last list =
00:15:13 verbose #16055 > >     list
00:15:13 verbose #16056 > >     |> listm.rev
00:15:13 verbose #16057 > >     |> item 0i32
00:15:13 verbose #16058 > >
00:15:13 verbose #16059 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:13 verbose #16060 > > //// test
00:15:13 verbose #16061 > >
00:15:13 verbose #16062 > > listm.init 10i32 id
00:15:13 verbose #16063 > > |> last
00:15:13 verbose #16064 > > |> _assert_eq 9
00:15:14 verbose #16065 > >
00:15:14 verbose #16066 > > ╭─[ 100.56ms - stdout ]────────────────────────────────────────────────────────╮
00:15:14 verbose #16067 > > │ __assert_eq / actual: 9 / expected: 9                                        │
00:15:14 verbose #16068 > > │                                                                              │
00:15:14 verbose #16069 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:14 verbose #16070 > >
00:15:14 verbose #16071 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:14 verbose #16072 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:14 verbose #16073 > > │ ### try_pick                                                                 │
00:15:14 verbose #16074 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:14 verbose #16075 > >
00:15:14 verbose #16076 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:14 verbose #16077 > > inl try_pick fn list =
00:15:14 verbose #16078 > >     inl rec body fn = function
00:15:14 verbose #16079 > >         | [[]] => None
00:15:14 verbose #16080 > >         | x :: xs =>
00:15:14 verbose #16081 > >             match fn x with
00:15:14 verbose #16082 > >             | Some y => Some y
00:15:14 verbose #16083 > >             | None => loop xs
00:15:14 verbose #16084 > >     and inl loop list =
00:15:14 verbose #16085 > >         if var_is list |> not
00:15:14 verbose #16086 > >         then body fn list
00:15:14 verbose #16087 > >         else
00:15:14 verbose #16088 > >             inl fn = join fn
00:15:14 verbose #16089 > >             inl list = dyn list
00:15:14 verbose #16090 > >             join body fn list
00:15:14 verbose #16091 > >     loop list
00:15:14 verbose #16092 > >
00:15:14 verbose #16093 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:14 verbose #16094 > > //// test
00:15:14 verbose #16095 > >
00:15:14 verbose #16096 > > listm.init 10i32 id
00:15:14 verbose #16097 > > |> try_pick (fun x => if x = 5i32 then Some x else None)
00:15:14 verbose #16098 > > |> _assert_eq (Some 5i32)
00:15:14 verbose #16099 > >
00:15:14 verbose #16100 > > ╭─[ 125.58ms - stdout ]────────────────────────────────────────────────────────╮
00:15:14 verbose #16101 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5                            │
00:15:14 verbose #16102 > > │                                                                              │
00:15:14 verbose #16103 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:14 verbose #16104 > >
00:15:14 verbose #16105 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:14 verbose #16106 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:14 verbose #16107 > > │ ### exists'                                                                  │
00:15:14 verbose #16108 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:14 verbose #16109 > >
00:15:14 verbose #16110 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:14 verbose #16111 > > inl exists' f x =
00:15:14 verbose #16112 > >     inl length_x : i64 = x |> listm.length
00:15:14 verbose #16113 > >     let rec loop i =
00:15:14 verbose #16114 > >         if i >= length_x
00:15:14 verbose #16115 > >         then false
00:15:14 verbose #16116 > >         elif x |> item i |> f
00:15:14 verbose #16117 > >         then true
00:15:14 verbose #16118 > >         else loop (i + 1)
00:15:14 verbose #16119 > >     loop 0
00:15:14 verbose #16120 > >
00:15:14 verbose #16121 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:14 verbose #16122 > > //// test
00:15:14 verbose #16123 > >
00:15:14 verbose #16124 > > [[ 'a'; 'b'; 'c' ]]
00:15:14 verbose #16125 > > |> exists' fun x => x = 'b'
00:15:14 verbose #16126 > > |> _assert_eq true
00:15:14 verbose #16127 > >
00:15:14 verbose #16128 > > [[ 'a'; 'b' ]]
00:15:14 verbose #16129 > > |> exists' fun x => x = 'c'
00:15:14 verbose #16130 > > |> _assert_eq false
00:15:14 verbose #16131 > >
00:15:14 verbose #16132 > > [[]]
00:15:14 verbose #16133 > > |> exists' fun x => x = 'a'
00:15:14 verbose #16134 > > |> _assert_eq false
00:15:14 verbose #16135 > >
00:15:14 verbose #16136 > > ╭─[ 179.97ms - stdout ]────────────────────────────────────────────────────────╮
00:15:14 verbose #16137 > > │ __assert_eq / actual: true / expected: true                                  │
00:15:14 verbose #16138 > > │ __assert_eq / actual: false / expected: false                                │
00:15:14 verbose #16139 > > │ __assert_eq / actual: false / expected: false                                │
00:15:14 verbose #16140 > > │                                                                              │
00:15:14 verbose #16141 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:14 verbose #16142 > >
00:15:14 verbose #16143 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:14 verbose #16144 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:14 verbose #16145 > > │ ## fsharp                                                                    │
00:15:14 verbose #16146 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:14 verbose #16147 > >
00:15:14 verbose #16148 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:14 verbose #16149 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:14 verbose #16150 > > │ ### list'                                                                    │
00:15:14 verbose #16151 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:14 verbose #16152 > >
00:15:14 verbose #16153 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:14 verbose #16154 > > nominal list' t = $"backend_switch `({ Fsharp : $'`t list'; Python :
00:15:14 verbose #16155 > > $'List[[`t]]' })"
00:15:14 verbose #16156 > >
00:15:14 verbose #16157 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:14 verbose #16158 > > inl empty' forall t. () : list' t =
00:15:14 verbose #16159 > >     $'[[]]'
00:15:14 verbose #16160 > >
00:15:14 verbose #16161 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:14 verbose #16162 > > inl cons' forall t. (head : t) (tail : list' t) : list' t =
00:15:14 verbose #16163 > >     backend_switch {
00:15:14 verbose #16164 > >         Fsharp = fun () => $'!head :: !tail ' : list' t
00:15:14 verbose #16165 > >         Python = fun () =>
00:15:14 verbose #16166 > >             $'!tail.insert(0, !head)'
00:15:14 verbose #16167 > >             $'!tail ' : list' t
00:15:14 verbose #16168 > >     }
00:15:14 verbose #16169 > >
00:15:14 verbose #16170 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:14 verbose #16171 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:14 verbose #16172 > > │ ### box                                                                      │
00:15:14 verbose #16173 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:14 verbose #16174 > >
00:15:14 verbose #16175 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:14 verbose #16176 > > inl box forall t. (list : list t) : list' t =
00:15:14 verbose #16177 > >     (list, empty' ())
00:15:14 verbose #16178 > >     ||> listm.foldBack fun x acc =>
00:15:14 verbose #16179 > >         acc |> cons' x
00:15:14 verbose #16180 > >
00:15:14 verbose #16181 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:14 verbose #16182 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:14 verbose #16183 > > │ ### fold'                                                                    │
00:15:14 verbose #16184 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:14 verbose #16185 > >
00:15:14 verbose #16186 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:14 verbose #16187 > > inl fold' forall t u. (fn : t -> u) (init : list u) (list : list' t) : list u =
00:15:14 verbose #16188 > >     backend_switch {
00:15:14 verbose #16189 > >         Fsharp = fun () =>
00:15:14 verbose #16190 > >             (init, list)
00:15:14 verbose #16191 > >             ||> $'List.fold' join fun acc x => Cons (fn x, acc)
00:15:14 verbose #16192 > >             : list u
00:15:14 verbose #16193 > >         Python = fun () =>
00:15:14 verbose #16194 > >             $'x = !init '
00:15:14 verbose #16195 > >             $'for x in !list: x = !fn(x)'
00:15:14 verbose #16196 > >             $'x' : list u
00:15:14 verbose #16197 > >     }
00:15:14 verbose #16198 > >
00:15:14 verbose #16199 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:14 verbose #16200 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:14 verbose #16201 > > │ ### fold_back'                                                               │
00:15:14 verbose #16202 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:14 verbose #16203 > >
00:15:14 verbose #16204 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:14 verbose #16205 > > inl fold_back' forall t u. (fn : t -> u) (list : list' t) (init : list u) : list
00:15:14 verbose #16206 > > u =
00:15:14 verbose #16207 > >     backend_switch {
00:15:14 verbose #16208 > >         Fsharp = fun () =>
00:15:14 verbose #16209 > >             (list, init)
00:15:14 verbose #16210 > >             ||> $'List.foldBack' join fun x acc => Cons (fn x, acc)
00:15:14 verbose #16211 > >             : list u
00:15:14 verbose #16212 > >         Python = fun () =>
00:15:14 verbose #16213 > >             $'x = !init '
00:15:14 verbose #16214 > >             $'for x in reversed(!list): x = !fn(x)'
00:15:14 verbose #16215 > >             $'x' : list u
00:15:14 verbose #16216 > >     }
00:15:15 verbose #16217 > >
00:15:15 verbose #16218 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:15 verbose #16219 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:15 verbose #16220 > > │ ### filter'                                                                  │
00:15:15 verbose #16221 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:15 verbose #16222 > >
00:15:15 verbose #16223 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:15 verbose #16224 > > inl filter' forall t. (fn : t -> bool) (list : list' t) : list' t =
00:15:15 verbose #16225 > >     backend_switch {
00:15:15 verbose #16226 > >         Fsharp = fun () => list |> $'"List.filter !fn"' : list' t
00:15:15 verbose #16227 > >         Python = fun () => $'list(filter(!fn, !list))' : list' t
00:15:15 verbose #16228 > >     }
00:15:15 verbose #16229 > >
00:15:15 verbose #16230 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:15 verbose #16231 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:15 verbose #16232 > > │ ### map                                                                      │
00:15:15 verbose #16233 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:15 verbose #16234 > >
00:15:15 verbose #16235 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:15 verbose #16236 > > inl map forall t u. (fn : t -> u) (list : list' t) : list' u =
00:15:15 verbose #16237 > >     backend_switch {
00:15:15 verbose #16238 > >         Fsharp = fun () => list |> $'List.map' fn : list' u
00:15:15 verbose #16239 > >         Python = fun () => $'list(map(!fn, !list))' : list' u
00:15:15 verbose #16240 > >     }
00:15:15 verbose #16241 > >
00:15:15 verbose #16242 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:15 verbose #16243 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:15 verbose #16244 > > │ ### unbox                                                                    │
00:15:15 verbose #16245 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:15 verbose #16246 > >
00:15:15 verbose #16247 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:15 verbose #16248 > > inl unbox forall t. (list : list' t) : list t =
00:15:15 verbose #16249 > >     (list, Nil)
00:15:15 verbose #16250 > >     ||> fold_back' id
00:15:15 verbose #16251 > >
00:15:15 verbose #16252 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:15 verbose #16253 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:15 verbose #16254 > > │ ### distinct'                                                                │
00:15:15 verbose #16255 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:15 verbose #16256 > >
00:15:15 verbose #16257 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:15 verbose #16258 > > inl distinct' forall t. (list : list' t) : list' t =
00:15:15 verbose #16259 > >     backend_switch {
00:15:15 verbose #16260 > >         Fsharp = fun () => list |> $'List.distinct' : list' t
00:15:15 verbose #16261 > >         Python = fun () => $'list(set(!list))' : list' t
00:15:15 verbose #16262 > >     }
00:15:15 verbose #16263 > >
00:15:15 verbose #16264 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:15 verbose #16265 > > //// test
00:15:15 verbose #16266 > >
00:15:15 verbose #16267 > > [[ "1"; "2"; "2"; "3" ]]
00:15:15 verbose #16268 > > |> box
00:15:15 verbose #16269 > > |> distinct'
00:15:15 verbose #16270 > > |> unbox
00:15:15 verbose #16271 > > |> _assert_eq [[ "1"; "2"; "3" ]]
00:15:15 verbose #16272 > >
00:15:15 verbose #16273 > > ╭─[ 205.62ms - stdout ]────────────────────────────────────────────────────────╮
00:15:15 verbose #16274 > > │ __assert_eq / actual: UH0_1 ("1", UH0_1 ("2", UH0_1 ("3", UH0_0))) /         │
00:15:15 verbose #16275 > > │ expected: UH0_1 ("1", UH0_1 ("2", UH0_1 ("3", UH0_0)))                       │
00:15:15 verbose #16276 > > │                                                                              │
00:15:15 verbose #16277 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:15 verbose #16278 > >
00:15:15 verbose #16279 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:15 verbose #16280 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:15 verbose #16281 > > │ ### to_array'                                                                │
00:15:15 verbose #16282 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:15 verbose #16283 > >
00:15:15 verbose #16284 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:15 verbose #16285 > > inl to_array' forall t. (items : list' t) : array_base t =
00:15:15 verbose #16286 > >     backend_switch {
00:15:15 verbose #16287 > >         Fsharp = fun () => items |> $'List.toArray' : array_base t
00:15:15 verbose #16288 > >         Python = fun () => $'cp.array(!items)' : array_base t
00:15:15 verbose #16289 > >     }
00:15:15 verbose #16290 > 00:00:11 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 38599 }
00:15:15 verbose #16291 > 00:00:11   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:15:15 verbose #16292 >     "nbconvert",
00:15:15 verbose #16293 >     "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb",
00:15:15 verbose #16294 >     "--to",
00:15:15 verbose #16295 >     "html",
00:15:15 verbose #16296 >     "--HTMLExporter.theme=dark",
00:15:15 verbose #16297 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:15:16 verbose #16298 > 00:00:12 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb to html
00:15:16 verbose #16299 > 00:00:12 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:15:16 verbose #16300 > 00:00:12 verbose #7 !   validate(nb)
00:15:16 verbose #16301 > 00:00:12 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:15:16 verbose #16302 > 00:00:12 verbose #9 !   return _pygments_highlight(
00:15:17 verbose #16303 > 00:00:13 verbose #10 ! [NbConvertApp] Writing 380348 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.html
00:15:17 verbose #16304 > 00:00:13 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 }
00:15:17 verbose #16305 > 00:00:13   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 }
00:15:17 verbose #16306 > 00:00:13   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:15:17 verbose #16307 >     "-c",
00:15:17 verbose #16308 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/listm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:15:17 verbose #16309 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/listm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:15:17 verbose #16310 > 00:00:13 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:15:17 verbose #16311 > 00:00:13   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:15:17 verbose #16312 > 00:00:13   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 39554 }
00:15:17   debug #16313 runtime.execute_with_options_async / { exit_code = 0; output_length = 43952 }
00:15:17   debug #20 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path listm'.dib --retries 3
00:15:17   debug #16314 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path reflection.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:15:17 verbose #16315 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "reflection.dib", "--retries", "3"])) }
00:15:17 verbose #16316 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:15:17 verbose #16317 >     "repl",
00:15:17 verbose #16318 >     "--exit-after-run",
00:15:17 verbose #16319 >     "--run",
00:15:17 verbose #16320 >     "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib",
00:15:17 verbose #16321 >     "--output-path",
00:15:17 verbose #16322 >     "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb",
00:15:17 verbose #16323 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:15:19 verbose #16324 > >
00:15:19 verbose #16325 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:19 verbose #16326 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:19 verbose #16327 > > │ # reflection                                                                 │
00:15:19 verbose #16328 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:21 verbose #16329 > >
00:15:21 verbose #16330 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:21 verbose #16331 > > //// test
00:15:21 verbose #16332 > >
00:15:21 verbose #16333 > > open testing
00:15:22 verbose #16334 > >
00:15:22 verbose #16335 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:22 verbose #16336 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:22 verbose #16337 > > │ ## reflection                                                                │
00:15:22 verbose #16338 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:22 verbose #16339 > >
00:15:22 verbose #16340 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:22 verbose #16341 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:22 verbose #16342 > > │ ### get_union_fields                                                         │
00:15:22 verbose #16343 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:22 verbose #16344 > >
00:15:22 verbose #16345 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:22 verbose #16346 > > inl get_union_fields forall union_type. () : list (string * union_type) =
00:15:22 verbose #16347 > >     real
00:15:22 verbose #16348 > >         real_core.union_to_record
00:15:22 verbose #16349 > >             `union_type
00:15:22 verbose #16350 > >             forall union_record_type. =>
00:15:22 verbose #16351 > >                 real_core.record_type_fold
00:15:22 verbose #16352 > >                     fun acc key =>
00:15:22 verbose #16353 > >                         forall value. =>
00:15:22 verbose #16354 > >                             inl value =
00:15:22 verbose #16355 > >                                 typecase value with
00:15:22 verbose #16356 > >                                 | () => $'' : value
00:15:22 verbose #16357 > >                                 | _ =>
00:15:22 verbose #16358 > >                                     backend_switch `value `({}) {
00:15:22 verbose #16359 > >                                         Fsharp =
00:15:22 verbose #16360 > >                                             (fun () =>
00:15:22 verbose #16361 > >                                                 $'Unchecked.defaultof<_>' :
00:15:22 verbose #16362 > > value
00:15:22 verbose #16363 > >                                             ) : () -> value
00:15:22 verbose #16364 > >                                         Python =
00:15:22 verbose #16365 > >                                             (fun () =>
00:15:22 verbose #16366 > >                                                 $'None' : value
00:15:22 verbose #16367 > >                                             ) : () -> value
00:15:22 verbose #16368 > >                                     }
00:15:22 verbose #16369 > >                             inl item = real_core.nominal_create `union_type
00:15:22 verbose #16370 > > (key, value)
00:15:22 verbose #16371 > >                             inl key' = real_sm'.symbol_to_string `(`key)
00:15:22 verbose #16372 > >                             (::) `(string * union_type) (key', item) acc
00:15:22 verbose #16373 > >                     (Nil `(string * union_type))
00:15:22 verbose #16374 > >                     `union_record_type
00:15:22 verbose #16375 > >
00:15:22 verbose #16376 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:22 verbose #16377 > > //// test
00:15:22 verbose #16378 > > ///! fsharp
00:15:22 verbose #16379 > > ///! rust
00:15:22 verbose #16380 > > ///! typescript
00:15:22 verbose #16381 > > ///! python
00:15:22 verbose #16382 > >
00:15:22 verbose #16383 > > get_union_fields ()
00:15:22 verbose #16384 > > |> listm'.box
00:15:22 verbose #16385 > > |> listm'.to_array'
00:15:22 verbose #16386 > > |> a
00:15:22 verbose #16387 > > |> am'.sort_by snd
00:15:22 verbose #16388 > > |> fun (a x : _ int _) => x
00:15:22 verbose #16389 > > |> _assert_eq' ;[[ "Native", Native; "Wasm", Wasm; "Contract", Contract ]]
00:15:34 verbose #16390 > >
00:15:34 verbose #16391 > > ╭─[ 11.81s - return value ]────────────────────────────────────────────────────╮
00:15:34 verbose #16392 > > │ .rs output:                                                                  │
00:15:34 verbose #16393 > > │ __assert_eq' / actual: Array(MutCell([("Native", US0_0), ("Wasm", US0_1),    │
00:15:34 verbose #16394 > > │ ("Contract", US0_2)])) / expected: Array(MutCell([("Native", US0_0),         │
00:15:34 verbose #16395 > > │ ("Wasm", US0_1), ("Contract", US0_2)]))                                      │
00:15:34 verbose #16396 > > │                                                                              │
00:15:34 verbose #16397 > > │ .ts output:                                                                  │
00:15:34 verbose #16398 > > │ __assert_eq' / actual: Native,US0_0,Wasm,US0_1,Contract,US0_2 / expected:    │
00:15:34 verbose #16399 > > │ Native,US0_0,Wasm,US0_1,Contract,US0_2                                       │
00:15:34 verbose #16400 > > │                                                                              │
00:15:34 verbose #16401 > > │ .py output:                                                                  │
00:15:34 verbose #16402 > > │ __assert_eq' / actual: [('Native', US0_0), ('Wasm', US0_1), ('Contract',     │
00:15:34 verbose #16403 > > │ US0_2)] / expected: [('Native', US0_0), ('Wasm', US0_1), ('Contract',        │
00:15:34 verbose #16404 > > │ US0_2)]                                                                      │
00:15:34 verbose #16405 > > │                                                                              │
00:15:34 verbose #16406 > > │                                                                              │
00:15:34 verbose #16407 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:34 verbose #16408 > >
00:15:34 verbose #16409 > > ╭─[ 11.82s - stdout ]──────────────────────────────────────────────────────────╮
00:15:34 verbose #16410 > > │ .fsx output:                                                                 │
00:15:34 verbose #16411 > > │ __assert_eq' / actual: [|struct ("Native", US0_0); struct ("Wasm", US0_1);   │
00:15:34 verbose #16412 > > │ struct ("Contract", US0_2)|] / expected: [|struct ("Native", US0_0); struct  │
00:15:34 verbose #16413 > > │ ("Wasm", US0_1); struct ("Contract", US0_2)|]                                │
00:15:34 verbose #16414 > > │                                                                              │
00:15:34 verbose #16415 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:34 verbose #16416 > >
00:15:34 verbose #16417 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:34 verbose #16418 > > //// test
00:15:34 verbose #16419 > > ///! fsharp
00:15:34 verbose #16420 > > ///! rust
00:15:34 verbose #16421 > > ///! typescript
00:15:34 verbose #16422 > > ///! python
00:15:34 verbose #16423 > >
00:15:34 verbose #16424 > > get_union_fields ()
00:15:34 verbose #16425 > > |> listm'.box
00:15:34 verbose #16426 > > |> listm'.to_array'
00:15:34 verbose #16427 > > |> a
00:15:34 verbose #16428 > > |> am'.sort_by snd
00:15:34 verbose #16429 > > |> fun (a x : _ int _) => x
00:15:34 verbose #16430 > > |> _assert_eq' ;[[ "Some", Some 0i32; "None", None ]]
00:15:45 verbose #16431 > >
00:15:45 verbose #16432 > > ╭─[ 10.93s - return value ]────────────────────────────────────────────────────╮
00:15:45 verbose #16433 > > │ .rs output:                                                                  │
00:15:45 verbose #16434 > > │ __assert_eq' / actual: Array(MutCell([("Some", US0_0(0)), ("None", US0_1)])) │
00:15:45 verbose #16435 > > │ / expected: Array(MutCell([("Some", US0_0(0)), ("None", US0_1)]))            │
00:15:45 verbose #16436 > > │                                                                              │
00:15:45 verbose #16437 > > │ .ts output:                                                                  │
00:15:45 verbose #16438 > > │ __assert_eq' / actual: Some,US0_0 0,None,US0_1 / expected: Some,US0_0        │
00:15:45 verbose #16439 > > │ 0,None,US0_1                                                                 │
00:15:45 verbose #16440 > > │                                                                              │
00:15:45 verbose #16441 > > │ .py output:                                                                  │
00:15:45 verbose #16442 > > │ __assert_eq' / actual: [('Some', US0_0 0), ('None', US0_1)] / expected: [    │
00:15:45 verbose #16443 > > │ ('Some', US0_0 0), ('None', US0_1)]                                          │
00:15:45 verbose #16444 > > │                                                                              │
00:15:45 verbose #16445 > > │                                                                              │
00:15:45 verbose #16446 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:45 verbose #16447 > >
00:15:45 verbose #16448 > > ╭─[ 10.93s - stdout ]──────────────────────────────────────────────────────────╮
00:15:45 verbose #16449 > > │ .fsx output:                                                                 │
00:15:45 verbose #16450 > > │ __assert_eq' / actual: [|struct ("Some", US0_0 0); struct ("None", US0_1)|]  │
00:15:45 verbose #16451 > > │ / expected: [|struct ("Some", US0_0 0); struct ("None", US0_1)|]             │
00:15:45 verbose #16452 > > │                                                                              │
00:15:45 verbose #16453 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:45 verbose #16454 > >
00:15:45 verbose #16455 > > ── markdown ────────────────────────────────────────────────────────────────────
00:15:45 verbose #16456 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:15:45 verbose #16457 > > │ ### get_union_fields_untag                                                   │
00:15:45 verbose #16458 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:45 verbose #16459 > >
00:15:45 verbose #16460 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:45 verbose #16461 > > inl get_union_fields_untag forall union_type. () : list (string * union_type) =
00:15:45 verbose #16462 > >     real
00:15:45 verbose #16463 > >         real_core.union_to_record
00:15:45 verbose #16464 > >             `union_type
00:15:45 verbose #16465 > >             forall union_record_type. =>
00:15:45 verbose #16466 > >                 inl result =
00:15:45 verbose #16467 > >                     real_core.record_type_fold_back
00:15:45 verbose #16468 > >                         fun _key =>
00:15:45 verbose #16469 > >                             forall value. (acc, (i : i32)) =>
00:15:45 verbose #16470 > >                                 inl key, item : (string * union_type) =
00:15:45 verbose #16471 > >                                     real_core.union_untag `union_type i
00:15:45 verbose #16472 > >                                         (fun key => forall value. =>
00:15:45 verbose #16473 > >                                             inl key' = real_sm'.symbol_to_string
00:15:45 verbose #16474 > > `(`key)
00:15:45 verbose #16475 > >                                             inl value =
00:15:45 verbose #16476 > >                                                 typecase value with
00:15:45 verbose #16477 > >                                                 | () => $'' : value
00:15:45 verbose #16478 > >                                                 | _ =>
00:15:45 verbose #16479 > >                                                     backend_switch `value `({})
00:15:45 verbose #16480 > > {
00:15:45 verbose #16481 > >                                                         Fsharp =
00:15:45 verbose #16482 > >                                                             (fun () =>
00:15:45 verbose #16483 > >
00:15:45 verbose #16484 > > $'Unchecked.defaultof<_>' : value
00:15:45 verbose #16485 > >                                                             ) : () -> value
00:15:45 verbose #16486 > >                                                         Python =
00:15:45 verbose #16487 > >                                                             (fun () =>
00:15:45 verbose #16488 > >                                                                 $'None' : value
00:15:45 verbose #16489 > >                                                             ) : () -> value
00:15:45 verbose #16490 > >                                                     }
00:15:45 verbose #16491 > >                                             inl item = real_core.nominal_create
00:15:45 verbose #16492 > > `union_type (key, value)
00:15:45 verbose #16493 > >                                             key', item
00:15:45 verbose #16494 > >                                         )
00:15:45 verbose #16495 > >                                         (fun _ =>
00:15:45 verbose #16496 > >                                             failwith
00:15:45 verbose #16497 > >                                                 `(string * union_type)
00:15:45 verbose #16498 > >
00:15:45 verbose #16499 > > "reflection.get_union_fields_untag / invalid tag"
00:15:45 verbose #16500 > >                                         )
00:15:45 verbose #16501 > >                                 (::) `(string * union_type) (key, item) acc, (+)
00:15:45 verbose #16502 > > `i32 i 1
00:15:45 verbose #16503 > >                         `union_record_type
00:15:45 verbose #16504 > >                         (Nil `(string * union_type), 0i32)
00:15:45 verbose #16505 > >                 inl result = fst `(list (string * union_type)) `i32 result
00:15:45 verbose #16506 > >                 listm.rev `(string * union_type) result
00:15:45 verbose #16507 > >
00:15:45 verbose #16508 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:45 verbose #16509 > > //// test
00:15:45 verbose #16510 > > ///! fsharp
00:15:45 verbose #16511 > > ///! cuda
00:15:45 verbose #16512 > > ///! rust
00:15:45 verbose #16513 > > ///! typescript
00:15:45 verbose #16514 > > ///! python
00:15:45 verbose #16515 > >
00:15:45 verbose #16516 > > get_union_fields_untag ()
00:15:45 verbose #16517 > > |> _assert_eq' [[ "Native", Native; "Wasm", Wasm; "Contract", Contract ]]
00:15:57 verbose #16518 > >
00:15:57 verbose #16519 > > ╭─[ 11.65s - return value ]────────────────────────────────────────────────────╮
00:15:57 verbose #16520 > > │ .py output (Cuda):                                                           │
00:15:57 verbose #16521 > > │ __assert_eq' / actual: UH0_1(v0='Native', v1=US0_0(), v2=UH0_1(v0='Wasm',    │
00:15:57 verbose #16522 > > │ v1=US0_1(), v2=UH0_1(v0='Contract', v1=US0_2(), v2=UH0_0()))) / expected:    │
00:15:57 verbose #16523 > > │ UH0_1(v0='Native', v1=US0_0(), v2=UH0_1(v0='Wasm', v1=US0_1(),               │
00:15:57 verbose #16524 > > │ v2=UH0_1(v0='Contract', v1=US0_2(), v2=UH0_0())))                            │
00:15:57 verbose #16525 > > │                                                                              │
00:15:57 verbose #16526 > > │ .rs output:                                                                  │
00:15:57 verbose #16527 > > │ __assert_eq' / actual: UH0_1("Native", US0_0, UH0_1("Wasm", US0_1,           │
00:15:57 verbose #16528 > > │ UH0_1("Contract", US0_2, UH0_0))) / expected: UH0_1("Native", US0_0,         │
00:15:57 verbose #16529 > > │ UH0_1("Wasm", US0_1, UH0_1("Contract", US0_2, UH0_0)))                       │
00:15:57 verbose #16530 > > │                                                                              │
00:15:57 verbose #16531 > > │ .ts output:                                                                  │
00:15:57 verbose #16532 > > │ __assert_eq' / actual: UH0_1 (Native, US0_0, UH0_1 (Wasm, US0_1, UH0_1       │
00:15:57 verbose #16533 > > │ (Contract, US0_2, UH0_0))) / expected: UH0_1 (Native, US0_0, UH0_1 (Wasm,    │
00:15:57 verbose #16534 > > │ US0_1, UH0_1 (Contract, US0_2, UH0_0)))                                      │
00:15:57 verbose #16535 > > │                                                                              │
00:15:57 verbose #16536 > > │ .py output:                                                                  │
00:15:57 verbose #16537 > > │ __assert_eq' / actual: UH0_1 ("Native", US0_0, UH0_1 ("Wasm", US0_1, UH0_1   │
00:15:57 verbose #16538 > > │ ("Contract", US0_2, UH0_0))) / expected: UH0_1 ("Native", US0_0, UH0_1       │
00:15:57 verbose #16539 > > │ ("Wasm", US0_1, UH0_1 ("Contract", US0_2, UH0_0)))                           │
00:15:57 verbose #16540 > > │                                                                              │
00:15:57 verbose #16541 > > │                                                                              │
00:15:57 verbose #16542 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:57 verbose #16543 > >
00:15:57 verbose #16544 > > ╭─[ 11.65s - stdout ]──────────────────────────────────────────────────────────╮
00:15:57 verbose #16545 > > │ .fsx output:                                                                 │
00:15:57 verbose #16546 > > │ __assert_eq' / actual: UH0_1 ("Native", US0_0, UH0_1 ("Wasm", US0_1, UH0_1   │
00:15:57 verbose #16547 > > │ ("Contract", US0_2, UH0_0))) / expected: UH0_1 ("Native", US0_0, UH0_1       │
00:15:57 verbose #16548 > > │ ("Wasm", US0_1, UH0_1 ("Contract", US0_2, UH0_0)))                           │
00:15:57 verbose #16549 > > │                                                                              │
00:15:57 verbose #16550 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:15:57 verbose #16551 > >
00:15:57 verbose #16552 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:15:57 verbose #16553 > > //// test
00:15:57 verbose #16554 > > ///! fsharp
00:15:57 verbose #16555 > > ///! cuda
00:15:57 verbose #16556 > > ///! rust
00:15:57 verbose #16557 > > ///! typescript
00:15:57 verbose #16558 > > ///! python
00:15:57 verbose #16559 > >
00:15:57 verbose #16560 > > get_union_fields_untag ()
00:15:57 verbose #16561 > > |> _assert_eq' [[ "Some", Some (); "None", None ]]
00:16:08 verbose #16562 > >
00:16:08 verbose #16563 > > ╭─[ 11.40s - return value ]────────────────────────────────────────────────────╮
00:16:08 verbose #16564 > > │ .py output (Cuda):                                                           │
00:16:08 verbose #16565 > > │ __assert_eq' / actual: UH0_1(v0='Some', v1=US0_0(), v2=UH0_1(v0='None',      │
00:16:08 verbose #16566 > > │ v1=US0_1(), v2=UH0_0())) / expected: UH0_1(v0='Some', v1=US0_0(),            │
00:16:08 verbose #16567 > > │ v2=UH0_1(v0='None', v1=US0_1(), v2=UH0_0()))                                 │
00:16:08 verbose #16568 > > │                                                                              │
00:16:08 verbose #16569 > > │ .rs output:                                                                  │
00:16:08 verbose #16570 > > │ __assert_eq' / actual: UH0_1("Some", US0_0, UH0_1("None", US0_1, UH0_0)) /   │
00:16:08 verbose #16571 > > │ expected: UH0_1("Some", US0_0, UH0_1("None", US0_1, UH0_0))                  │
00:16:08 verbose #16572 > > │                                                                              │
00:16:08 verbose #16573 > > │ .ts output:                                                                  │
00:16:08 verbose #16574 > > │ __assert_eq' / actual: UH0_1 (Some, US0_0, UH0_1 (None, US0_1, UH0_0)) /     │
00:16:08 verbose #16575 > > │ expected: UH0_1 (Some, US0_0, UH0_1 (None, US0_1, UH0_0))                    │
00:16:08 verbose #16576 > > │                                                                              │
00:16:08 verbose #16577 > > │ .py output:                                                                  │
00:16:08 verbose #16578 > > │ __assert_eq' / actual: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0)) / │
00:16:08 verbose #16579 > > │ expected: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0))                │
00:16:08 verbose #16580 > > │                                                                              │
00:16:08 verbose #16581 > > │                                                                              │
00:16:08 verbose #16582 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:08 verbose #16583 > >
00:16:08 verbose #16584 > > ╭─[ 11.40s - stdout ]──────────────────────────────────────────────────────────╮
00:16:08 verbose #16585 > > │ .fsx output:                                                                 │
00:16:08 verbose #16586 > > │ __assert_eq' / actual: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0)) / │
00:16:08 verbose #16587 > > │ expected: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0))                │
00:16:08 verbose #16588 > > │                                                                              │
00:16:08 verbose #16589 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:08 verbose #16590 > >
00:16:08 verbose #16591 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:08 verbose #16592 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:08 verbose #16593 > > │ ### union_try_pick                                                           │
00:16:08 verbose #16594 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:08 verbose #16595 > >
00:16:08 verbose #16596 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:08 verbose #16597 > > inl union_try_pick forall t. (key : string) : option t =
00:16:08 verbose #16598 > >     real get_union_fields_untag `t ()
00:16:08 verbose #16599 > >     |> listm'.try_pick fun key', x =>
00:16:08 verbose #16600 > >         if key' = key
00:16:08 verbose #16601 > >         then Some x
00:16:08 verbose #16602 > >         else None
00:16:08 verbose #16603 > >
00:16:08 verbose #16604 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:08 verbose #16605 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:08 verbose #16606 > > │ ### union_to_string                                                          │
00:16:08 verbose #16607 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:08 verbose #16608 > >
00:16:08 verbose #16609 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:08 verbose #16610 > > inl union_to_string forall t. (x : t) : string =
00:16:08 verbose #16611 > >     real get_union_fields_untag `t ()
00:16:08 verbose #16612 > >     |> listm'.try_pick fun key, x' =>
00:16:08 verbose #16613 > >         if x' = x
00:16:08 verbose #16614 > >         then Some key
00:16:08 verbose #16615 > >         else
00:16:08 verbose #16616 > >             // TODO: split only if there's a non-unit case (union_to_record
00:16:08 verbose #16617 > > check)
00:16:08 verbose #16618 > >             inl separator =
00:16:08 verbose #16619 > >                 backend_switch {
00:16:08 verbose #16620 > >                     Fsharp = fun () =>
00:16:08 verbose #16621 > >                         run_target function
00:16:08 verbose #16622 > >                             | Rust _ => fun () => join "("
00:16:08 verbose #16623 > >                             | _ => fun () => join " "
00:16:08 verbose #16624 > >                     Python = fun () => "("
00:16:08 verbose #16625 > >                 }
00:16:08 verbose #16626 > >             inl x' = x' |> sm'.format |> sm'.split separator |> am'.index_base 0
00:16:08 verbose #16627 > >             if x |> sm'.format |> sm'.starts_with x'
00:16:08 verbose #16628 > >             then Some key
00:16:08 verbose #16629 > >             else None
00:16:08 verbose #16630 > >     |> optionm.value
00:16:08 verbose #16631 > >
00:16:08 verbose #16632 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:08 verbose #16633 > > //// test
00:16:08 verbose #16634 > > ///! fsharp
00:16:08 verbose #16635 > > ///! cuda
00:16:08 verbose #16636 > > ///! rust
00:16:08 verbose #16637 > > ///! typescript
00:16:08 verbose #16638 > > ///! python
00:16:08 verbose #16639 > >
00:16:08 verbose #16640 > > Some true
00:16:08 verbose #16641 > > |> union_to_string
00:16:08 verbose #16642 > > |> _assert_eq' "Some"
00:16:20 verbose #16643 > >
00:16:20 verbose #16644 > > ╭─[ 11.61s - return value ]────────────────────────────────────────────────────╮
00:16:20 verbose #16645 > > │ .py output (Cuda):                                                           │
00:16:20 verbose #16646 > > │ __assert_eq' / actual: Some / expected: Some                                 │
00:16:20 verbose #16647 > > │                                                                              │
00:16:20 verbose #16648 > > │ .rs output:                                                                  │
00:16:20 verbose #16649 > > │ __assert_eq' / actual: "Some" / expected: "Some"                             │
00:16:20 verbose #16650 > > │                                                                              │
00:16:20 verbose #16651 > > │ .ts output:                                                                  │
00:16:20 verbose #16652 > > │ __assert_eq' / actual: Some / expected: Some                                 │
00:16:20 verbose #16653 > > │                                                                              │
00:16:20 verbose #16654 > > │ .py output:                                                                  │
00:16:20 verbose #16655 > > │ __assert_eq' / actual: Some / expected: Some                                 │
00:16:20 verbose #16656 > > │                                                                              │
00:16:20 verbose #16657 > > │                                                                              │
00:16:20 verbose #16658 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:20 verbose #16659 > >
00:16:20 verbose #16660 > > ╭─[ 11.61s - stdout ]──────────────────────────────────────────────────────────╮
00:16:20 verbose #16661 > > │ .fsx output:                                                                 │
00:16:20 verbose #16662 > > │ __assert_eq' / actual: "Some" / expected: "Some"                             │
00:16:20 verbose #16663 > > │                                                                              │
00:16:20 verbose #16664 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:20 verbose #16665 > >
00:16:20 verbose #16666 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:20 verbose #16667 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:20 verbose #16668 > > │ ### nameof                                                                   │
00:16:20 verbose #16669 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:20 verbose #16670 > >
00:16:20 verbose #16671 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:20 verbose #16672 > > inl nameof forall t. (x : t) : string =
00:16:20 verbose #16673 > >     real
00:16:20 verbose #16674 > >         real_core.record_type_fold_back
00:16:20 verbose #16675 > >             fun key =>
00:16:20 verbose #16676 > >                 forall value. _ =>
00:16:20 verbose #16677 > >                     real_sm'.symbol_to_string `(`key)
00:16:20 verbose #16678 > >             `t
00:16:20 verbose #16679 > >             ""
00:16:20 verbose #16680 > >
00:16:20 verbose #16681 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:20 verbose #16682 > > //// test
00:16:20 verbose #16683 > >
00:16:20 verbose #16684 > > { test1 = ""; test2 = "" }
00:16:20 verbose #16685 > > |> nameof
00:16:20 verbose #16686 > > |> _assert_eq' "test1"
00:16:20 verbose #16687 > >
00:16:20 verbose #16688 > > ╭─[ 89.11ms - stdout ]─────────────────────────────────────────────────────────╮
00:16:20 verbose #16689 > > │ __assert_eq' / actual: "test1" / expected: "test1"                           │
00:16:20 verbose #16690 > > │                                                                              │
00:16:20 verbose #16691 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:20 verbose #16692 > >
00:16:20 verbose #16693 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:20 verbose #16694 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:20 verbose #16695 > > │ ### get_record_fields                                                        │
00:16:20 verbose #16696 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:20 verbose #16697 > >
00:16:20 verbose #16698 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:20 verbose #16699 > > inl get_record_fields forall t u. (x : t) : list (string * u) =
00:16:20 verbose #16700 > >     real
00:16:20 verbose #16701 > >         real_core.record_type_fold_back
00:16:20 verbose #16702 > >             fun key =>
00:16:20 verbose #16703 > >                 forall u'. acc =>
00:16:20 verbose #16704 > >                     inl k = real_sm'.symbol_to_string `(`key)
00:16:20 verbose #16705 > >                     inl v = x key
00:16:20 verbose #16706 > >                     (::) `(string * u') (k, v) acc
00:16:20 verbose #16707 > >             `t
00:16:20 verbose #16708 > >             (Nil `(string * u))
00:16:20 verbose #16709 > >
00:16:20 verbose #16710 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:20 verbose #16711 > > //// test
00:16:20 verbose #16712 > >
00:16:20 verbose #16713 > > { a = "1"; b = "2" }
00:16:20 verbose #16714 > > |> get_record_fields
00:16:20 verbose #16715 > > |> _assert_eq' [[ "a", "1"; "b", "2" ]]
00:16:20 verbose #16716 > >
00:16:20 verbose #16717 > > ╭─[ 106.15ms - stdout ]────────────────────────────────────────────────────────╮
00:16:20 verbose #16718 > > │ __assert_eq' / actual: UH0_1 ("a", "1", UH0_1 ("b", "2", UH0_0)) / expected: │
00:16:20 verbose #16719 > > │ UH0_1 ("a", "1", UH0_1 ("b", "2", UH0_0))                                    │
00:16:20 verbose #16720 > > │                                                                              │
00:16:20 verbose #16721 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:20 verbose #16722 > >
00:16:20 verbose #16723 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:20 verbose #16724 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:20 verbose #16725 > > │ ### get_functions_types                                                      │
00:16:20 verbose #16726 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:20 verbose #16727 > >
00:16:20 verbose #16728 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:20 verbose #16729 > > inl get_functions_types forall t {record}. (fns : t) =
00:16:20 verbose #16730 > >     real
00:16:20 verbose #16731 > >         inl get_function_type forall t. =
00:16:20 verbose #16732 > >             inl args forall t {record}. : list (string * string) =
00:16:20 verbose #16733 > >                 real_core.record_type_fold_back
00:16:20 verbose #16734 > >                     fun key =>
00:16:20 verbose #16735 > >                         forall v. acc =>
00:16:20 verbose #16736 > >                             inl k = real_sm'.symbol_to_string `(`key)
00:16:20 verbose #16737 > >                             inl v = $'"`v"' : string
00:16:20 verbose #16738 > >                             (::) `(string * string) (k, v) acc
00:16:20 verbose #16739 > >                     `t
00:16:20 verbose #16740 > >                     (Nil `(string * string))
00:16:20 verbose #16741 > >
00:16:20 verbose #16742 > >             typecase t with
00:16:20 verbose #16743 > >             | ~t -> ~u => args `t, ($'"`u"' : string)
00:16:20 verbose #16744 > >
00:16:20 verbose #16745 > >         real_core.record_type_fold_back
00:16:20 verbose #16746 > >             fun key =>
00:16:20 verbose #16747 > >                 forall v. acc =>
00:16:20 verbose #16748 > >                     inl k = real_sm'.symbol_to_string `(`key)
00:16:20 verbose #16749 > >                     inl args, result = get_function_type `v
00:16:20 verbose #16750 > >                     (::) `(string * (list (string * string) * string)) (k,
00:16:20 verbose #16751 > > (args, result)) acc
00:16:20 verbose #16752 > >             `(`fns)
00:16:20 verbose #16753 > >             (Nil `(string * (list (string * string) * string)))
00:16:20 verbose #16754 > >     |> fun x => x : list (string * (list (string * string) * string))
00:16:20 verbose #16755 > >
00:16:20 verbose #16756 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:20 verbose #16757 > > //// test
00:16:20 verbose #16758 > >
00:16:20 verbose #16759 > > inl one ({ a } : { a : i32 }) : i32 = a + 1
00:16:20 verbose #16760 > > inl two ({ a b } : { a : i32; b : i32 }) : i32 = a + b + 2
00:16:20 verbose #16761 > > inl fns = { one two }
00:16:20 verbose #16762 > >
00:16:20 verbose #16763 > > fns
00:16:20 verbose #16764 > > |> get_functions_types
00:16:20 verbose #16765 > > |> listm.map fun (name, args, result) => name, (args |> listm'.box |>
00:16:20 verbose #16766 > > listm'.to_array', result)
00:16:20 verbose #16767 > > |> listm'.box
00:16:20 verbose #16768 > > |> listm'.to_array'
00:16:20 verbose #16769 > > |> sm'.format
00:16:20 verbose #16770 > > |> _assert_eq' (
00:16:20 verbose #16771 > >     [[
00:16:20 verbose #16772 > >         "one", [["a", "int32"]], "int32"
00:16:20 verbose #16773 > >         "two", [["a", "int32"; "b", "int32"]], "int32"
00:16:20 verbose #16774 > >     ]]
00:16:20 verbose #16775 > >     |> listm.map fun (name, args, result) => name, (args |> listm'.box |>
00:16:20 verbose #16776 > > listm'.to_array', result)
00:16:20 verbose #16777 > >     |> listm'.box
00:16:20 verbose #16778 > >     |> listm'.to_array'
00:16:20 verbose #16779 > >     |> sm'.format
00:16:20 verbose #16780 > > )
00:16:21 verbose #16781 > >
00:16:21 verbose #16782 > > ╭─[ 114.29ms - stdout ]────────────────────────────────────────────────────────╮
00:16:21 verbose #16783 > > │ __assert_eq' / actual: "[|struct ("one", [|struct ("a", "int32")|],          │
00:16:21 verbose #16784 > > │ "int32");                                                                    │
00:16:21 verbose #16785 > > │   struct ("two", [|struct ("a", "int32"); struct ("b", "int32")|],           │
00:16:21 verbose #16786 > > │ "int32")|]" / expected: "[|struct ("one", [|struct ("a", "int32")|],         │
00:16:21 verbose #16787 > > │ "int32");                                                                    │
00:16:21 verbose #16788 > > │   struct ("two", [|struct ("a", "int32"); struct ("b", "int32")|],           │
00:16:21 verbose #16789 > > │ "int32")|]"                                                                  │
00:16:21 verbose #16790 > > │                                                                              │
00:16:21 verbose #16791 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:21 verbose #16792 > 00:01:03 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 28158 }
00:16:21 verbose #16793 > 00:01:03   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:16:21 verbose #16794 >     "nbconvert",
00:16:21 verbose #16795 >     "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb",
00:16:21 verbose #16796 >     "--to",
00:16:21 verbose #16797 >     "html",
00:16:21 verbose #16798 >     "--HTMLExporter.theme=dark",
00:16:21 verbose #16799 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:16:21 verbose #16800 > 00:01:04 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb to html
00:16:21 verbose #16801 > 00:01:04 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:16:21 verbose #16802 > 00:01:04 verbose #7 !   validate(nb)
00:16:22 verbose #16803 > 00:01:04 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:16:22 verbose #16804 > 00:01:04 verbose #9 !   return _pygments_highlight(
00:16:22 verbose #16805 > 00:01:04 verbose #10 ! [NbConvertApp] Writing 325156 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.html
00:16:22 verbose #16806 > 00:01:04 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 }
00:16:22 verbose #16807 > 00:01:04   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 }
00:16:22 verbose #16808 > 00:01:04   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:16:22 verbose #16809 >     "-c",
00:16:22 verbose #16810 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:16:22 verbose #16811 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:16:22 verbose #16812 > 00:01:05 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:16:22 verbose #16813 > 00:01:05   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:16:22 verbose #16814 > 00:01:05   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 29121 }
00:16:22   debug #16815 runtime.execute_with_options_async / { exit_code = 0; output_length = 32937 }
00:16:22   debug #21 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path reflection.dib --retries 3
00:16:22   debug #16816 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path iter.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:16:22 verbose #16817 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "iter.dib", "--retries", "3"])) }
00:16:22 verbose #16818 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:16:22 verbose #16819 >     "repl",
00:16:22 verbose #16820 >     "--exit-after-run",
00:16:22 verbose #16821 >     "--run",
00:16:22 verbose #16822 >     "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib",
00:16:22 verbose #16823 >     "--output-path",
00:16:22 verbose #16824 >     "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb",
00:16:22 verbose #16825 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:16:24 verbose #16826 > >
00:16:24 verbose #16827 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:24 verbose #16828 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:24 verbose #16829 > > │ # iter                                                                       │
00:16:24 verbose #16830 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:26 verbose #16831 > >
00:16:26 verbose #16832 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:26 verbose #16833 > > open rust
00:16:26 verbose #16834 > > open rust_operators
00:16:27 verbose #16835 > >
00:16:27 verbose #16836 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:27 verbose #16837 > > //// test
00:16:27 verbose #16838 > >
00:16:27 verbose #16839 > > open testing
00:16:27 verbose #16840 > >
00:16:27 verbose #16841 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:27 verbose #16842 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:27 verbose #16843 > > │ ## rust                                                                      │
00:16:27 verbose #16844 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:27 verbose #16845 > >
00:16:27 verbose #16846 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:27 verbose #16847 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:27 verbose #16848 > > │ ### enumerate                                                                │
00:16:27 verbose #16849 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:27 verbose #16850 > >
00:16:27 verbose #16851 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:27 verbose #16852 > > inl enumerate forall t. (iter : into_iterator t) : into_iterator (pair
00:16:27 verbose #16853 > > unativeint t) =
00:16:27 verbose #16854 > >     !\($'"!iter.enumerate().map(std::sync::Arc::new)"')
00:16:27 verbose #16855 > >
00:16:27 verbose #16856 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:27 verbose #16857 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:27 verbose #16858 > > │ ### into_iter                                                                │
00:16:27 verbose #16859 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:27 verbose #16860 > >
00:16:27 verbose #16861 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:27 verbose #16862 > > inl into_iter forall (t : * -> *) u. (x : t u) : into_iterator u =
00:16:27 verbose #16863 > >     !\($'"!x.into_iter()"')
00:16:27 verbose #16864 > >
00:16:27 verbose #16865 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:27 verbose #16866 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:27 verbose #16867 > > │ ### iter                                                                     │
00:16:27 verbose #16868 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:27 verbose #16869 > >
00:16:27 verbose #16870 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:27 verbose #16871 > > inl iter forall (t : * -> *) u. (x : t u) : into_iterator u =
00:16:27 verbose #16872 > >     !\($'"!x.iter()"')
00:16:27 verbose #16873 > >
00:16:27 verbose #16874 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:27 verbose #16875 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:27 verbose #16876 > > │ ### map                                                                      │
00:16:27 verbose #16877 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:27 verbose #16878 > >
00:16:27 verbose #16879 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:27 verbose #16880 > > inl map forall t u. (fn : t -> u) (iter : into_iterator t) : into_iterator u =
00:16:27 verbose #16881 > >     !\\(fn, $'"!iter.map(|x| $0(x))"')
00:16:27 verbose #16882 > >
00:16:27 verbose #16883 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:27 verbose #16884 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:27 verbose #16885 > > │ ### cloned                                                                   │
00:16:27 verbose #16886 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:27 verbose #16887 > >
00:16:27 verbose #16888 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:27 verbose #16889 > > inl cloned forall t. (iter : into_iterator (rust.ref t)) : into_iterator t =
00:16:27 verbose #16890 > >     !\($'"!iter.cloned()"')
00:16:27 verbose #16891 > >
00:16:27 verbose #16892 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:27 verbose #16893 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:27 verbose #16894 > > │ ### for_each                                                                 │
00:16:27 verbose #16895 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:27 verbose #16896 > >
00:16:27 verbose #16897 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:27 verbose #16898 > > inl for_each forall t. (fn : t -> ()) (iter : into_iterator t) : () =
00:16:27 verbose #16899 > >     (!\\(fn, $'"true; !iter.for_each(|x| $0(x))"') : bool) |> ignore
00:16:28 verbose #16900 > >
00:16:28 verbose #16901 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:28 verbose #16902 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:28 verbose #16903 > > │ ### try_for_each                                                             │
00:16:28 verbose #16904 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:28 verbose #16905 > >
00:16:28 verbose #16906 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:28 verbose #16907 > > inl try_for_each forall t. (fn : t -> rust.try ()) x : resultm.result' () string
00:16:28 verbose #16908 > > =
00:16:28 verbose #16909 > >     (!\($'"true; let mut !x = !x; let _iter_try_for_each = !x.try_for_each(|x| {
00:16:28 verbose #16910 > > //"') : bool) |> ignore
00:16:28 verbose #16911 > >     (!\\(fn !\($'"x"'), $'"true; $0 }); //"') : bool) |> ignore
00:16:28 verbose #16912 > >     !\($'"_iter_try_for_each.map_err(|x| x.into())"')
00:16:28 verbose #16913 > >
00:16:28 verbose #16914 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:28 verbose #16915 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:28 verbose #16916 > > │ ### all                                                                      │
00:16:28 verbose #16917 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:28 verbose #16918 > >
00:16:28 verbose #16919 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:28 verbose #16920 > > inl all forall t. (fn : t -> bool) (x : rust.mut' (into_iterator t)) : bool =
00:16:28 verbose #16921 > >     x |> rust.to_mut
00:16:28 verbose #16922 > >     !\\(fn, $'$"!x.all(|x| $0(x))"')
00:16:28 verbose #16923 > >
00:16:28 verbose #16924 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:28 verbose #16925 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:28 verbose #16926 > > │ ### enumerate                                                                │
00:16:28 verbose #16927 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:28 verbose #16928 > >
00:16:28 verbose #16929 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:28 verbose #16930 > > inl enumerate forall dim {int; number} t. (ar : a dim t) : a dim (unativeint *
00:16:28 verbose #16931 > > t) =
00:16:28 verbose #16932 > >     inl (a ar) = ar
00:16:28 verbose #16933 > >     ar
00:16:28 verbose #16934 > >     |> am'.to_vec
00:16:28 verbose #16935 > >     |> into_iter
00:16:28 verbose #16936 > >     |> enumerate
00:16:28 verbose #16937 > >     |> iter_collect
00:16:28 verbose #16938 > >     |> am'.vec_map' from_pair
00:16:28 verbose #16939 > >     |> am'.from_vec
00:16:28 verbose #16940 > >
00:16:28 verbose #16941 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:28 verbose #16942 > > //// test
00:16:28 verbose #16943 > > ///! rust
00:16:28 verbose #16944 > >
00:16:28 verbose #16945 > > am'.init_series 0i32 2 1
00:16:28 verbose #16946 > > |> fun x => a x : _ int _
00:16:28 verbose #16947 > > |> enumerate
00:16:28 verbose #16948 > > |> fun (a x : _ int _) => x
00:16:28 verbose #16949 > > |> _assert_eq' ;[[ convert 0i32, 0; convert 1i32, 1; convert 2i32, 2 ]]
00:16:35 verbose #16950 > >
00:16:35 verbose #16951 > > ╭─[ 7.34s - return value ]─────────────────────────────────────────────────────╮
00:16:35 verbose #16952 > > │ __assert_eq' / actual: Array(MutCell([(0, 0), (1, 1), (2, 2)])) / expected:  │
00:16:35 verbose #16953 > > │ Array(MutCell([(0, 0), (1, 1), (2, 2)]))                                     │
00:16:35 verbose #16954 > > │                                                                              │
00:16:35 verbose #16955 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:35 verbose #16956 > 00:00:12 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 7674 }
00:16:35 verbose #16957 > 00:00:12   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:16:35 verbose #16958 >     "nbconvert",
00:16:35 verbose #16959 >     "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb",
00:16:35 verbose #16960 >     "--to",
00:16:35 verbose #16961 >     "html",
00:16:35 verbose #16962 >     "--HTMLExporter.theme=dark",
00:16:35 verbose #16963 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:16:36 verbose #16964 > 00:00:13 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb to html
00:16:36 verbose #16965 > 00:00:13 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:16:36 verbose #16966 > 00:00:13 verbose #7 !   validate(nb)
00:16:36 verbose #16967 > 00:00:13 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:16:36 verbose #16968 > 00:00:13 verbose #9 !   return _pygments_highlight(
00:16:36 verbose #16969 > 00:00:14 verbose #10 ! [NbConvertApp] Writing 292052 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.html
00:16:36 verbose #16970 > 00:00:14 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 }
00:16:36 verbose #16971 > 00:00:14   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 }
00:16:36 verbose #16972 > 00:00:14   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:16:36 verbose #16973 >     "-c",
00:16:36 verbose #16974 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:16:36 verbose #16975 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:16:37 verbose #16976 > 00:00:14 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:16:37 verbose #16977 > 00:00:14   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:16:37 verbose #16978 > 00:00:14   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 8625 }
00:16:37   debug #16979 runtime.execute_with_options_async / { exit_code = 0; output_length = 11709 }
00:16:37   debug #22 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path iter.dib --retries 3
00:16:37   debug #16980 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path wasm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:16:37 verbose #16981 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "wasm.dib", "--retries", "3"])) }
00:16:37 verbose #16982 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:16:37 verbose #16983 >     "repl",
00:16:37 verbose #16984 >     "--exit-after-run",
00:16:37 verbose #16985 >     "--run",
00:16:37 verbose #16986 >     "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib",
00:16:37 verbose #16987 >     "--output-path",
00:16:37 verbose #16988 >     "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb",
00:16:37 verbose #16989 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:16:38 verbose #16990 > >
00:16:38 verbose #16991 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:38 verbose #16992 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:38 verbose #16993 > > │ # wasm                                                                       │
00:16:38 verbose #16994 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:41 verbose #16995 > >
00:16:41 verbose #16996 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:41 verbose #16997 > > open rust
00:16:41 verbose #16998 > > open rust_operators
00:16:41 verbose #16999 > >
00:16:41 verbose #17000 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:41 verbose #17001 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:41 verbose #17002 > > │ ### rexie                                                                    │
00:16:41 verbose #17003 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:41 verbose #17004 > >
00:16:41 verbose #17005 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:41 verbose #17006 > > nominal rexie =
00:16:41 verbose #17007 > >     `(
00:16:41 verbose #17008 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:41 verbose #17009 > > Fable.Core.Emit(\"rexie::Rexie\")>]]\n#endif\ntype rexie_Rexie = class end"
00:16:41 verbose #17010 > >         $'' : $'rexie_Rexie'
00:16:41 verbose #17011 > >     )
00:16:41 verbose #17012 > >
00:16:41 verbose #17013 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:41 verbose #17014 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:41 verbose #17015 > > │ ### rexie_store                                                              │
00:16:41 verbose #17016 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:41 verbose #17017 > >
00:16:41 verbose #17018 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:41 verbose #17019 > > nominal rexie_store =
00:16:41 verbose #17020 > >     `(
00:16:41 verbose #17021 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:41 verbose #17022 > > Fable.Core.Emit(\"rexie::Store\")>]]\n#endif\ntype rexie_Store = class end"
00:16:41 verbose #17023 > >         $'' : $'rexie_Store'
00:16:41 verbose #17024 > >     )
00:16:41 verbose #17025 > >
00:16:41 verbose #17026 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:41 verbose #17027 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:41 verbose #17028 > > │ ### rexie_transaction                                                        │
00:16:41 verbose #17029 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:41 verbose #17030 > >
00:16:41 verbose #17031 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:41 verbose #17032 > > nominal rexie_transaction =
00:16:41 verbose #17033 > >     `(
00:16:41 verbose #17034 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:41 verbose #17035 > > Fable.Core.Emit(\"rexie::Transaction\")>]]\n#endif\ntype rexie_Transaction =
00:16:41 verbose #17036 > > class end"
00:16:41 verbose #17037 > >         $'' : $'rexie_Transaction'
00:16:41 verbose #17038 > >     )
00:16:42 verbose #17039 > >
00:16:42 verbose #17040 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:42 verbose #17041 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:42 verbose #17042 > > │ ### rexie_error                                                              │
00:16:42 verbose #17043 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:42 verbose #17044 > >
00:16:42 verbose #17045 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:42 verbose #17046 > > nominal rexie_error =
00:16:42 verbose #17047 > >     `(
00:16:42 verbose #17048 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:42 verbose #17049 > > Fable.Core.Emit(\"rexie::Error\")>]]\n#endif\ntype rexie_Error = class end"
00:16:42 verbose #17050 > >         $'' : $'rexie_Error'
00:16:42 verbose #17051 > >     )
00:16:42 verbose #17052 > >
00:16:42 verbose #17053 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:42 verbose #17054 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:42 verbose #17055 > > │ ### js_value                                                                 │
00:16:42 verbose #17056 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:42 verbose #17057 > >
00:16:42 verbose #17058 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:42 verbose #17059 > > nominal js_value =
00:16:42 verbose #17060 > >     `(
00:16:42 verbose #17061 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:42 verbose #17062 > > Fable.Core.Emit(\"wasm_bindgen::JsValue\")>]]\n#endif\ntype wasm_bindgen_JsValue
00:16:42 verbose #17063 > > = class end"
00:16:42 verbose #17064 > >         $'' : $'wasm_bindgen_JsValue'
00:16:42 verbose #17065 > >     )
00:16:42 verbose #17066 > >
00:16:42 verbose #17067 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:42 verbose #17068 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:42 verbose #17069 > > │ ### closure                                                                  │
00:16:42 verbose #17070 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:42 verbose #17071 > >
00:16:42 verbose #17072 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:42 verbose #17073 > > nominal closure t =
00:16:42 verbose #17074 > >     `(
00:16:42 verbose #17075 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:42 verbose #17076 > > Fable.Core.Emit(\"wasm_bindgen::closure::Closure<$0>\")>]]\n#endif\ntype
00:16:42 verbose #17077 > > wasm_bindgen_closure_Closure<'T> = class end"
00:16:42 verbose #17078 > >         $'' : $'wasm_bindgen_closure_Closure<`t>'
00:16:42 verbose #17079 > >     )
00:16:42 verbose #17080 > >
00:16:42 verbose #17081 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:42 verbose #17082 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:42 verbose #17083 > > │ ### js_function                                                              │
00:16:42 verbose #17084 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:42 verbose #17085 > >
00:16:42 verbose #17086 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:42 verbose #17087 > > nominal js_function =
00:16:42 verbose #17088 > >     `(
00:16:42 verbose #17089 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:42 verbose #17090 > > Fable.Core.Emit(\"js_sys::Function\")>]]\n#endif\ntype js_sys_Function = class
00:16:42 verbose #17091 > > end"
00:16:42 verbose #17092 > >         $'' : $'js_sys_Function'
00:16:42 verbose #17093 > >     )
00:16:42 verbose #17094 > >
00:16:42 verbose #17095 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:42 verbose #17096 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:42 verbose #17097 > > │ ### window                                                                   │
00:16:42 verbose #17098 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:42 verbose #17099 > >
00:16:42 verbose #17100 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:42 verbose #17101 > > nominal window =
00:16:42 verbose #17102 > >     `(
00:16:42 verbose #17103 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:42 verbose #17104 > > Fable.Core.Emit(\"web_sys::Window\")>]]\n#endif\ntype web_sys_Window = class
00:16:42 verbose #17105 > > end"
00:16:42 verbose #17106 > >         $'' : $'web_sys_Window'
00:16:42 verbose #17107 > >     )
00:16:42 verbose #17108 > >
00:16:42 verbose #17109 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:42 verbose #17110 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:42 verbose #17111 > > │ ### document                                                                 │
00:16:42 verbose #17112 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:42 verbose #17113 > >
00:16:42 verbose #17114 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:42 verbose #17115 > > nominal document =
00:16:42 verbose #17116 > >     `(
00:16:42 verbose #17117 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:42 verbose #17118 > > Fable.Core.Emit(\"web_sys::Document\")>]]\n#endif\ntype web_sys_Document = class
00:16:42 verbose #17119 > > end"
00:16:42 verbose #17120 > >         $'' : $'web_sys_Document'
00:16:42 verbose #17121 > >     )
00:16:42 verbose #17122 > >
00:16:42 verbose #17123 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:42 verbose #17124 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:42 verbose #17125 > > │ ### html_element                                                             │
00:16:42 verbose #17126 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:42 verbose #17127 > >
00:16:42 verbose #17128 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:42 verbose #17129 > > nominal html_element =
00:16:42 verbose #17130 > >     `(
00:16:42 verbose #17131 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:42 verbose #17132 > > Fable.Core.Emit(\"web_sys::HtmlElement\")>]]\n#endif\ntype web_sys_HtmlElement =
00:16:42 verbose #17133 > > class end"
00:16:42 verbose #17134 > >         $'' : $'web_sys_HtmlElement'
00:16:42 verbose #17135 > >     )
00:16:42 verbose #17136 > >
00:16:42 verbose #17137 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:42 verbose #17138 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:42 verbose #17139 > > │ ### storage                                                                  │
00:16:42 verbose #17140 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:42 verbose #17141 > >
00:16:42 verbose #17142 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:42 verbose #17143 > > nominal storage =
00:16:42 verbose #17144 > >     `(
00:16:42 verbose #17145 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:42 verbose #17146 > > Fable.Core.Emit(\"web_sys::Storage\")>]]\n#endif\ntype web_sys_Storage = class
00:16:42 verbose #17147 > > end"
00:16:42 verbose #17148 > >         $'' : $'web_sys_Storage'
00:16:42 verbose #17149 > >     )
00:16:42 verbose #17150 > >
00:16:42 verbose #17151 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:42 verbose #17152 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:42 verbose #17153 > > │ ### closure_wrap                                                             │
00:16:42 verbose #17154 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:42 verbose #17155 > >
00:16:42 verbose #17156 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:42 verbose #17157 > > inl closure_wrap forall t. (x : rust.box t) : closure t =
00:16:42 verbose #17158 > >     inl x = join x
00:16:42 verbose #17159 > >     !\($'"wasm_bindgen::closure::Closure::wrap(!x)"')
00:16:42 verbose #17160 > >
00:16:42 verbose #17161 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:42 verbose #17162 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:42 verbose #17163 > > │ ### closure_forget                                                           │
00:16:42 verbose #17164 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:42 verbose #17165 > >
00:16:42 verbose #17166 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:42 verbose #17167 > > inl closure_forget forall t. (closure : closure t) =
00:16:42 verbose #17168 > >     !\($'"!closure.forget()"') : ()
00:16:43 verbose #17169 > >
00:16:43 verbose #17170 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:43 verbose #17171 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:43 verbose #17172 > > │ ### closure_as_ref                                                           │
00:16:43 verbose #17173 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:43 verbose #17174 > >
00:16:43 verbose #17175 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:43 verbose #17176 > > inl closure_as_ref forall t. (closure : closure t) : rust.ref js_value =
00:16:43 verbose #17177 > >     !\($'"wasm_bindgen::closure::Closure::as_ref(&!closure)"')
00:16:43 verbose #17178 > >
00:16:43 verbose #17179 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:43 verbose #17180 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:43 verbose #17181 > > │ ### unchecked_ref                                                            │
00:16:43 verbose #17182 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:43 verbose #17183 > >
00:16:43 verbose #17184 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:43 verbose #17185 > > inl unchecked_ref (ref : rust.ref js_value) : rust.ref js_function =
00:16:43 verbose #17186 > >     !\($'"wasm_bindgen::JsCast::unchecked_ref(!ref)"')
00:16:43 verbose #17187 > >
00:16:43 verbose #17188 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:43 verbose #17189 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:43 verbose #17190 > > │ ### set_inner_html                                                           │
00:16:43 verbose #17191 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:43 verbose #17192 > >
00:16:43 verbose #17193 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:43 verbose #17194 > > inl set_inner_html (html : string) (el : html_element) =
00:16:43 verbose #17195 > >     inl html = join html
00:16:43 verbose #17196 > >     inl html = html |> sm'.as_str
00:16:43 verbose #17197 > >     inl el = join el
00:16:43 verbose #17198 > >     !\($'"!el.set_inner_html(!html)"')
00:16:43 verbose #17199 > >
00:16:43 verbose #17200 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:43 verbose #17201 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:43 verbose #17202 > > │ ### from_js_value                                                            │
00:16:43 verbose #17203 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:43 verbose #17204 > >
00:16:43 verbose #17205 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:43 verbose #17206 > > inl from_js_value (value : js_value) : resultm.result' (optionm'.option'
00:16:43 verbose #17207 > > sm'.json_value) sm'.std_string =
00:16:43 verbose #17208 > >     inl value = join value
00:16:43 verbose #17209 > >     !\($'"serde_wasm_bindgen::from_value(!value)"')
00:16:43 verbose #17210 > >     |> resultm.map_error' fun (x : sm'.serde_wasm_bindgen_error) => x |>
00:16:43 verbose #17211 > > sm'.format'
00:16:43 verbose #17212 > 00:00:06 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 12251 }
00:16:43 verbose #17213 > 00:00:06   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:16:43 verbose #17214 >     "nbconvert",
00:16:43 verbose #17215 >     "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb",
00:16:43 verbose #17216 >     "--to",
00:16:43 verbose #17217 >     "html",
00:16:43 verbose #17218 >     "--HTMLExporter.theme=dark",
00:16:43 verbose #17219 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:16:44 verbose #17220 > 00:00:06 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb to html
00:16:44 verbose #17221 > 00:00:06 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:16:44 verbose #17222 > 00:00:06 verbose #7 !   validate(nb)
00:16:44 verbose #17223 > 00:00:07 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:16:44 verbose #17224 > 00:00:07 verbose #9 !   return _pygments_highlight(
00:16:44 verbose #17225 > 00:00:07 verbose #10 ! [NbConvertApp] Writing 302326 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.html
00:16:44 verbose #17226 > 00:00:07 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 }
00:16:44 verbose #17227 > 00:00:07   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 }
00:16:44 verbose #17228 > 00:00:07   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:16:44 verbose #17229 >     "-c",
00:16:44 verbose #17230 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:16:44 verbose #17231 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:16:45 verbose #17232 > 00:00:07 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:16:45 verbose #17233 > 00:00:07   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:16:45 verbose #17234 > 00:00:07   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 13202 }
00:16:45   debug #17235 runtime.execute_with_options_async / { exit_code = 0; output_length = 16472 }
00:16:45   debug #23 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path wasm.dib --retries 3
00:16:45   debug #17236 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path leptos/leptos.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:16:45 verbose #17237 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "leptos/leptos.dib", "--retries", "3"])) }
00:16:45 verbose #17238 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:16:45 verbose #17239 >     "repl",
00:16:45 verbose #17240 >     "--exit-after-run",
00:16:45 verbose #17241 >     "--run",
00:16:45 verbose #17242 >     "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib",
00:16:45 verbose #17243 >     "--output-path",
00:16:45 verbose #17244 >     "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb",
00:16:45 verbose #17245 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:16:46 verbose #17246 > >
00:16:46 verbose #17247 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:46 verbose #17248 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:46 verbose #17249 > > │ # leptos                                                                     │
00:16:46 verbose #17250 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:48 verbose #17251 > >
00:16:48 verbose #17252 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:48 verbose #17253 > > open rust.rust_operators
00:16:48 verbose #17254 > > open rust
00:16:48 verbose #17255 > > open sm'_operators
00:16:49 verbose #17256 > >
00:16:49 verbose #17257 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:49 verbose #17258 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:49 verbose #17259 > > │ ### a'                                                                       │
00:16:49 verbose #17260 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:49 verbose #17261 > >
00:16:49 verbose #17262 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:49 verbose #17263 > > nominal a' =
00:16:49 verbose #17264 > >     `(
00:16:49 verbose #17265 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:49 verbose #17266 > > Fable.Core.Emit(\"leptos::html::A\")>]]\n#endif\ntype leptos_html_A = class end"
00:16:49 verbose #17267 > >         $'' : $'leptos_html_A'
00:16:49 verbose #17268 > >     )
00:16:49 verbose #17269 > >
00:16:49 verbose #17270 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:49 verbose #17271 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:49 verbose #17272 > > │ ### event                                                                    │
00:16:49 verbose #17273 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:49 verbose #17274 > >
00:16:49 verbose #17275 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:49 verbose #17276 > > nominal event =
00:16:49 verbose #17277 > >     `(
00:16:49 verbose #17278 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:49 verbose #17279 > > Fable.Core.Emit(\"leptos::ev::Event\")>]]\n#endif\ntype leptos_ev_Event = class
00:16:49 verbose #17280 > > end"
00:16:49 verbose #17281 > >         $'' : $'leptos_ev_Event'
00:16:49 verbose #17282 > >     )
00:16:49 verbose #17283 > >
00:16:49 verbose #17284 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:49 verbose #17285 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:49 verbose #17286 > > │ ### mouse_event                                                              │
00:16:49 verbose #17287 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:49 verbose #17288 > >
00:16:49 verbose #17289 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:49 verbose #17290 > > nominal mouse_event =
00:16:49 verbose #17291 > >     `(
00:16:49 verbose #17292 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:49 verbose #17293 > > Fable.Core.Emit(\"leptos::ev::MouseEvent\")>]]\n#endif\ntype
00:16:49 verbose #17294 > > leptos_ev_MouseEvent = class end"
00:16:49 verbose #17295 > >         $'' : $'leptos_ev_MouseEvent'
00:16:49 verbose #17296 > >     )
00:16:49 verbose #17297 > >
00:16:49 verbose #17298 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:49 verbose #17299 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:49 verbose #17300 > > │ ### button                                                                   │
00:16:49 verbose #17301 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:49 verbose #17302 > >
00:16:49 verbose #17303 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:49 verbose #17304 > > nominal button =
00:16:49 verbose #17305 > >     `(
00:16:49 verbose #17306 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:49 verbose #17307 > > Fable.Core.Emit(\"leptos::html::Button\")>]]\n#endif\ntype leptos_html_Button =
00:16:49 verbose #17308 > > class end"
00:16:49 verbose #17309 > >         $'' : $'leptos_html_Button'
00:16:49 verbose #17310 > >     )
00:16:49 verbose #17311 > >
00:16:49 verbose #17312 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:49 verbose #17313 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:49 verbose #17314 > > │ ### details                                                                  │
00:16:49 verbose #17315 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:49 verbose #17316 > >
00:16:49 verbose #17317 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:49 verbose #17318 > > nominal details =
00:16:49 verbose #17319 > >     `(
00:16:49 verbose #17320 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:49 verbose #17321 > > Fable.Core.Emit(\"leptos::html::Details\")>]]\n#endif\ntype leptos_html_Details
00:16:49 verbose #17322 > > = class end"
00:16:49 verbose #17323 > >         $'' : $'leptos_html_Details'
00:16:49 verbose #17324 > >     )
00:16:50 verbose #17325 > >
00:16:50 verbose #17326 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:50 verbose #17327 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:50 verbose #17328 > > │ ### dd                                                                       │
00:16:50 verbose #17329 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:50 verbose #17330 > >
00:16:50 verbose #17331 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:50 verbose #17332 > > nominal dd =
00:16:50 verbose #17333 > >     `(
00:16:50 verbose #17334 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:50 verbose #17335 > > Fable.Core.Emit(\"leptos::html::Dd\")>]]\n#endif\ntype leptos_html_Dd = class
00:16:50 verbose #17336 > > end"
00:16:50 verbose #17337 > >         $'' : $'leptos_html_Dd'
00:16:50 verbose #17338 > >     )
00:16:50 verbose #17339 > >
00:16:50 verbose #17340 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:50 verbose #17341 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:50 verbose #17342 > > │ ### div                                                                      │
00:16:50 verbose #17343 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:50 verbose #17344 > >
00:16:50 verbose #17345 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:50 verbose #17346 > > nominal div =
00:16:50 verbose #17347 > >     `(
00:16:50 verbose #17348 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:50 verbose #17349 > > Fable.Core.Emit(\"leptos::html::Div\")>]]\n#endif\ntype leptos_html_Div = class
00:16:50 verbose #17350 > > end"
00:16:50 verbose #17351 > >         $'' : $'leptos_html_Div'
00:16:50 verbose #17352 > >     )
00:16:50 verbose #17353 > >
00:16:50 verbose #17354 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:50 verbose #17355 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:50 verbose #17356 > > │ ### dl                                                                       │
00:16:50 verbose #17357 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:50 verbose #17358 > >
00:16:50 verbose #17359 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:50 verbose #17360 > > nominal dl =
00:16:50 verbose #17361 > >     `(
00:16:50 verbose #17362 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:50 verbose #17363 > > Fable.Core.Emit(\"leptos::html::Dl\")>]]\n#endif\ntype leptos_html_Dl = class
00:16:50 verbose #17364 > > end"
00:16:50 verbose #17365 > >         $'' : $'leptos_html_Dl'
00:16:50 verbose #17366 > >     )
00:16:50 verbose #17367 > >
00:16:50 verbose #17368 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:50 verbose #17369 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:50 verbose #17370 > > │ ### dt                                                                       │
00:16:50 verbose #17371 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:50 verbose #17372 > >
00:16:50 verbose #17373 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:50 verbose #17374 > > nominal dt =
00:16:50 verbose #17375 > >     `(
00:16:50 verbose #17376 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:50 verbose #17377 > > Fable.Core.Emit(\"leptos::html::Dt\")>]]\n#endif\ntype leptos_html_Dt = class
00:16:50 verbose #17378 > > end"
00:16:50 verbose #17379 > >         $'' : $'leptos_html_Dt'
00:16:50 verbose #17380 > >     )
00:16:50 verbose #17381 > >
00:16:50 verbose #17382 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:50 verbose #17383 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:50 verbose #17384 > > │ ### footer                                                                   │
00:16:50 verbose #17385 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:50 verbose #17386 > >
00:16:50 verbose #17387 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:50 verbose #17388 > > nominal footer =
00:16:50 verbose #17389 > >     `(
00:16:50 verbose #17390 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:50 verbose #17391 > > Fable.Core.Emit(\"leptos::html::Footer\")>]]\n#endif\ntype leptos_html_Footer =
00:16:50 verbose #17392 > > class end"
00:16:50 verbose #17393 > >         $'' : $'leptos_html_Footer'
00:16:50 verbose #17394 > >     )
00:16:50 verbose #17395 > >
00:16:50 verbose #17396 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:50 verbose #17397 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:50 verbose #17398 > > │ ### header                                                                   │
00:16:50 verbose #17399 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:50 verbose #17400 > >
00:16:50 verbose #17401 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:50 verbose #17402 > > nominal header =
00:16:50 verbose #17403 > >     `(
00:16:50 verbose #17404 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:50 verbose #17405 > > Fable.Core.Emit(\"leptos::html::Header\")>]]\n#endif\ntype leptos_html_Header =
00:16:50 verbose #17406 > > class end"
00:16:50 verbose #17407 > >         $'' : $'leptos_html_Header'
00:16:50 verbose #17408 > >     )
00:16:50 verbose #17409 > >
00:16:50 verbose #17410 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:50 verbose #17411 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:50 verbose #17412 > > │ ### input                                                                    │
00:16:50 verbose #17413 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:50 verbose #17414 > >
00:16:50 verbose #17415 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:50 verbose #17416 > > nominal input =
00:16:50 verbose #17417 > >     `(
00:16:50 verbose #17418 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:50 verbose #17419 > > Fable.Core.Emit(\"leptos::html::Input\")>]]\n#endif\ntype leptos_html_Input =
00:16:50 verbose #17420 > > class end"
00:16:50 verbose #17421 > >         $'' : $'leptos_html_Input'
00:16:50 verbose #17422 > >     )
00:16:50 verbose #17423 > >
00:16:50 verbose #17424 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:50 verbose #17425 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:50 verbose #17426 > > │ ### label                                                                    │
00:16:50 verbose #17427 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:50 verbose #17428 > >
00:16:50 verbose #17429 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:50 verbose #17430 > > nominal label =
00:16:50 verbose #17431 > >     `(
00:16:50 verbose #17432 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:50 verbose #17433 > > Fable.Core.Emit(\"leptos::html::Label\")>]]\n#endif\ntype leptos_html_Label =
00:16:50 verbose #17434 > > class end"
00:16:50 verbose #17435 > >         $'' : $'leptos_html_Label'
00:16:50 verbose #17436 > >     )
00:16:50 verbose #17437 > >
00:16:50 verbose #17438 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:50 verbose #17439 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:50 verbose #17440 > > │ ### main                                                                     │
00:16:50 verbose #17441 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:50 verbose #17442 > >
00:16:50 verbose #17443 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:50 verbose #17444 > > nominal main =
00:16:50 verbose #17445 > >     `(
00:16:50 verbose #17446 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:50 verbose #17447 > > Fable.Core.Emit(\"leptos::html::Main\")>]]\n#endif\ntype leptos_html_Main =
00:16:50 verbose #17448 > > class end"
00:16:50 verbose #17449 > >         $'' : $'leptos_html_Main'
00:16:50 verbose #17450 > >     )
00:16:51 verbose #17451 > >
00:16:51 verbose #17452 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:51 verbose #17453 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:51 verbose #17454 > > │ ### nav                                                                      │
00:16:51 verbose #17455 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:51 verbose #17456 > >
00:16:51 verbose #17457 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:51 verbose #17458 > > nominal nav =
00:16:51 verbose #17459 > >     `(
00:16:51 verbose #17460 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:51 verbose #17461 > > Fable.Core.Emit(\"leptos::html::Nav\")>]]\n#endif\ntype leptos_html_Nav = class
00:16:51 verbose #17462 > > end"
00:16:51 verbose #17463 > >         $'' : $'leptos_html_Nav'
00:16:51 verbose #17464 > >     )
00:16:51 verbose #17465 > >
00:16:51 verbose #17466 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:51 verbose #17467 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:51 verbose #17468 > > │ ### option'                                                                  │
00:16:51 verbose #17469 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:51 verbose #17470 > >
00:16:51 verbose #17471 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:51 verbose #17472 > > nominal option' =
00:16:51 verbose #17473 > >     `(
00:16:51 verbose #17474 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:51 verbose #17475 > > Fable.Core.Emit(\"leptos::html::Option_\")>]]\n#endif\ntype leptos_html_Option =
00:16:51 verbose #17476 > > class end"
00:16:51 verbose #17477 > >         $'' : $'leptos_html_Option'
00:16:51 verbose #17478 > >     )
00:16:51 verbose #17479 > >
00:16:51 verbose #17480 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:51 verbose #17481 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:51 verbose #17482 > > │ ### pre                                                                      │
00:16:51 verbose #17483 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:51 verbose #17484 > >
00:16:51 verbose #17485 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:51 verbose #17486 > > nominal pre =
00:16:51 verbose #17487 > >     `(
00:16:51 verbose #17488 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:51 verbose #17489 > > Fable.Core.Emit(\"leptos::html::Pre\")>]]\n#endif\ntype leptos_html_Pre = class
00:16:51 verbose #17490 > > end"
00:16:51 verbose #17491 > >         $'' : $'leptos_html_Pre'
00:16:51 verbose #17492 > >     )
00:16:51 verbose #17493 > >
00:16:51 verbose #17494 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:51 verbose #17495 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:51 verbose #17496 > > │ ### select                                                                   │
00:16:51 verbose #17497 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:51 verbose #17498 > >
00:16:51 verbose #17499 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:51 verbose #17500 > > nominal select =
00:16:51 verbose #17501 > >     `(
00:16:51 verbose #17502 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:51 verbose #17503 > > Fable.Core.Emit(\"leptos::html::Select\")>]]\n#endif\ntype leptos_html_Select =
00:16:51 verbose #17504 > > class end"
00:16:51 verbose #17505 > >         $'' : $'leptos_html_Select'
00:16:51 verbose #17506 > >     )
00:16:51 verbose #17507 > >
00:16:51 verbose #17508 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:51 verbose #17509 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:51 verbose #17510 > > │ ### span                                                                     │
00:16:51 verbose #17511 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:51 verbose #17512 > >
00:16:51 verbose #17513 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:51 verbose #17514 > > nominal span =
00:16:51 verbose #17515 > >     `(
00:16:51 verbose #17516 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:51 verbose #17517 > > Fable.Core.Emit(\"leptos::html::Span\")>]]\n#endif\ntype leptos_html_Span =
00:16:51 verbose #17518 > > class end"
00:16:51 verbose #17519 > >         $'' : $'leptos_html_Span'
00:16:51 verbose #17520 > >     )
00:16:51 verbose #17521 > >
00:16:51 verbose #17522 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:51 verbose #17523 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:51 verbose #17524 > > │ ### summary                                                                  │
00:16:51 verbose #17525 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:51 verbose #17526 > >
00:16:51 verbose #17527 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:51 verbose #17528 > > nominal summary =
00:16:51 verbose #17529 > >     `(
00:16:51 verbose #17530 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:51 verbose #17531 > > Fable.Core.Emit(\"leptos::html::Summary\")>]]\n#endif\ntype leptos_html_Summary
00:16:51 verbose #17532 > > = class end"
00:16:51 verbose #17533 > >         $'' : $'leptos_html_Summary'
00:16:51 verbose #17534 > >     )
00:16:51 verbose #17535 > >
00:16:51 verbose #17536 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:51 verbose #17537 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:51 verbose #17538 > > │ ### table                                                                    │
00:16:51 verbose #17539 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:51 verbose #17540 > >
00:16:51 verbose #17541 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:51 verbose #17542 > > nominal table =
00:16:51 verbose #17543 > >     `(
00:16:51 verbose #17544 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:51 verbose #17545 > > Fable.Core.Emit(\"leptos::html::Table\")>]]\n#endif\ntype leptos_html_Table =
00:16:51 verbose #17546 > > class end"
00:16:51 verbose #17547 > >         $'' : $'leptos_html_Table'
00:16:51 verbose #17548 > >     )
00:16:51 verbose #17549 > >
00:16:51 verbose #17550 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:51 verbose #17551 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:51 verbose #17552 > > │ ### thead                                                                    │
00:16:51 verbose #17553 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:51 verbose #17554 > >
00:16:51 verbose #17555 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:51 verbose #17556 > > nominal thead =
00:16:51 verbose #17557 > >     `(
00:16:51 verbose #17558 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:51 verbose #17559 > > Fable.Core.Emit(\"leptos::html::Thead\")>]]\n#endif\ntype leptos_html_Thead =
00:16:51 verbose #17560 > > class end"
00:16:51 verbose #17561 > >         $'' : $'leptos_html_Thead'
00:16:51 verbose #17562 > >     )
00:16:51 verbose #17563 > >
00:16:51 verbose #17564 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:51 verbose #17565 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:51 verbose #17566 > > │ ### tbody                                                                    │
00:16:51 verbose #17567 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:51 verbose #17568 > >
00:16:51 verbose #17569 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:51 verbose #17570 > > nominal tbody =
00:16:51 verbose #17571 > >     `(
00:16:51 verbose #17572 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:51 verbose #17573 > > Fable.Core.Emit(\"leptos::html::Tbody\")>]]\n#endif\ntype leptos_html_Tbody =
00:16:51 verbose #17574 > > class end"
00:16:51 verbose #17575 > >         $'' : $'leptos_html_Tbody'
00:16:51 verbose #17576 > >     )
00:16:51 verbose #17577 > >
00:16:51 verbose #17578 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:51 verbose #17579 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:51 verbose #17580 > > │ ### tr                                                                       │
00:16:51 verbose #17581 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:51 verbose #17582 > >
00:16:51 verbose #17583 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:51 verbose #17584 > > nominal tr =
00:16:51 verbose #17585 > >     `(
00:16:51 verbose #17586 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:51 verbose #17587 > > Fable.Core.Emit(\"leptos::html::Tr\")>]]\n#endif\ntype leptos_html_Tr = class
00:16:51 verbose #17588 > > end"
00:16:51 verbose #17589 > >         $'' : $'leptos_html_Tr'
00:16:51 verbose #17590 > >     )
00:16:51 verbose #17591 > >
00:16:51 verbose #17592 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:51 verbose #17593 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:51 verbose #17594 > > │ ### th                                                                       │
00:16:51 verbose #17595 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:51 verbose #17596 > >
00:16:51 verbose #17597 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:51 verbose #17598 > > nominal th =
00:16:51 verbose #17599 > >     `(
00:16:51 verbose #17600 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:51 verbose #17601 > > Fable.Core.Emit(\"leptos::html::Th\")>]]\n#endif\ntype leptos_html_Th = class
00:16:51 verbose #17602 > > end"
00:16:51 verbose #17603 > >         $'' : $'leptos_html_Th'
00:16:51 verbose #17604 > >     )
00:16:52 verbose #17605 > >
00:16:52 verbose #17606 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:52 verbose #17607 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:52 verbose #17608 > > │ ### td                                                                       │
00:16:52 verbose #17609 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:52 verbose #17610 > >
00:16:52 verbose #17611 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:52 verbose #17612 > > nominal td =
00:16:52 verbose #17613 > >     `(
00:16:52 verbose #17614 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:52 verbose #17615 > > Fable.Core.Emit(\"leptos::html::Td\")>]]\n#endif\ntype leptos_html_Td = class
00:16:52 verbose #17616 > > end"
00:16:52 verbose #17617 > >         $'' : $'leptos_html_Td'
00:16:52 verbose #17618 > >     )
00:16:52 verbose #17619 > >
00:16:52 verbose #17620 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:52 verbose #17621 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:52 verbose #17622 > > │ ### svg                                                                      │
00:16:52 verbose #17623 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:52 verbose #17624 > >
00:16:52 verbose #17625 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:52 verbose #17626 > > nominal svg =
00:16:52 verbose #17627 > >     `(
00:16:52 verbose #17628 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:52 verbose #17629 > > Fable.Core.Emit(\"leptos::svg::Svg\")>]]\n#endif\ntype leptos_svg_Svg = class
00:16:52 verbose #17630 > > end"
00:16:52 verbose #17631 > >         $'' : $'leptos_svg_Svg'
00:16:52 verbose #17632 > >     )
00:16:52 verbose #17633 > >
00:16:52 verbose #17634 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:52 verbose #17635 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:52 verbose #17636 > > │ ### path                                                                     │
00:16:52 verbose #17637 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:52 verbose #17638 > >
00:16:52 verbose #17639 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:52 verbose #17640 > > nominal path =
00:16:52 verbose #17641 > >     `(
00:16:52 verbose #17642 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:52 verbose #17643 > > Fable.Core.Emit(\"leptos::svg::Path\")>]]\n#endif\ntype leptos_svg_Path = class
00:16:52 verbose #17644 > > end"
00:16:52 verbose #17645 > >         $'' : $'leptos_svg_Path'
00:16:52 verbose #17646 > >     )
00:16:52 verbose #17647 > >
00:16:52 verbose #17648 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:52 verbose #17649 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:52 verbose #17650 > > │ ### circle                                                                   │
00:16:52 verbose #17651 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:52 verbose #17652 > >
00:16:52 verbose #17653 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:52 verbose #17654 > > nominal circle =
00:16:52 verbose #17655 > >     `(
00:16:52 verbose #17656 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:52 verbose #17657 > > Fable.Core.Emit(\"leptos::svg::Circle\")>]]\n#endif\ntype leptos_svg_Circle =
00:16:52 verbose #17658 > > class end"
00:16:52 verbose #17659 > >         $'' : $'leptos_svg_Circle'
00:16:52 verbose #17660 > >     )
00:16:52 verbose #17661 > >
00:16:52 verbose #17662 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:52 verbose #17663 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:52 verbose #17664 > > │ ### rect                                                                     │
00:16:52 verbose #17665 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:52 verbose #17666 > >
00:16:52 verbose #17667 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:52 verbose #17668 > > nominal rect =
00:16:52 verbose #17669 > >     `(
00:16:52 verbose #17670 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:52 verbose #17671 > > Fable.Core.Emit(\"leptos::svg::Rect\")>]]\n#endif\ntype leptos_svg_Rect = class
00:16:52 verbose #17672 > > end"
00:16:52 verbose #17673 > >         $'' : $'leptos_svg_Rect'
00:16:52 verbose #17674 > >     )
00:16:52 verbose #17675 > >
00:16:52 verbose #17676 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:52 verbose #17677 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:52 verbose #17678 > > │ ### animate                                                                  │
00:16:52 verbose #17679 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:52 verbose #17680 > >
00:16:52 verbose #17681 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:52 verbose #17682 > > nominal animate =
00:16:52 verbose #17683 > >     `(
00:16:52 verbose #17684 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:52 verbose #17685 > > Fable.Core.Emit(\"leptos::svg::Animate\")>]]\n#endif\ntype leptos_svg_Animate =
00:16:52 verbose #17686 > > class end"
00:16:52 verbose #17687 > >         $'' : $'leptos_svg_Animate'
00:16:52 verbose #17688 > >     )
00:16:52 verbose #17689 > >
00:16:52 verbose #17690 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:52 verbose #17691 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:52 verbose #17692 > > │ ### action                                                                   │
00:16:52 verbose #17693 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:52 verbose #17694 > >
00:16:52 verbose #17695 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:52 verbose #17696 > > nominal action t u =
00:16:52 verbose #17697 > >     `(
00:16:52 verbose #17698 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:52 verbose #17699 > > Fable.Core.Emit(\"leptos::Action<$0, $1>\")>]]\n#endif\ntype leptos_Action<'T,
00:16:52 verbose #17700 > > 'U> = class end"
00:16:52 verbose #17701 > >         $'' : $'leptos_Action<`t, `u>'
00:16:52 verbose #17702 > >     )
00:16:52 verbose #17703 > >
00:16:52 verbose #17704 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:52 verbose #17705 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:52 verbose #17706 > > │ ### for                                                                      │
00:16:52 verbose #17707 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:52 verbose #17708 > >
00:16:52 verbose #17709 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:52 verbose #17710 > > nominal for =
00:16:52 verbose #17711 > >     `(
00:16:52 verbose #17712 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:52 verbose #17713 > > Fable.Core.Emit(\"leptos::For\")>]]\n#endif\ntype leptos_For = class end"
00:16:52 verbose #17714 > >         $'' : $'leptos_For'
00:16:52 verbose #17715 > >     )
00:16:52 verbose #17716 > >
00:16:52 verbose #17717 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:52 verbose #17718 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:52 verbose #17719 > > │ ### show                                                                     │
00:16:52 verbose #17720 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:52 verbose #17721 > >
00:16:52 verbose #17722 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:52 verbose #17723 > > nominal show =
00:16:52 verbose #17724 > >     `(
00:16:52 verbose #17725 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:52 verbose #17726 > > Fable.Core.Emit(\"leptos::Show\")>]]\n#endif\ntype leptos_Show = class end"
00:16:52 verbose #17727 > >         $'' : $'leptos_Show'
00:16:52 verbose #17728 > >     )
00:16:52 verbose #17729 > >
00:16:52 verbose #17730 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:52 verbose #17731 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:52 verbose #17732 > > │ ### fragment                                                                 │
00:16:52 verbose #17733 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:52 verbose #17734 > >
00:16:52 verbose #17735 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:52 verbose #17736 > > nominal fragment =
00:16:52 verbose #17737 > >     `(
00:16:52 verbose #17738 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:52 verbose #17739 > > Fable.Core.Emit(\"leptos::Fragment\")>]]\n#endif\ntype leptos_Fragment = class
00:16:52 verbose #17740 > > end"
00:16:52 verbose #17741 > >         $'' : $'leptos_Fragment'
00:16:52 verbose #17742 > >     )
00:16:52 verbose #17743 > >
00:16:52 verbose #17744 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:52 verbose #17745 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:52 verbose #17746 > > │ ### interval_handle                                                          │
00:16:52 verbose #17747 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:52 verbose #17748 > >
00:16:52 verbose #17749 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:52 verbose #17750 > > nominal interval_handle =
00:16:52 verbose #17751 > >     `(
00:16:52 verbose #17752 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:52 verbose #17753 > > Fable.Core.Emit(\"leptos::leptos_dom::helpers::IntervalHandle\")>]]\n#endif\ntyp
00:16:52 verbose #17754 > > e leptos_dom_IntervalHandle = class end"
00:16:52 verbose #17755 > >         $'' : $'leptos_dom_IntervalHandle'
00:16:52 verbose #17756 > >     )
00:16:53 verbose #17757 > >
00:16:53 verbose #17758 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:53 verbose #17759 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:53 verbose #17760 > > │ ### text                                                                     │
00:16:53 verbose #17761 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:53 verbose #17762 > >
00:16:53 verbose #17763 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:53 verbose #17764 > > nominal text =
00:16:53 verbose #17765 > >     `(
00:16:53 verbose #17766 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:53 verbose #17767 > > Fable.Core.Emit(\"leptos::leptos_dom::Text\")>]]\n#endif\ntype leptos_dom_Text =
00:16:53 verbose #17768 > > class end"
00:16:53 verbose #17769 > >         $'' : $'leptos_dom_Text'
00:16:53 verbose #17770 > >     )
00:16:53 verbose #17771 > >
00:16:53 verbose #17772 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:53 verbose #17773 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:53 verbose #17774 > > │ ### transparent                                                              │
00:16:53 verbose #17775 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:53 verbose #17776 > >
00:16:53 verbose #17777 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:53 verbose #17778 > > nominal transparent =
00:16:53 verbose #17779 > >     `(
00:16:53 verbose #17780 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:53 verbose #17781 > > Fable.Core.Emit(\"leptos::leptos_dom::Transparent\")>]]\n#endif\ntype
00:16:53 verbose #17782 > > leptos_dom_Transparent = class end"
00:16:53 verbose #17783 > >         $'' : $'leptos_dom_Transparent'
00:16:53 verbose #17784 > >     )
00:16:53 verbose #17785 > >
00:16:53 verbose #17786 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:53 verbose #17787 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:53 verbose #17788 > > │ ### route                                                                    │
00:16:53 verbose #17789 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:53 verbose #17790 > >
00:16:53 verbose #17791 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:53 verbose #17792 > > nominal route =
00:16:53 verbose #17793 > >     `(
00:16:53 verbose #17794 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:53 verbose #17795 > > Fable.Core.Emit(\"leptos_router::Route\")>]]\n#endif\ntype leptos_router_Route =
00:16:53 verbose #17796 > > class end"
00:16:53 verbose #17797 > >         $'' : $'leptos_router_Route'
00:16:53 verbose #17798 > >     )
00:16:53 verbose #17799 > >
00:16:53 verbose #17800 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:53 verbose #17801 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:53 verbose #17802 > > │ ### route_definition                                                         │
00:16:53 verbose #17803 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:53 verbose #17804 > >
00:16:53 verbose #17805 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:53 verbose #17806 > > nominal route_definition =
00:16:53 verbose #17807 > >     `(
00:16:53 verbose #17808 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:53 verbose #17809 > > Fable.Core.Emit(\"leptos_router::RouteDefinition\")>]]\n#endif\ntype
00:16:53 verbose #17810 > > leptos_router_RouteDefinition = class end"
00:16:53 verbose #17811 > >         $'' : $'leptos_router_RouteDefinition'
00:16:53 verbose #17812 > >     )
00:16:53 verbose #17813 > >
00:16:53 verbose #17814 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:53 verbose #17815 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:53 verbose #17816 > > │ ### router                                                                   │
00:16:53 verbose #17817 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:53 verbose #17818 > >
00:16:53 verbose #17819 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:53 verbose #17820 > > nominal router =
00:16:53 verbose #17821 > >     `(
00:16:53 verbose #17822 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:53 verbose #17823 > > Fable.Core.Emit(\"leptos_router::Router\")>]]\n#endif\ntype leptos_router_Router
00:16:53 verbose #17824 > > = class end"
00:16:53 verbose #17825 > >         $'' : $'leptos_router_Router'
00:16:53 verbose #17826 > >     )
00:16:53 verbose #17827 > >
00:16:53 verbose #17828 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:53 verbose #17829 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:53 verbose #17830 > > │ ### routes                                                                   │
00:16:53 verbose #17831 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:53 verbose #17832 > >
00:16:53 verbose #17833 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:53 verbose #17834 > > nominal routes =
00:16:53 verbose #17835 > >     `(
00:16:53 verbose #17836 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:53 verbose #17837 > > Fable.Core.Emit(\"leptos_router::Routes\")>]]\n#endif\ntype leptos_router_Routes
00:16:53 verbose #17838 > > = class end"
00:16:53 verbose #17839 > >         $'' : $'leptos_router_Routes'
00:16:53 verbose #17840 > >     )
00:16:53 verbose #17841 > >
00:16:53 verbose #17842 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:53 verbose #17843 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:53 verbose #17844 > > │ ### html_element                                                             │
00:16:53 verbose #17845 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:53 verbose #17846 > >
00:16:53 verbose #17847 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:53 verbose #17848 > > nominal html_element t =
00:16:53 verbose #17849 > >     `(
00:16:53 verbose #17850 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:53 verbose #17851 > > Fable.Core.Emit(\"leptos::HtmlElement<$0>\")>]]\n#endif\ntype
00:16:53 verbose #17852 > > leptos_HtmlElement<'T> = class end"
00:16:53 verbose #17853 > >         $'' : $'leptos_HtmlElement<`t>'
00:16:53 verbose #17854 > >     )
00:16:53 verbose #17855 > >
00:16:53 verbose #17856 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:53 verbose #17857 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:53 verbose #17858 > > │ ### into_view                                                                │
00:16:53 verbose #17859 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:53 verbose #17860 > >
00:16:53 verbose #17861 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:53 verbose #17862 > > nominal into_view =
00:16:53 verbose #17863 > >     `(
00:16:53 verbose #17864 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:53 verbose #17865 > > Fable.Core.Emit(\"leptos::IntoView\")>]]\n#endif\ntype leptos_IntoView = class
00:16:53 verbose #17866 > > end"
00:16:53 verbose #17867 > >         $'' : $'leptos_IntoView'
00:16:53 verbose #17868 > >     )
00:16:53 verbose #17869 > >
00:16:53 verbose #17870 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:53 verbose #17871 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:53 verbose #17872 > > │ ### location                                                                 │
00:16:53 verbose #17873 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:53 verbose #17874 > >
00:16:53 verbose #17875 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:53 verbose #17876 > > nominal location =
00:16:53 verbose #17877 > >     `(
00:16:53 verbose #17878 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:53 verbose #17879 > > Fable.Core.Emit(\"leptos_router::Location\")>]]\n#endif\ntype
00:16:53 verbose #17880 > > leptos_router_Location = class end"
00:16:53 verbose #17881 > >         $'' : $'leptos_router_Location'
00:16:53 verbose #17882 > >     )
00:16:53 verbose #17883 > >
00:16:53 verbose #17884 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:53 verbose #17885 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:53 verbose #17886 > > │ ### navigate_options                                                         │
00:16:53 verbose #17887 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:53 verbose #17888 > >
00:16:53 verbose #17889 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:53 verbose #17890 > > nominal navigate_options =
00:16:53 verbose #17891 > >     `(
00:16:53 verbose #17892 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:53 verbose #17893 > > Fable.Core.Emit(\"leptos_router::NavigateOptions\")>]]\n#endif\ntype
00:16:53 verbose #17894 > > leptos_router_NavigateOptions = class end"
00:16:53 verbose #17895 > >         $'' : $'leptos_router_NavigateOptions'
00:16:53 verbose #17896 > >     )
00:16:53 verbose #17897 > >
00:16:53 verbose #17898 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:53 verbose #17899 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:53 verbose #17900 > > │ ### url                                                                      │
00:16:53 verbose #17901 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:53 verbose #17902 > >
00:16:53 verbose #17903 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:53 verbose #17904 > > nominal url =
00:16:53 verbose #17905 > >     `(
00:16:53 verbose #17906 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:53 verbose #17907 > > Fable.Core.Emit(\"leptos_router::Url\")>]]\n#endif\ntype leptos_router_Url =
00:16:53 verbose #17908 > > class end"
00:16:53 verbose #17909 > >         $'' : $'leptos_router_Url'
00:16:53 verbose #17910 > >     )
00:16:54 verbose #17911 > >
00:16:54 verbose #17912 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:54 verbose #17913 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:54 verbose #17914 > > │ ### memo                                                                     │
00:16:54 verbose #17915 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:54 verbose #17916 > >
00:16:54 verbose #17917 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:54 verbose #17918 > > nominal memo t =
00:16:54 verbose #17919 > >     `(
00:16:54 verbose #17920 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:54 verbose #17921 > > Fable.Core.Emit(\"leptos::Memo<$0>\")>]]\n#endif\ntype leptos_Memo<'T> = class
00:16:54 verbose #17922 > > end"
00:16:54 verbose #17923 > >         $'' : $'leptos_Memo<`t>'
00:16:54 verbose #17924 > >     )
00:16:54 verbose #17925 > >
00:16:54 verbose #17926 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:54 verbose #17927 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:54 verbose #17928 > > │ ### rw_signal                                                                │
00:16:54 verbose #17929 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:54 verbose #17930 > >
00:16:54 verbose #17931 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:54 verbose #17932 > > nominal rw_signal t =
00:16:54 verbose #17933 > >     `(
00:16:54 verbose #17934 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:54 verbose #17935 > > Fable.Core.Emit(\"leptos::RwSignal<$0>\")>]]\n#endif\ntype leptos_RwSignal<'T> =
00:16:54 verbose #17936 > > class end"
00:16:54 verbose #17937 > >         $'' : $'leptos_RwSignal<`t>'
00:16:54 verbose #17938 > >     )
00:16:54 verbose #17939 > >
00:16:54 verbose #17940 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:54 verbose #17941 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:54 verbose #17942 > > │ ### signal                                                                   │
00:16:54 verbose #17943 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:54 verbose #17944 > >
00:16:54 verbose #17945 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:54 verbose #17946 > > nominal signal t =
00:16:54 verbose #17947 > >     `(
00:16:54 verbose #17948 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:54 verbose #17949 > > Fable.Core.Emit(\"leptos::Signal<$0>\")>]]\n#endif\ntype leptos_Signal<'T> =
00:16:54 verbose #17950 > > class end"
00:16:54 verbose #17951 > >         $'' : $'leptos_Signal<`t>'
00:16:54 verbose #17952 > >     )
00:16:54 verbose #17953 > >
00:16:54 verbose #17954 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:54 verbose #17955 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:54 verbose #17956 > > │ ### read_signal                                                              │
00:16:54 verbose #17957 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:54 verbose #17958 > >
00:16:54 verbose #17959 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:54 verbose #17960 > > nominal read_signal t =
00:16:54 verbose #17961 > >     `(
00:16:54 verbose #17962 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:54 verbose #17963 > > Fable.Core.Emit(\"leptos::ReadSignal<$0>\")>]]\n#endif\ntype
00:16:54 verbose #17964 > > leptos_ReadSignal<'T> = class end"
00:16:54 verbose #17965 > >         $'' : $'leptos_ReadSignal<`t>'
00:16:54 verbose #17966 > >     )
00:16:54 verbose #17967 > >
00:16:54 verbose #17968 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:54 verbose #17969 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:54 verbose #17970 > > │ ### write_signal                                                             │
00:16:54 verbose #17971 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:54 verbose #17972 > >
00:16:54 verbose #17973 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:54 verbose #17974 > > nominal write_signal t =
00:16:54 verbose #17975 > >     `(
00:16:54 verbose #17976 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:54 verbose #17977 > > Fable.Core.Emit(\"leptos::WriteSignal<$0>\")>]]\n#endif\ntype
00:16:54 verbose #17978 > > leptos_WriteSignal<'T> = class end"
00:16:54 verbose #17979 > >         $'' : $'leptos_WriteSignal<`t>'
00:16:54 verbose #17980 > >     )
00:16:54 verbose #17981 > >
00:16:54 verbose #17982 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:54 verbose #17983 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:54 verbose #17984 > > │ ### resource                                                                 │
00:16:54 verbose #17985 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:54 verbose #17986 > >
00:16:54 verbose #17987 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:54 verbose #17988 > > nominal resource t u =
00:16:54 verbose #17989 > >     `(
00:16:54 verbose #17990 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:54 verbose #17991 > > Fable.Core.Emit(\"leptos::Resource<$0, $1>\")>]]\n#endif\ntype
00:16:54 verbose #17992 > > leptos_Resource<'T, 'U> = class end"
00:16:54 verbose #17993 > >         $'' : $'leptos_Resource<`t, `u>'
00:16:54 verbose #17994 > >     )
00:16:54 verbose #17995 > >
00:16:54 verbose #17996 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:54 verbose #17997 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:54 verbose #17998 > > │ ### view                                                                     │
00:16:54 verbose #17999 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:54 verbose #18000 > >
00:16:54 verbose #18001 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:54 verbose #18002 > > nominal view =
00:16:54 verbose #18003 > >     `(
00:16:54 verbose #18004 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:16:54 verbose #18005 > > Fable.Core.Emit(\"leptos::View\")>]]\n#endif\ntype leptos_View = class end"
00:16:54 verbose #18006 > >         $'' : $'leptos_View'
00:16:54 verbose #18007 > >     )
00:16:54 verbose #18008 > >
00:16:54 verbose #18009 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:54 verbose #18010 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:54 verbose #18011 > > │ ### signal_get                                                               │
00:16:54 verbose #18012 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:54 verbose #18013 > >
00:16:54 verbose #18014 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:54 verbose #18015 > > prototype signal_get signal t : signal t -> t
00:16:54 verbose #18016 > >
00:16:54 verbose #18017 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:54 verbose #18018 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:54 verbose #18019 > > │ ### signal_get_untracked                                                     │
00:16:54 verbose #18020 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:54 verbose #18021 > >
00:16:54 verbose #18022 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:54 verbose #18023 > > prototype signal_get_untracked signal t : signal t -> t
00:16:54 verbose #18024 > >
00:16:54 verbose #18025 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:54 verbose #18026 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:54 verbose #18027 > > │ ### signal_update                                                            │
00:16:54 verbose #18028 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:54 verbose #18029 > >
00:16:54 verbose #18030 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:54 verbose #18031 > > prototype signal_update signal t : (t -> t) -> signal t -> ()
00:16:54 verbose #18032 > >
00:16:54 verbose #18033 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:54 verbose #18034 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:54 verbose #18035 > > │ ### signal_set                                                               │
00:16:54 verbose #18036 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:54 verbose #18037 > >
00:16:54 verbose #18038 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:54 verbose #18039 > > prototype signal_set signal t : t -> signal t -> ()
00:16:54 verbose #18040 > >
00:16:54 verbose #18041 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:54 verbose #18042 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:54 verbose #18043 > > │ ### log_string                                                               │
00:16:54 verbose #18044 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:54 verbose #18045 > >
00:16:54 verbose #18046 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:54 verbose #18047 > > inl log_string (text : string) =
00:16:54 verbose #18048 > >     (!\($'@@"true; leptos::logging::log\!(""" + !text + @@""");"') : bool) |>
00:16:54 verbose #18049 > > ignore
00:16:55 verbose #18050 > >
00:16:55 verbose #18051 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:55 verbose #18052 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:55 verbose #18053 > > │ ### log                                                                      │
00:16:55 verbose #18054 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:55 verbose #18055 > >
00:16:55 verbose #18056 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:55 verbose #18057 > > inl log (text : string) =
00:16:55 verbose #18058 > >     (!\\(text, $'@@$"true; leptos::logging::log\!(""{{}}"", $0)"') : bool) |>
00:16:55 verbose #18059 > > ignore
00:16:55 verbose #18060 > >
00:16:55 verbose #18061 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:55 verbose #18062 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:55 verbose #18063 > > │ ### log_debug                                                                │
00:16:55 verbose #18064 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:55 verbose #18065 > >
00:16:55 verbose #18066 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:55 verbose #18067 > > inl log_debug (text : string) =
00:16:55 verbose #18068 > >     (!\\(text, $'@@$"true; leptos::logging::log\!(""{{:?}}"", $0)"') : bool) |>
00:16:55 verbose #18069 > > ignore
00:16:55 verbose #18070 > >
00:16:55 verbose #18071 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:55 verbose #18072 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:55 verbose #18073 > > │ ### log_pretty                                                               │
00:16:55 verbose #18074 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:55 verbose #18075 > >
00:16:55 verbose #18076 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:55 verbose #18077 > > inl log_pretty (text : string) =
00:16:55 verbose #18078 > >     (!\\(text, $'@@$"true; leptos::logging::log\!(""{{:#?}}"", $0)"') : bool) |>
00:16:55 verbose #18079 > > ignore
00:16:55 verbose #18080 > >
00:16:55 verbose #18081 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:55 verbose #18082 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:55 verbose #18083 > > │ ### log_format                                                               │
00:16:55 verbose #18084 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:55 verbose #18085 > >
00:16:55 verbose #18086 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:55 verbose #18087 > > inl log_format fn obj =
00:16:55 verbose #18088 > >     inl obj_log = obj |> sm'.format_debug
00:16:55 verbose #18089 > >     inl text = fn obj_log |> sm'.ellipsis_end 200
00:16:55 verbose #18090 > >     log text
00:16:55 verbose #18091 > >     obj
00:16:55 verbose #18092 > >
00:16:55 verbose #18093 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:55 verbose #18094 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:55 verbose #18095 > > │ ### mount_to_body                                                            │
00:16:55 verbose #18096 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:55 verbose #18097 > >
00:16:55 verbose #18098 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:55 verbose #18099 > > inl mount_to_body (view_fn : () -> rust.impl into_view) : () =
00:16:55 verbose #18100 > >     (!\\(view_fn, $'"true; leptos::mount_to_body(|| $0());"') : bool) |> ignore
00:16:55 verbose #18101 > >
00:16:55 verbose #18102 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:55 verbose #18103 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:55 verbose #18104 > > │ ### view_vec_to_fragment                                                     │
00:16:55 verbose #18105 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:55 verbose #18106 > >
00:16:55 verbose #18107 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:55 verbose #18108 > > inl view_vec_to_fragment (view : am'.vec view) : fragment =
00:16:55 verbose #18109 > >     !\\(view, $'"leptos::Fragment::new($0)"')
00:16:55 verbose #18110 > >
00:16:55 verbose #18111 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:55 verbose #18112 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:55 verbose #18113 > > │ ### view_array_to_fragment                                                   │
00:16:55 verbose #18114 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:55 verbose #18115 > >
00:16:55 verbose #18116 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:55 verbose #18117 > > inl view_array_to_fragment (view : array_base view) : fragment =
00:16:55 verbose #18118 > >     view |> am'.to_vec |> view_vec_to_fragment
00:16:55 verbose #18119 > >
00:16:55 verbose #18120 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:55 verbose #18121 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:55 verbose #18122 > > │ ### element_to_view                                                          │
00:16:55 verbose #18123 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:55 verbose #18124 > >
00:16:55 verbose #18125 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:55 verbose #18126 > > inl element_to_view (view : html_element _) : view =
00:16:55 verbose #18127 > >     !\\(view, $'"leptos::IntoView::into_view($0)"')
00:16:55 verbose #18128 > >
00:16:55 verbose #18129 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:55 verbose #18130 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:55 verbose #18131 > > │ ### view_to_fragment                                                         │
00:16:55 verbose #18132 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:55 verbose #18133 > >
00:16:55 verbose #18134 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:55 verbose #18135 > > inl view_to_fragment (view : view) : fragment =
00:16:55 verbose #18136 > >     ;[[view]] |> view_array_to_fragment
00:16:55 verbose #18137 > >
00:16:55 verbose #18138 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:55 verbose #18139 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:55 verbose #18140 > > │ ### fragment_to_view                                                         │
00:16:55 verbose #18141 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:55 verbose #18142 > >
00:16:55 verbose #18143 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:55 verbose #18144 > > inl fragment_to_view (fragment : fragment) : view =
00:16:55 verbose #18145 > >     !\\(fragment, $'"leptos::IntoView::into_view($0)"')
00:16:55 verbose #18146 > >
00:16:55 verbose #18147 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:55 verbose #18148 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:55 verbose #18149 > > │ ### element_to_fragment                                                      │
00:16:55 verbose #18150 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:55 verbose #18151 > >
00:16:55 verbose #18152 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:55 verbose #18153 > > inl element_to_fragment (view : html_element _) : fragment =
00:16:55 verbose #18154 > >     view
00:16:55 verbose #18155 > >     |> element_to_view
00:16:55 verbose #18156 > >     |> view_to_fragment
00:16:56 verbose #18157 > >
00:16:56 verbose #18158 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:56 verbose #18159 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:56 verbose #18160 > > │ ### (~:>) fragment                                                           │
00:16:56 verbose #18161 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:56 verbose #18162 > >
00:16:56 verbose #18163 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:56 verbose #18164 > > instance (~:>) fragment = fun x =>
00:16:56 verbose #18165 > >     real
00:16:56 verbose #18166 > >         typecase t with
00:16:56 verbose #18167 > >         | array_base (html_element ~el) =>
00:16:56 verbose #18168 > >             inl x = am'.to_vec `(html_element el) x
00:16:56 verbose #18169 > >             inl x = am'.vec_map' `(html_element el) `view (element_to_view `el)
00:16:56 verbose #18170 > > x
00:16:56 verbose #18171 > >             inl x : a i32 view = am'.from_vec `i32 `view x
00:16:56 verbose #18172 > >             inl (a x) = x
00:16:56 verbose #18173 > >             view_array_to_fragment x
00:16:56 verbose #18174 > >         | array_base view => view_array_to_fragment x
00:16:56 verbose #18175 > >         | _ => x
00:16:56 verbose #18176 > >
00:16:56 verbose #18177 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:56 verbose #18178 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:56 verbose #18179 > > │ ### (~:>) view                                                               │
00:16:56 verbose #18180 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:56 verbose #18181 > >
00:16:56 verbose #18182 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:56 verbose #18183 > > instance (~:>) view = fun x =>
00:16:56 verbose #18184 > >     real
00:16:56 verbose #18185 > >         typecase t with
00:16:56 verbose #18186 > >         | html_element _ => element_to_view x
00:16:56 verbose #18187 > >         | _ => x
00:16:56 verbose #18188 > >
00:16:56 verbose #18189 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:56 verbose #18190 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:56 verbose #18191 > > │ ### view_trait_to_element                                                    │
00:16:56 verbose #18192 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:56 verbose #18193 > >
00:16:56 verbose #18194 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:56 verbose #18195 > > inl view_trait_to_element (view : rust.impl into_view) : html_element _ =
00:16:56 verbose #18196 > >     $'!view |> unbox'
00:16:56 verbose #18197 > >
00:16:56 verbose #18198 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:56 verbose #18199 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:56 verbose #18200 > > │ ### view_trait_to_route_definition                                           │
00:16:56 verbose #18201 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:56 verbose #18202 > >
00:16:56 verbose #18203 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:56 verbose #18204 > > inl view_trait_to_route_definition (view : rust.impl into_view) :
00:16:56 verbose #18205 > > route_definition =
00:16:56 verbose #18206 > >     $'!view |> unbox'
00:16:56 verbose #18207 > >
00:16:56 verbose #18208 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:56 verbose #18209 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:56 verbose #18210 > > │ ### to_element_view                                                          │
00:16:56 verbose #18211 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:56 verbose #18212 > >
00:16:56 verbose #18213 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:56 verbose #18214 > > inl to_element_view (view : html_element _) : rust.impl into_view =
00:16:56 verbose #18215 > >     $'!view |> unbox'
00:16:57 verbose #18216 > >
00:16:57 verbose #18217 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:57 verbose #18218 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:57 verbose #18219 > > │ ### to_view_trait                                                            │
00:16:57 verbose #18220 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:57 verbose #18221 > >
00:16:57 verbose #18222 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:57 verbose #18223 > > inl to_view_trait (view : view) : rust.impl into_view =
00:16:57 verbose #18224 > >     $'!view |> unbox'
00:16:57 verbose #18225 > >
00:16:57 verbose #18226 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:57 verbose #18227 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:57 verbose #18228 > > │ ### to_fragment_unbox                                                        │
00:16:57 verbose #18229 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:57 verbose #18230 > >
00:16:57 verbose #18231 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:57 verbose #18232 > > inl to_fragment_unbox view : fragment =
00:16:57 verbose #18233 > >     $'!view |> unbox'
00:16:57 verbose #18234 > >
00:16:57 verbose #18235 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:57 verbose #18236 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:57 verbose #18237 > > │ ### from_fragment_unbox                                                      │
00:16:57 verbose #18238 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:57 verbose #18239 > >
00:16:57 verbose #18240 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:57 verbose #18241 > > inl from_fragment_unbox (fragment : fragment) =
00:16:57 verbose #18242 > >     $'!fragment |> unbox'
00:16:57 verbose #18243 > >
00:16:57 verbose #18244 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:57 verbose #18245 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:57 verbose #18246 > > │ ### element_to_view_trait                                                    │
00:16:57 verbose #18247 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:57 verbose #18248 > >
00:16:57 verbose #18249 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:57 verbose #18250 > > inl element_to_view_trait (macro : html_element _) : rust.impl into_view =
00:16:57 verbose #18251 > >     !\($'"leptos::view\! { {!macro} }"')
00:16:57 verbose #18252 > >
00:16:57 verbose #18253 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:57 verbose #18254 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:57 verbose #18255 > > │ ### macro_to_view_trait                                                      │
00:16:57 verbose #18256 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:57 verbose #18257 > >
00:16:57 verbose #18258 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:57 verbose #18259 > > inl macro_to_view_trait (macro : string) : rust.impl into_view =
00:16:57 verbose #18260 > >     !\($'"leptos::view\! { " + !macro + " }"')
00:16:57 verbose #18261 > >
00:16:57 verbose #18262 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:57 verbose #18263 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:57 verbose #18264 > > │ ### macro_to_fragment                                                        │
00:16:57 verbose #18265 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:57 verbose #18266 > >
00:16:57 verbose #18267 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:57 verbose #18268 > > inl macro_to_fragment (macro : string) : fragment =
00:16:57 verbose #18269 > >     !\($'"leptos::view\! { " + !macro + " }"')
00:16:57 verbose #18270 > >
00:16:57 verbose #18271 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:57 verbose #18272 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:57 verbose #18273 > > │ ### new_transparent                                                          │
00:16:57 verbose #18274 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:57 verbose #18275 > >
00:16:57 verbose #18276 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:57 verbose #18277 > > inl new_transparent x : transparent =
00:16:57 verbose #18278 > >     !\\(x, $'"leptos::leptos_dom::Transparent::new($0)"')
00:16:57 verbose #18279 > >
00:16:57 verbose #18280 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:57 verbose #18281 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:57 verbose #18282 > > │ ### closure_to_view                                                          │
00:16:57 verbose #18283 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:57 verbose #18284 > >
00:16:57 verbose #18285 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:57 verbose #18286 > > inl closure_to_view (closure : rust.func0 view) : view =
00:16:57 verbose #18287 > >     !\\(closure, $'"leptos::IntoView::into_view(move || $0())"')
00:16:57 verbose #18288 > >
00:16:57 verbose #18289 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:57 verbose #18290 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:57 verbose #18291 > > │ ### batch                                                                    │
00:16:57 verbose #18292 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:57 verbose #18293 > >
00:16:57 verbose #18294 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:57 verbose #18295 > > inl batch (fn : () -> ()) : () =
00:16:57 verbose #18296 > >     (!\\(fn, $'"true; leptos::batch(move || $0());"') : bool) |> ignore
00:16:57 verbose #18297 > >
00:16:57 verbose #18298 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:57 verbose #18299 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:57 verbose #18300 > > │ ### closure_to_fragment                                                      │
00:16:57 verbose #18301 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:57 verbose #18302 > >
00:16:57 verbose #18303 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:57 verbose #18304 > > inl closure_to_fragment (closure : rust.func0 fragment) : fragment =
00:16:57 verbose #18305 > >     !\\(closure, $'"leptos::IntoView::into_view(move || $0())"')
00:16:57 verbose #18306 > >     |> view_to_fragment
00:16:58 verbose #18307 > >
00:16:58 verbose #18308 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:58 verbose #18309 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:58 verbose #18310 > > │ ### array_to_view                                                            │
00:16:58 verbose #18311 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:58 verbose #18312 > >
00:16:58 verbose #18313 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:58 verbose #18314 > > inl array_to_view (view : a _ view) : view =
00:16:58 verbose #18315 > >     !\\(view, $'"leptos::CollectView::collect_view($0.to_vec())"')
00:16:58 verbose #18316 > >
00:16:58 verbose #18317 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:58 verbose #18318 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:58 verbose #18319 > > │ ### to_fragment                                                              │
00:16:58 verbose #18320 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:58 verbose #18321 > >
00:16:58 verbose #18322 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:58 verbose #18323 > > inl to_fragment x : fragment =
00:16:58 verbose #18324 > >     $'!x |> unbox'
00:16:58 verbose #18325 > >
00:16:58 verbose #18326 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:58 verbose #18327 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:58 verbose #18328 > > │ ### text_to_view                                                             │
00:16:58 verbose #18329 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:58 verbose #18330 > >
00:16:58 verbose #18331 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:58 verbose #18332 > > inl text_to_view (text : text) : view =
00:16:58 verbose #18333 > >     !\\(text, $'"leptos::IntoView::into_view($0)"')
00:16:58 verbose #18334 > >
00:16:58 verbose #18335 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:58 verbose #18336 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:58 verbose #18337 > > │ ### text_to_fragment                                                         │
00:16:58 verbose #18338 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:58 verbose #18339 > >
00:16:58 verbose #18340 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:58 verbose #18341 > > inl text_to_fragment (text : text) : fragment =
00:16:58 verbose #18342 > >     text
00:16:58 verbose #18343 > >     |> text_to_view
00:16:58 verbose #18344 > >     |> view_to_fragment
00:16:58 verbose #18345 > >
00:16:58 verbose #18346 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:58 verbose #18347 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:58 verbose #18348 > > │ ### macro_to_view                                                            │
00:16:58 verbose #18349 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:58 verbose #18350 > >
00:16:58 verbose #18351 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:58 verbose #18352 > > inl macro_to_view (macro : string) : view =
00:16:58 verbose #18353 > >     !\($'"leptos::IntoView::into_view(leptos::view\! { " + !macro + " })"')
00:16:58 verbose #18354 > >
00:16:58 verbose #18355 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:58 verbose #18356 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:58 verbose #18357 > > │ ### transparent_to_view                                                      │
00:16:58 verbose #18358 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:58 verbose #18359 > >
00:16:58 verbose #18360 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:58 verbose #18361 > > inl transparent_to_view (transparent : transparent) : view =
00:16:58 verbose #18362 > >     !\\(transparent, $'"leptos::IntoView::into_view($0)"')
00:16:58 verbose #18363 > >
00:16:58 verbose #18364 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:58 verbose #18365 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:58 verbose #18366 > > │ ### transparent_to_fragment                                                  │
00:16:58 verbose #18367 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:58 verbose #18368 > >
00:16:58 verbose #18369 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:58 verbose #18370 > > inl transparent_to_fragment (transparent : transparent) : fragment =
00:16:58 verbose #18371 > >     transparent
00:16:58 verbose #18372 > >     |> transparent_to_view
00:16:58 verbose #18373 > >     |> view_to_fragment
00:16:58 verbose #18374 > >
00:16:58 verbose #18375 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:58 verbose #18376 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:58 verbose #18377 > > │ ### macro_to_element                                                         │
00:16:58 verbose #18378 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:58 verbose #18379 > >
00:16:58 verbose #18380 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:58 verbose #18381 > > inl macro_to_element (view : string) : html_element _ =
00:16:58 verbose #18382 > >     view |> macro_to_view_trait |> view_trait_to_element
00:16:58 verbose #18383 > >
00:16:58 verbose #18384 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:58 verbose #18385 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:58 verbose #18386 > > │ ### transparents_fragment                                                    │
00:16:58 verbose #18387 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:58 verbose #18388 > >
00:16:58 verbose #18389 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:58 verbose #18390 > > inl transparents_fragment (items : array_base transparent) : fragment =
00:16:58 verbose #18391 > >     inl items = items |> am'.to_vec
00:16:58 verbose #18392 > >     !\\((items, transparent_to_view), $'"$0.iter().map(|x|
00:16:58 verbose #18393 > > $1(x.clone())).collect::<leptos::Fragment>()"')
00:16:58 verbose #18394 > >
00:16:58 verbose #18395 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:58 verbose #18396 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:58 verbose #18397 > > │ ### views_to_view                                                            │
00:16:58 verbose #18398 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:58 verbose #18399 > >
00:16:58 verbose #18400 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:58 verbose #18401 > > inl views_to_view (items : array_base view) : view =
00:16:58 verbose #18402 > >     inl items = join items
00:16:58 verbose #18403 > >     items
00:16:58 verbose #18404 > >     // |> fun x => a (join x) : a u64 _
00:16:58 verbose #18405 > >     |> fun x => a x : a u64 _
00:16:58 verbose #18406 > >     |> array_to_view
00:16:58 verbose #18407 > >
00:16:58 verbose #18408 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:58 verbose #18409 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:58 verbose #18410 > > │ ### new_text                                                                 │
00:16:58 verbose #18411 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:58 verbose #18412 > >
00:16:58 verbose #18413 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:58 verbose #18414 > > inl new_text (text : string) : text =
00:16:58 verbose #18415 > >     inl text = text |> sm'.to_std_string
00:16:58 verbose #18416 > >     !\\(text, $'"leptos::html::text($0)"')
00:16:59 verbose #18417 > >
00:16:59 verbose #18418 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:59 verbose #18419 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:59 verbose #18420 > > │ ### text_view                                                                │
00:16:59 verbose #18421 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:59 verbose #18422 > >
00:16:59 verbose #18423 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:59 verbose #18424 > > inl text_view (text : string) : view =
00:16:59 verbose #18425 > >     text
00:16:59 verbose #18426 > >     |> new_text
00:16:59 verbose #18427 > >     |> text_to_view
00:16:59 verbose #18428 > >
00:16:59 verbose #18429 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:59 verbose #18430 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:59 verbose #18431 > > │ ### text_fragment                                                            │
00:16:59 verbose #18432 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:59 verbose #18433 > >
00:16:59 verbose #18434 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:59 verbose #18435 > > inl text_fragment (text : string) : fragment =
00:16:59 verbose #18436 > >     text
00:16:59 verbose #18437 > >     |> text_view
00:16:59 verbose #18438 > >     |> view_to_fragment
00:16:59 verbose #18439 > >
00:16:59 verbose #18440 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:59 verbose #18441 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:59 verbose #18442 > > │ ### provide_meta_context                                                     │
00:16:59 verbose #18443 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:59 verbose #18444 > >
00:16:59 verbose #18445 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:59 verbose #18446 > > inl provide_meta_context () =
00:16:59 verbose #18447 > >     (!\($'"true; leptos_meta::provide_meta_context()"') : bool) |> ignore
00:16:59 verbose #18448 > >
00:16:59 verbose #18449 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:59 verbose #18450 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:59 verbose #18451 > > │ ### provide_context                                                          │
00:16:59 verbose #18452 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:59 verbose #18453 > >
00:16:59 verbose #18454 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:59 verbose #18455 > > inl provide_context forall t. (x : t) =
00:16:59 verbose #18456 > >     (!\\(x, $'$"true; leptos::provide_context::<std::sync::Arc<`t>>($0)"') :
00:16:59 verbose #18457 > > bool) |> ignore
00:16:59 verbose #18458 > >
00:16:59 verbose #18459 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:59 verbose #18460 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:59 verbose #18461 > > │ ### create_signal                                                            │
00:16:59 verbose #18462 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:59 verbose #18463 > >
00:16:59 verbose #18464 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:59 verbose #18465 > > inl create_signal forall t. (value : t) : read_signal t * write_signal t =
00:16:59 verbose #18466 > >     !\\(value, $'$"leptos::create_signal($0)"')
00:16:59 verbose #18467 > >
00:16:59 verbose #18468 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:59 verbose #18469 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:59 verbose #18470 > > │ ### create_rw_signal                                                         │
00:16:59 verbose #18471 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:59 verbose #18472 > >
00:16:59 verbose #18473 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:59 verbose #18474 > > inl create_rw_signal forall t. (value : t) : rw_signal t =
00:16:59 verbose #18475 > >     !\\(value, $'$"leptos::create_rw_signal($0)"')
00:16:59 verbose #18476 > >
00:16:59 verbose #18477 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:59 verbose #18478 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:59 verbose #18479 > > │ ### read_only                                                                │
00:16:59 verbose #18480 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:59 verbose #18481 > >
00:16:59 verbose #18482 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:59 verbose #18483 > > inl read_only forall t. (value : rw_signal t) : read_signal t =
00:16:59 verbose #18484 > >     !\\(value, $'$"leptos::RwSignal::read_only(&$0)"')
00:16:59 verbose #18485 > >
00:16:59 verbose #18486 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:59 verbose #18487 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:59 verbose #18488 > > │ ### write_only                                                               │
00:16:59 verbose #18489 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:59 verbose #18490 > >
00:16:59 verbose #18491 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:59 verbose #18492 > > inl write_only forall t. (value : rw_signal t) : write_signal t =
00:16:59 verbose #18493 > >     !\\(value, $'$"leptos::RwSignal::write_only(&$0)"')
00:16:59 verbose #18494 > >
00:16:59 verbose #18495 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:59 verbose #18496 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:59 verbose #18497 > > │ ### typecheck_signal                                                         │
00:16:59 verbose #18498 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:59 verbose #18499 > >
00:16:59 verbose #18500 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:59 verbose #18501 > > inl typecheck_signal forall (t : * -> *) u. (signal : t u) : () =
00:16:59 verbose #18502 > >     real
00:16:59 verbose #18503 > >         typecase t with
00:16:59 verbose #18504 > >         | signal => ()
00:16:59 verbose #18505 > >         | rw_signal => ()
00:16:59 verbose #18506 > >         | read_signal => ()
00:16:59 verbose #18507 > >         | write_signal => ()
00:16:59 verbose #18508 > >         | memo => ()
00:16:59 verbose #18509 > >         | _ => error_type `(()) ("invalid signal", ``(t u))
00:16:59 verbose #18510 > >
00:16:59 verbose #18511 > > ── markdown ────────────────────────────────────────────────────────────────────
00:16:59 verbose #18512 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:16:59 verbose #18513 > > │ ### memo_get'                                                                │
00:16:59 verbose #18514 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:16:59 verbose #18515 > >
00:16:59 verbose #18516 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:16:59 verbose #18517 > > inl memo_get' forall t. (memo : memo t) : t =
00:16:59 verbose #18518 > >     !\\(memo, $'$"$0()"')
00:17:00 verbose #18519 > >
00:17:00 verbose #18520 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:00 verbose #18521 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:00 verbose #18522 > > │ ### signal_get'                                                              │
00:17:00 verbose #18523 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:00 verbose #18524 > >
00:17:00 verbose #18525 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:00 verbose #18526 > > inl signal_get' forall (t : * -> *) u. (signal : t u) : u =
00:17:00 verbose #18527 > >     signal |> typecheck_signal
00:17:00 verbose #18528 > >     !\\(signal, $'$"leptos::SignalGet::get(&$0)"')
00:17:00 verbose #18529 > >
00:17:00 verbose #18530 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:00 verbose #18531 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:00 verbose #18532 > > │ ### signal_get signal                                                        │
00:17:00 verbose #18533 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:00 verbose #18534 > >
00:17:00 verbose #18535 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:00 verbose #18536 > > instance signal_get signal = signal_get'
00:17:00 verbose #18537 > >
00:17:00 verbose #18538 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:00 verbose #18539 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:00 verbose #18540 > > │ ### signal_get rw_signal                                                     │
00:17:00 verbose #18541 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:00 verbose #18542 > >
00:17:00 verbose #18543 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:00 verbose #18544 > > instance signal_get rw_signal = signal_get'
00:17:00 verbose #18545 > >
00:17:00 verbose #18546 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:00 verbose #18547 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:00 verbose #18548 > > │ ### signal_get read_signal                                                   │
00:17:00 verbose #18549 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:00 verbose #18550 > >
00:17:00 verbose #18551 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:00 verbose #18552 > > instance signal_get read_signal = signal_get'
00:17:00 verbose #18553 > >
00:17:00 verbose #18554 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:00 verbose #18555 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:00 verbose #18556 > > │ ### signal_get memo                                                          │
00:17:00 verbose #18557 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:00 verbose #18558 > >
00:17:00 verbose #18559 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:00 verbose #18560 > > instance signal_get memo = memo_get'
00:17:00 verbose #18561 > >
00:17:00 verbose #18562 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:00 verbose #18563 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:00 verbose #18564 > > │ ### signal_update'                                                           │
00:17:00 verbose #18565 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:00 verbose #18566 > >
00:17:00 verbose #18567 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:00 verbose #18568 > > inl signal_update' forall (t : * -> *) u. (fn : u -> u) (signal : t u) : () =
00:17:00 verbose #18569 > >     signal |> typecheck_signal
00:17:00 verbose #18570 > >     (!\\((signal, fn), $'"true; leptos::SignalUpdate::update(&$0, |x| { *x =
00:17:00 verbose #18571 > > $1(x.clone()) });"') : bool) |> ignore
00:17:00 verbose #18572 > >
00:17:00 verbose #18573 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:00 verbose #18574 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:00 verbose #18575 > > │ ### signal_update rw_signal                                                  │
00:17:00 verbose #18576 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:00 verbose #18577 > >
00:17:00 verbose #18578 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:00 verbose #18579 > > instance signal_update rw_signal = signal_update'
00:17:00 verbose #18580 > >
00:17:00 verbose #18581 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:00 verbose #18582 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:00 verbose #18583 > > │ ### signal_update write_signal                                               │
00:17:00 verbose #18584 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:00 verbose #18585 > >
00:17:00 verbose #18586 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:00 verbose #18587 > > instance signal_update write_signal = signal_update'
00:17:00 verbose #18588 > >
00:17:00 verbose #18589 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:00 verbose #18590 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:00 verbose #18591 > > │ ### signal_get_untracked'                                                    │
00:17:00 verbose #18592 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:00 verbose #18593 > >
00:17:00 verbose #18594 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:00 verbose #18595 > > inl signal_get_untracked' forall (t : * -> *) u. (signal : t u) : u =
00:17:00 verbose #18596 > >     signal |> typecheck_signal
00:17:00 verbose #18597 > >     !\\(signal, $'$"leptos::SignalGetUntracked::get_untracked(&$0)"')
00:17:00 verbose #18598 > >
00:17:00 verbose #18599 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:00 verbose #18600 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:00 verbose #18601 > > │ ### signal_get_untracked rw_signal                                           │
00:17:00 verbose #18602 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:00 verbose #18603 > >
00:17:00 verbose #18604 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:00 verbose #18605 > > instance signal_get_untracked rw_signal = signal_get_untracked'
00:17:01 verbose #18606 > >
00:17:01 verbose #18607 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:01 verbose #18608 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:01 verbose #18609 > > │ ### signal_get_untracked read_signal                                         │
00:17:01 verbose #18610 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:01 verbose #18611 > >
00:17:01 verbose #18612 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:01 verbose #18613 > > instance signal_get_untracked read_signal = signal_get_untracked'
00:17:01 verbose #18614 > >
00:17:01 verbose #18615 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:01 verbose #18616 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:01 verbose #18617 > > │ ### signal_get_untracked memo                                                │
00:17:01 verbose #18618 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:01 verbose #18619 > >
00:17:01 verbose #18620 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:01 verbose #18621 > > instance signal_get_untracked memo = signal_get_untracked'
00:17:01 verbose #18622 > >
00:17:01 verbose #18623 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:01 verbose #18624 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:01 verbose #18625 > > │ ### signal_set'                                                              │
00:17:01 verbose #18626 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:01 verbose #18627 > >
00:17:01 verbose #18628 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:01 verbose #18629 > > inl signal_set' forall (t : * -> *) u. (value : u) (signal : t u) =
00:17:01 verbose #18630 > >     signal |> typecheck_signal
00:17:01 verbose #18631 > >     (!\\((signal, value), $'$"true; leptos::SignalSet::set(&$0, $1);"') : bool)
00:17:01 verbose #18632 > > |> ignore
00:17:01 verbose #18633 > >
00:17:01 verbose #18634 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:01 verbose #18635 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:01 verbose #18636 > > │ ### signal_set rw_signal                                                     │
00:17:01 verbose #18637 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:01 verbose #18638 > >
00:17:01 verbose #18639 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:01 verbose #18640 > > instance signal_set rw_signal = signal_set'
00:17:02 verbose #18641 > >
00:17:02 verbose #18642 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:02 verbose #18643 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:02 verbose #18644 > > │ ### signal_set write_signal                                                  │
00:17:02 verbose #18645 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:02 verbose #18646 > >
00:17:02 verbose #18647 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:02 verbose #18648 > > instance signal_set write_signal = signal_set'
00:17:02 verbose #18649 > >
00:17:02 verbose #18650 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:02 verbose #18651 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:02 verbose #18652 > > │ ### create_local_resource                                                    │
00:17:02 verbose #18653 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:02 verbose #18654 > >
00:17:02 verbose #18655 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:02 verbose #18656 > > inl create_local_resource forall t u.
00:17:02 verbose #18657 > >     (source : () -> t)
00:17:02 verbose #18658 > >     (fetcher : t -> async.future_pin u)
00:17:02 verbose #18659 > >     : resource t u
00:17:02 verbose #18660 > >     =
00:17:02 verbose #18661 > >     // inl fetcher x = rust.move fun () =>
00:17:02 verbose #18662 > >     //    fetcher x
00:17:02 verbose #18663 > >     // inl fetcher = join fetcher
00:17:02 verbose #18664 > >     // !\($'"leptos::create_local_resource(move || !source(), move |x| async
00:17:02 verbose #18665 > > move { !fetcher(x)().await })"')
00:17:02 verbose #18666 > >
00:17:02 verbose #18667 > >     // ---
00:17:02 verbose #18668 > >
00:17:02 verbose #18669 > >     // inl fn x = async.new_future fun () =>
00:17:02 verbose #18670 > >     //     inl x' = fetcher x
00:17:02 verbose #18671 > >     //     x' |> async.await
00:17:02 verbose #18672 > >
00:17:02 verbose #18673 > >     // !\\((source, fn), $'"leptos::create_local_resource(move || $0(), |x|
00:17:02 verbose #18674 > > async move { $1(x).await })"')
00:17:02 verbose #18675 > >
00:17:02 verbose #18676 > >
00:17:02 verbose #18677 > >     join
00:17:02 verbose #18678 > >         !\\(source, $'"let __create_local_resource =
00:17:02 verbose #18679 > > leptos::create_local_resource(move || $0(), |x| async move { //"')
00:17:02 verbose #18680 > >
00:17:02 verbose #18681 > >         inl x = !\($'"x"')
00:17:02 verbose #18682 > >         inl x' = fetcher x
00:17:02 verbose #18683 > >         inl x' = join x'
00:17:02 verbose #18684 > >         inl x' = x' |> async.await
00:17:02 verbose #18685 > >
00:17:02 verbose #18686 > >         inl closure_fix = 2u8, 1u8
00:17:02 verbose #18687 > >         x' |> rust.fix_closure closure_fix
00:17:02 verbose #18688 > >
00:17:02 verbose #18689 > >         !\($'"__create_local_resource"')
00:17:02 verbose #18690 > >
00:17:02 verbose #18691 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:02 verbose #18692 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:02 verbose #18693 > > │ ### create_resource                                                          │
00:17:02 verbose #18694 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:02 verbose #18695 > >
00:17:02 verbose #18696 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:02 verbose #18697 > > // inl create_resource forall t u. (source : () -> t) (fetcher : t ->
00:17:02 verbose #18698 > > async.future_pin u) : resource t u =
00:17:02 verbose #18699 > > //     inl source = join source
00:17:02 verbose #18700 > > //     !\\(fetcher, $'"leptos::create_resource(move || !source(), |x| async move
00:17:02 verbose #18701 > > { $0(x).await })"')
00:17:02 verbose #18702 > >
00:17:02 verbose #18703 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:02 verbose #18704 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:02 verbose #18705 > > │ ### create_action                                                            │
00:17:02 verbose #18706 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:02 verbose #18707 > >
00:17:02 verbose #18708 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:02 verbose #18709 > > inl create_action forall t u. (action_fn : t -> async.future_pin u) : action t u
00:17:02 verbose #18710 > > =
00:17:02 verbose #18711 > >     !\\(action_fn, $'"leptos::create_action(move |value: &std::sync::Arc<`t>|
00:17:02 verbose #18712 > > $0(value.clone()))"')
00:17:02 verbose #18713 > >
00:17:02 verbose #18714 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:02 verbose #18715 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:02 verbose #18716 > > │ ### action_dispatch                                                          │
00:17:02 verbose #18717 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:02 verbose #18718 > >
00:17:02 verbose #18719 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:02 verbose #18720 > > inl action_dispatch forall t u. (value : heap t) (action : action (heap t) u) :
00:17:02 verbose #18721 > > () =
00:17:02 verbose #18722 > >     (!\\((action, value), $'"true; leptos::Action::dispatch(&$0, $1.clone())"')
00:17:02 verbose #18723 > > : bool) |> ignore
00:17:02 verbose #18724 > >
00:17:02 verbose #18725 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:02 verbose #18726 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:02 verbose #18727 > > │ ### action_input                                                             │
00:17:02 verbose #18728 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:02 verbose #18729 > >
00:17:02 verbose #18730 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:02 verbose #18731 > > inl action_input forall t u. (action : action (heap t) u) : rw_signal
00:17:02 verbose #18732 > > (optionm'.option' t) =
00:17:02 verbose #18733 > >     !\\(action, $'"leptos::Action::input(&$0)"')
00:17:02 verbose #18734 > >
00:17:02 verbose #18735 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:02 verbose #18736 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:02 verbose #18737 > > │ ### action_pending                                                           │
00:17:02 verbose #18738 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:02 verbose #18739 > >
00:17:02 verbose #18740 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:02 verbose #18741 > > inl action_pending forall t u. (action : action (heap t) u) : read_signal bool =
00:17:02 verbose #18742 > >     !\\(action, $'"leptos::Action::pending(&$0)"')
00:17:02 verbose #18743 > >
00:17:02 verbose #18744 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:02 verbose #18745 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:02 verbose #18746 > > │ ### action_value                                                             │
00:17:02 verbose #18747 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:02 verbose #18748 > >
00:17:02 verbose #18749 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:02 verbose #18750 > > inl action_value forall t u. (action : action (heap t) u) : rw_signal
00:17:02 verbose #18751 > > (optionm'.option' u) =
00:17:02 verbose #18752 > >     !\\(action, $'"leptos::Action::value(&$0)"')
00:17:02 verbose #18753 > >
00:17:02 verbose #18754 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:02 verbose #18755 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:02 verbose #18756 > > │ ### use_context                                                              │
00:17:02 verbose #18757 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:02 verbose #18758 > >
00:17:02 verbose #18759 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:02 verbose #18760 > > inl use_context forall t. () : optionm'.option' t =
00:17:02 verbose #18761 > >     !\($'"leptos::use_context::<std::sync::Arc<`t>>()"')
00:17:02 verbose #18762 > >
00:17:02 verbose #18763 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:02 verbose #18764 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:02 verbose #18765 > > │ ### resource_loading                                                         │
00:17:02 verbose #18766 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:02 verbose #18767 > >
00:17:02 verbose #18768 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:02 verbose #18769 > > inl resource_loading forall t u. (resource : resource t u) : signal bool =
00:17:02 verbose #18770 > >     !\\(resource, $'$"leptos::Resource::loading(&$0)"')
00:17:03 verbose #18771 > >
00:17:03 verbose #18772 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:03 verbose #18773 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:03 verbose #18774 > > │ ### resource_get                                                             │
00:17:03 verbose #18775 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:03 verbose #18776 > >
00:17:03 verbose #18777 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:03 verbose #18778 > > inl resource_get forall t u. (resource : resource t u) : optionm'.option' u =
00:17:03 verbose #18779 > >     !\\(resource, $'$"leptos::SignalGet::get(&$0)"')
00:17:03 verbose #18780 > >
00:17:03 verbose #18781 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:03 verbose #18782 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:03 verbose #18783 > > │ ### resource_with                                                            │
00:17:03 verbose #18784 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:03 verbose #18785 > >
00:17:03 verbose #18786 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:03 verbose #18787 > > inl resource_with forall t u v. (resource : resource t u) (fn : optionm'.option'
00:17:03 verbose #18788 > > u -> v) : v =
00:17:03 verbose #18789 > >     !\\((resource, fn), $'$"leptos::SignalWith::with(&$0, |x| $1(x.clone()))"')
00:17:03 verbose #18790 > >
00:17:03 verbose #18791 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:03 verbose #18792 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:03 verbose #18793 > > │ ### create_effect                                                            │
00:17:03 verbose #18794 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:03 verbose #18795 > >
00:17:03 verbose #18796 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:03 verbose #18797 > > inl create_effect (fn : () -> ()) : () =
00:17:03 verbose #18798 > >     inl fn = fn |> rust.emit
00:17:03 verbose #18799 > >     (!\($'"true; leptos::create_effect(move |_| { !fn(()) })"') : bool) |>
00:17:03 verbose #18800 > > ignore
00:17:03 verbose #18801 > >
00:17:03 verbose #18802 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:03 verbose #18803 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:03 verbose #18804 > > │ ### create_effect'                                                           │
00:17:03 verbose #18805 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:03 verbose #18806 > >
00:17:03 verbose #18807 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:03 verbose #18808 > > inl create_effect' forall t. (fn : optionm'.option' t -> t) : () =
00:17:03 verbose #18809 > >     (!\\(fn, $'"true; leptos::create_effect(move |x| { $0(x) })"') : bool) |>
00:17:03 verbose #18810 > > ignore
00:17:03 verbose #18811 > >
00:17:03 verbose #18812 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:03 verbose #18813 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:03 verbose #18814 > > │ ### interval_handle_clear                                                    │
00:17:03 verbose #18815 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:03 verbose #18816 > >
00:17:03 verbose #18817 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:03 verbose #18818 > > inl interval_handle_clear (interval_handle : interval_handle) =
00:17:03 verbose #18819 > >     (!\\(interval_handle, $'$"true;
00:17:03 verbose #18820 > > leptos::leptos_dom::helpers::IntervalHandle::clear(&$0)"') : bool) |> ignore
00:17:03 verbose #18821 > >
00:17:03 verbose #18822 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:03 verbose #18823 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:03 verbose #18824 > > │ ### set_interval_with_handle                                                 │
00:17:03 verbose #18825 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:03 verbose #18826 > >
00:17:03 verbose #18827 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:03 verbose #18828 > > inl set_interval_with_handle
00:17:03 verbose #18829 > >     (fn : () -> ())
00:17:03 verbose #18830 > >     (interval_millis : date_time.duration)
00:17:03 verbose #18831 > >     : resultm.result' interval_handle wasm.js_value
00:17:03 verbose #18832 > >     =
00:17:03 verbose #18833 > >     !\\((fn, interval_millis), $'$"leptos::set_interval_with_handle(move ||
00:17:03 verbose #18834 > > $0(), $1)"')
00:17:03 verbose #18835 > >
00:17:03 verbose #18836 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:03 verbose #18837 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:03 verbose #18838 > > │ ### create_memo                                                              │
00:17:03 verbose #18839 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:03 verbose #18840 > >
00:17:03 verbose #18841 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:03 verbose #18842 > > inl create_memo forall t. (fn : () -> t) : memo t =
00:17:03 verbose #18843 > >     inl fn = fn |> rust.emit
00:17:03 verbose #18844 > >     !\($'"leptos::create_memo(move |_| { !fn(()) })"')
00:17:03 verbose #18845 > >
00:17:03 verbose #18846 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:03 verbose #18847 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:03 verbose #18848 > > │ ### window                                                                   │
00:17:03 verbose #18849 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:03 verbose #18850 > >
00:17:03 verbose #18851 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:03 verbose #18852 > > let window () : wasm.window =
00:17:03 verbose #18853 > >     !\($'"leptos::leptos_dom::window()"')
00:17:03 verbose #18854 > >
00:17:03 verbose #18855 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:03 verbose #18856 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:03 verbose #18857 > > │ ### bool_prop                                                                │
00:17:03 verbose #18858 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:03 verbose #18859 > >
00:17:03 verbose #18860 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:03 verbose #18861 > > inl bool_prop (prop : string) (fn : () -> bool) : string =
00:17:03 verbose #18862 > >     inl fn = join fn
00:17:03 verbose #18863 > >     $'"" + !prop + "={move || !fn()}"'
00:17:03 verbose #18864 > >
00:17:03 verbose #18865 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:03 verbose #18866 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:03 verbose #18867 > > │ ### concat_props                                                             │
00:17:03 verbose #18868 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:03 verbose #18869 > >
00:17:03 verbose #18870 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:03 verbose #18871 > > inl concat_props props =
00:17:03 verbose #18872 > >     ("", props)
00:17:03 verbose #18873 > >     ||> listm.fold fun acc (x : string) =>
00:17:03 verbose #18874 > >         $'" " + !x + !acc + ""'
00:17:04 verbose #18875 > >
00:17:04 verbose #18876 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:04 verbose #18877 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:04 verbose #18878 > > │ ### move_to_fragment                                                         │
00:17:04 verbose #18879 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:04 verbose #18880 > >
00:17:04 verbose #18881 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:04 verbose #18882 > > inl move_to_fragment fn =
00:17:04 verbose #18883 > >     rust.move fn
00:17:04 verbose #18884 > >     |> closure_to_fragment
00:17:04 verbose #18885 > >
00:17:04 verbose #18886 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:04 verbose #18887 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:04 verbose #18888 > > │ ### tag_raw                                                                  │
00:17:04 verbose #18889 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:04 verbose #18890 > >
00:17:04 verbose #18891 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:04 verbose #18892 > > inl tag_raw tag props children =
00:17:04 verbose #18893 > >     inl tag : string = tag
00:17:04 verbose #18894 > >     inl props = props |> concat_props
00:17:04 verbose #18895 > >     inl children = join children
00:17:04 verbose #18896 > >     inl children = fun () => children |> move_to_fragment
00:17:04 verbose #18897 > >     inl children : () -> fragment = join children
00:17:04 verbose #18898 > >     $'"<" + !tag + " " + !props + ">{!children()}</" + !tag + ">"'
00:17:04 verbose #18899 > >
00:17:04 verbose #18900 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:04 verbose #18901 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:04 verbose #18902 > > │ ### tag_element                                                              │
00:17:04 verbose #18903 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:04 verbose #18904 > >
00:17:04 verbose #18905 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:04 verbose #18906 > > inl tag_element tag props children : html_element _ =
00:17:04 verbose #18907 > >     inl children = join children
00:17:04 verbose #18908 > >     tag_raw tag props children
00:17:04 verbose #18909 > >     |> macro_to_element
00:17:04 verbose #18910 > >
00:17:04 verbose #18911 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:04 verbose #18912 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:04 verbose #18913 > > │ ### tag_closed_raw                                                           │
00:17:04 verbose #18914 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:04 verbose #18915 > >
00:17:04 verbose #18916 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:04 verbose #18917 > > inl tag_closed_raw tag props =
00:17:04 verbose #18918 > >     inl tag : string = tag
00:17:04 verbose #18919 > >     inl props = props |> concat_props
00:17:04 verbose #18920 > >     $'"<" + !tag + " " + !props + " />"'
00:17:04 verbose #18921 > >
00:17:04 verbose #18922 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:04 verbose #18923 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:04 verbose #18924 > > │ ### tag_closed                                                               │
00:17:04 verbose #18925 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:04 verbose #18926 > >
00:17:04 verbose #18927 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:04 verbose #18928 > > inl tag_closed tag props : html_element _ =
00:17:04 verbose #18929 > >     tag_closed_raw tag props
00:17:04 verbose #18930 > >     |> macro_to_element
00:17:04 verbose #18931 > >
00:17:04 verbose #18932 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:04 verbose #18933 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:04 verbose #18934 > > │ ### for                                                                      │
00:17:04 verbose #18935 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:04 verbose #18936 > >
00:17:04 verbose #18937 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:04 verbose #18938 > > inl for props : view =
00:17:04 verbose #18939 > >     tag_closed_raw "leptos::For" props
00:17:04 verbose #18940 > >     |> macro_to_view
00:17:04 verbose #18941 > >
00:17:04 verbose #18942 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:04 verbose #18943 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:04 verbose #18944 > > │ ### for                                                                      │
00:17:04 verbose #18945 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:04 verbose #18946 > >
00:17:04 verbose #18947 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:04 verbose #18948 > > inl for forall t u (signal : * -> *).
00:17:04 verbose #18949 > >     (signal : signal (am'.vec t))
00:17:04 verbose #18950 > >     (key_fn : t -> u)
00:17:04 verbose #18951 > >     (children' : t -> fragment)
00:17:04 verbose #18952 > >     : view
00:17:04 verbose #18953 > >     =
00:17:04 verbose #18954 > >     inl signal = join signal
00:17:04 verbose #18955 > >     signal |> typecheck_signal
00:17:04 verbose #18956 > >     inl key_fn = join key_fn
00:17:04 verbose #18957 > >     inl children' = join children'
00:17:04 verbose #18958 > >     for [[
00:17:04 verbose #18959 > >         $'"each=!signal"'
00:17:04 verbose #18960 > >         $'"key=move |x| !key_fn(x.to_owned())"'
00:17:04 verbose #18961 > >         $'"let:x"'
00:17:04 verbose #18962 > >         $'"children=move |x| !children'(x)"'
00:17:04 verbose #18963 > >     ]]
00:17:04 verbose #18964 > >
00:17:04 verbose #18965 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:04 verbose #18966 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:04 verbose #18967 > > │ ### show                                                                     │
00:17:04 verbose #18968 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:04 verbose #18969 > >
00:17:04 verbose #18970 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:04 verbose #18971 > > inl show props : view =
00:17:04 verbose #18972 > >     tag_closed_raw "leptos::Show" props
00:17:04 verbose #18973 > >     |> macro_to_view
00:17:04 verbose #18974 > >
00:17:04 verbose #18975 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:04 verbose #18976 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:04 verbose #18977 > > │ ### show                                                                     │
00:17:04 verbose #18978 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:04 verbose #18979 > >
00:17:04 verbose #18980 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:04 verbose #18981 > > inl show (when_fn : () -> bool) (fallback : () -> view) (children : () ->
00:17:04 verbose #18982 > > fragment) : view =
00:17:04 verbose #18983 > >     inl when_fn = join when_fn
00:17:04 verbose #18984 > >     inl when_fn = join when_fn
00:17:04 verbose #18985 > >     inl fallback = join fallback
00:17:04 verbose #18986 > >     inl children = join children
00:17:04 verbose #18987 > >     show [[
00:17:04 verbose #18988 > >         $'"when=move || !when_fn()"'
00:17:04 verbose #18989 > >         $'"fallback=move || !fallback()"'
00:17:04 verbose #18990 > >         $'"children=std::rc::Rc::new(move || !children())"'
00:17:04 verbose #18991 > >     ]]
00:17:05 verbose #18992 > >
00:17:05 verbose #18993 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:05 verbose #18994 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:05 verbose #18995 > > │ ### use_location                                                             │
00:17:05 verbose #18996 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:05 verbose #18997 > >
00:17:05 verbose #18998 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:05 verbose #18999 > > inl use_location () : location =
00:17:05 verbose #19000 > >     !\($'"leptos_router::use_location()"')
00:17:05 verbose #19001 > >
00:17:05 verbose #19002 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:05 verbose #19003 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:05 verbose #19004 > > │ ### use_navigate                                                             │
00:17:05 verbose #19005 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:05 verbose #19006 > >
00:17:05 verbose #19007 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:05 verbose #19008 > > inl use_navigate () : string -> () =
00:17:05 verbose #19009 > >     inl navigate : threading.arc (rust.dyn' (rust.action_fn2 (rust.ref sm'.str)
00:17:05 verbose #19010 > > navigate_options)) =
00:17:05 verbose #19011 > >         !\($'"std::sync::Arc::new(leptos_router::use_navigate())"')
00:17:05 verbose #19012 > >     fun url =>
00:17:05 verbose #19013 > >         inl url = url |> sm'.as_str
00:17:05 verbose #19014 > >         !\\(navigate, $'"$0(!url, Default::default())"')
00:17:05 verbose #19015 > >
00:17:05 verbose #19016 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:05 verbose #19017 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:05 verbose #19018 > > │ ### location_hash                                                            │
00:17:05 verbose #19019 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:05 verbose #19020 > >
00:17:05 verbose #19021 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:05 verbose #19022 > > inl location_hash (location : location) : memo sm'.std_string =
00:17:05 verbose #19023 > >     !\\(location, $'"$0.hash"')
00:17:05 verbose #19024 > >
00:17:05 verbose #19025 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:05 verbose #19026 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:05 verbose #19027 > > │ ### location_pathname                                                        │
00:17:05 verbose #19028 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:05 verbose #19029 > >
00:17:05 verbose #19030 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:05 verbose #19031 > > inl location_pathname (location : location) : memo sm'.std_string =
00:17:05 verbose #19032 > >     !\\(location, $'"$0.pathname"')
00:17:05 verbose #19033 > >
00:17:05 verbose #19034 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:05 verbose #19035 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:05 verbose #19036 > > │ ### location_search                                                          │
00:17:05 verbose #19037 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:05 verbose #19038 > >
00:17:05 verbose #19039 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:05 verbose #19040 > > inl location_search (location : location) : memo sm'.std_string =
00:17:05 verbose #19041 > >     !\\(location, $'"$0.search"')
00:17:05 verbose #19042 > >
00:17:05 verbose #19043 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:05 verbose #19044 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:05 verbose #19045 > > │ ### url_try_from                                                             │
00:17:05 verbose #19046 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:05 verbose #19047 > >
00:17:05 verbose #19048 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:05 verbose #19049 > > inl url_try_from (s : rust.ref sm'.str) : resultm.result' url sm'.std_string =
00:17:05 verbose #19050 > >     !\\(s, $'"leptos_router::Url::try_from($0)"')
00:17:05 verbose #19051 > >
00:17:05 verbose #19052 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:05 verbose #19053 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:05 verbose #19054 > > │ ### url_pathname                                                             │
00:17:05 verbose #19055 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:05 verbose #19056 > >
00:17:05 verbose #19057 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:05 verbose #19058 > > inl url_pathname (url : url) : sm'.std_string =
00:17:05 verbose #19059 > >     !\\(url, $'"$0.pathname"')
00:17:05 verbose #19060 > >
00:17:05 verbose #19061 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:05 verbose #19062 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:05 verbose #19063 > > │ ### use_url                                                                  │
00:17:05 verbose #19064 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:05 verbose #19065 > >
00:17:05 verbose #19066 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:05 verbose #19067 > > inl use_url () =
00:17:05 verbose #19068 > >     inl location = use_location ()
00:17:05 verbose #19069 > >
00:17:05 verbose #19070 > >     create_memo fun () =>
00:17:05 verbose #19071 > >         inl url_pathname = location |> location_pathname |> signal_get |>
00:17:05 verbose #19072 > > sm'.from_std_string
00:17:05 verbose #19073 > >         inl url_search = location |> location_search |> signal_get |>
00:17:05 verbose #19074 > > sm'.from_std_string
00:17:05 verbose #19075 > >         inl url_search =
00:17:05 verbose #19076 > >             if url_search = ""
00:17:05 verbose #19077 > >             then ""
00:17:05 verbose #19078 > >             else $'$"?{!url_search}"'
00:17:05 verbose #19079 > >         url_pathname +. url_search
00:17:05 verbose #19080 > >
00:17:05 verbose #19081 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:05 verbose #19082 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:05 verbose #19083 > > │ ### route                                                                    │
00:17:05 verbose #19084 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:05 verbose #19085 > >
00:17:05 verbose #19086 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:05 verbose #19087 > > inl route path view children : view =
00:17:05 verbose #19088 > >     inl path = join path
00:17:05 verbose #19089 > >     inl path = path |> sm'.to_std_string
00:17:05 verbose #19090 > >     inl view : () -> fragment = join view
00:17:05 verbose #19091 > >     inl children : () -> fragment = join children
00:17:05 verbose #19092 > >     tag_closed_raw "leptos_router::Route" [[
00:17:05 verbose #19093 > >         $'"path=!path"'
00:17:05 verbose #19094 > >         $'"view=move || !view()"'
00:17:05 verbose #19095 > >         $'"children=Box::new(move || !children())"'
00:17:05 verbose #19096 > >     ]]
00:17:05 verbose #19097 > >     |> macro_to_view
00:17:06 verbose #19098 > >
00:17:06 verbose #19099 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:06 verbose #19100 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:06 verbose #19101 > > │ ### router                                                                   │
00:17:06 verbose #19102 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:06 verbose #19103 > >
00:17:06 verbose #19104 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:06 verbose #19105 > > inl router children : view =
00:17:06 verbose #19106 > >     inl children () =
00:17:06 verbose #19107 > >         children ()
00:17:06 verbose #19108 > >     inl children : () -> fragment = join children
00:17:06 verbose #19109 > >     tag_closed_raw "leptos_router::Router" [[
00:17:06 verbose #19110 > >         $'"children=Box::new(move || !children())"'
00:17:06 verbose #19111 > >     ]]
00:17:06 verbose #19112 > >     |> macro_to_view
00:17:06 verbose #19113 > >
00:17:06 verbose #19114 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:06 verbose #19115 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:06 verbose #19116 > > │ ### routes                                                                   │
00:17:06 verbose #19117 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:06 verbose #19118 > >
00:17:06 verbose #19119 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:06 verbose #19120 > > inl routes children : view =
00:17:06 verbose #19121 > >     inl children : () -> fragment = children |> rust.emit
00:17:06 verbose #19122 > >     tag_closed_raw "leptos_router::Routes" [[
00:17:06 verbose #19123 > >         $'"children=Box::new(move || !children(()))"'
00:17:06 verbose #19124 > >     ]]
00:17:06 verbose #19125 > >     |> macro_to_view
00:17:06 verbose #19126 > >
00:17:06 verbose #19127 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:06 verbose #19128 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:06 verbose #19129 > > │ ### a'                                                                       │
00:17:06 verbose #19130 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:06 verbose #19131 > >
00:17:06 verbose #19132 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:06 verbose #19133 > > inl a' props children : _ a' =
00:17:06 verbose #19134 > >     tag_element "a" props children
00:17:06 verbose #19135 > >
00:17:06 verbose #19136 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:06 verbose #19137 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:06 verbose #19138 > > │ ### button                                                                   │
00:17:06 verbose #19139 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:06 verbose #19140 > >
00:17:06 verbose #19141 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:06 verbose #19142 > > inl button props children : _ button =
00:17:06 verbose #19143 > >     tag_element "button" props children
00:17:06 verbose #19144 > >
00:17:06 verbose #19145 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:06 verbose #19146 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:06 verbose #19147 > > │ ### details                                                                  │
00:17:06 verbose #19148 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:06 verbose #19149 > >
00:17:06 verbose #19150 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:06 verbose #19151 > > inl details props children : _ details =
00:17:06 verbose #19152 > >     tag_element "details" props children
00:17:06 verbose #19153 > >
00:17:06 verbose #19154 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:07 verbose #19155 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:07 verbose #19156 > > │ ### div                                                                      │
00:17:07 verbose #19157 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:07 verbose #19158 > >
00:17:07 verbose #19159 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:07 verbose #19160 > > inl div props children : _ div =
00:17:07 verbose #19161 > >     tag_element "div" props children
00:17:07 verbose #19162 > >
00:17:07 verbose #19163 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:07 verbose #19164 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:07 verbose #19165 > > │ ### footer                                                                   │
00:17:07 verbose #19166 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:07 verbose #19167 > >
00:17:07 verbose #19168 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:07 verbose #19169 > > inl footer props children : _ footer =
00:17:07 verbose #19170 > >     tag_element "footer" props children
00:17:07 verbose #19171 > >
00:17:07 verbose #19172 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:07 verbose #19173 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:07 verbose #19174 > > │ ### header                                                                   │
00:17:07 verbose #19175 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:07 verbose #19176 > >
00:17:07 verbose #19177 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:07 verbose #19178 > > inl header props children : _ header =
00:17:07 verbose #19179 > >     tag_element "header" props children
00:17:07 verbose #19180 > >
00:17:07 verbose #19181 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:07 verbose #19182 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:07 verbose #19183 > > │ ### label                                                                    │
00:17:07 verbose #19184 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:07 verbose #19185 > >
00:17:07 verbose #19186 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:07 verbose #19187 > > inl label props children : _ label =
00:17:07 verbose #19188 > >     tag_element "label" props children
00:17:07 verbose #19189 > >
00:17:07 verbose #19190 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:07 verbose #19191 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:07 verbose #19192 > > │ ### main                                                                     │
00:17:07 verbose #19193 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:07 verbose #19194 > >
00:17:07 verbose #19195 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:07 verbose #19196 > > inl main props children : _ main =
00:17:07 verbose #19197 > >     tag_element "main" props children
00:17:07 verbose #19198 > >
00:17:07 verbose #19199 > > inl main' () = ()
00:17:07 verbose #19200 > >
00:17:07 verbose #19201 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:07 verbose #19202 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:07 verbose #19203 > > │ ### nav                                                                      │
00:17:07 verbose #19204 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:07 verbose #19205 > >
00:17:07 verbose #19206 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:07 verbose #19207 > > inl nav props children : _ nav =
00:17:07 verbose #19208 > >     tag_element "nav" props children
00:17:07 verbose #19209 > >
00:17:07 verbose #19210 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:07 verbose #19211 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:07 verbose #19212 > > │ ### option'                                                                  │
00:17:07 verbose #19213 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:07 verbose #19214 > >
00:17:07 verbose #19215 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:07 verbose #19216 > > inl option' props children : _ option' =
00:17:07 verbose #19217 > >     tag_element "option" props children
00:17:07 verbose #19218 > >
00:17:07 verbose #19219 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:07 verbose #19220 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:07 verbose #19221 > > │ ### option'                                                                  │
00:17:07 verbose #19222 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:07 verbose #19223 > >
00:17:07 verbose #19224 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:07 verbose #19225 > > inl option' select children : _ option' =
00:17:07 verbose #19226 > >     inl select : () -> bool = join select
00:17:07 verbose #19227 > >     option' [[
00:17:07 verbose #19228 > >         $'"select=!select()"'
00:17:07 verbose #19229 > >
00:17:07 verbose #19230 > >     ]] fun () =>
00:17:07 verbose #19231 > >         children |> new_text |> text_to_fragment
00:17:07 verbose #19232 > >
00:17:07 verbose #19233 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:07 verbose #19234 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:07 verbose #19235 > > │ ### pre                                                                      │
00:17:07 verbose #19236 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:07 verbose #19237 > >
00:17:07 verbose #19238 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:07 verbose #19239 > > inl pre props children : _ pre =
00:17:07 verbose #19240 > >     tag_element "pre" props children
00:17:08 verbose #19241 > >
00:17:08 verbose #19242 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:08 verbose #19243 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:08 verbose #19244 > > │ ### select                                                                   │
00:17:08 verbose #19245 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:08 verbose #19246 > >
00:17:08 verbose #19247 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:08 verbose #19248 > > inl select props children : _ select =
00:17:08 verbose #19249 > >     tag_element "select" props children
00:17:08 verbose #19250 > >
00:17:08 verbose #19251 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:08 verbose #19252 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:08 verbose #19253 > > │ ### span                                                                     │
00:17:08 verbose #19254 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:08 verbose #19255 > >
00:17:08 verbose #19256 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:08 verbose #19257 > > inl span props children : _ span =
00:17:08 verbose #19258 > >     tag_element "span" props children
00:17:08 verbose #19259 > >
00:17:08 verbose #19260 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:08 verbose #19261 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:08 verbose #19262 > > │ ### summary                                                                  │
00:17:08 verbose #19263 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:08 verbose #19264 > >
00:17:08 verbose #19265 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:08 verbose #19266 > > inl summary props children : _ summary =
00:17:08 verbose #19267 > >     tag_element "summary" props children
00:17:08 verbose #19268 > >
00:17:08 verbose #19269 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:08 verbose #19270 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:08 verbose #19271 > > │ ### table                                                                    │
00:17:08 verbose #19272 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:08 verbose #19273 > >
00:17:08 verbose #19274 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:08 verbose #19275 > > inl table props children : _ table =
00:17:08 verbose #19276 > >     tag_element "table" props children
00:17:08 verbose #19277 > >
00:17:08 verbose #19278 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:08 verbose #19279 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:08 verbose #19280 > > │ ### thead                                                                    │
00:17:08 verbose #19281 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:08 verbose #19282 > >
00:17:08 verbose #19283 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:08 verbose #19284 > > inl thead props children : _ thead =
00:17:08 verbose #19285 > >     tag_element "thead" props children
00:17:08 verbose #19286 > >
00:17:08 verbose #19287 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:08 verbose #19288 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:08 verbose #19289 > > │ ### tbody                                                                    │
00:17:08 verbose #19290 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:08 verbose #19291 > >
00:17:08 verbose #19292 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:08 verbose #19293 > > inl tbody props children : _ tbody =
00:17:08 verbose #19294 > >     tag_element "tbody" props children
00:17:08 verbose #19295 > >
00:17:08 verbose #19296 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:08 verbose #19297 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:08 verbose #19298 > > │ ### tr                                                                       │
00:17:08 verbose #19299 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:08 verbose #19300 > >
00:17:08 verbose #19301 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:08 verbose #19302 > > inl tr props children : _ tr =
00:17:08 verbose #19303 > >     tag_element "tr" props children
00:17:08 verbose #19304 > >
00:17:08 verbose #19305 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:08 verbose #19306 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:08 verbose #19307 > > │ ### th                                                                       │
00:17:08 verbose #19308 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:08 verbose #19309 > >
00:17:08 verbose #19310 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:08 verbose #19311 > > inl th props children : _ th =
00:17:08 verbose #19312 > >     tag_element "th" props children
00:17:08 verbose #19313 > >
00:17:08 verbose #19314 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:08 verbose #19315 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:08 verbose #19316 > > │ ### td                                                                       │
00:17:08 verbose #19317 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:08 verbose #19318 > >
00:17:08 verbose #19319 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:08 verbose #19320 > > inl td props children : _ td =
00:17:08 verbose #19321 > >     tag_element "td" props children
00:17:09 verbose #19322 > >
00:17:09 verbose #19323 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:09 verbose #19324 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:09 verbose #19325 > > │ ### svg                                                                      │
00:17:09 verbose #19326 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:09 verbose #19327 > >
00:17:09 verbose #19328 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:09 verbose #19329 > > inl svg props children : _ svg =
00:17:09 verbose #19330 > >     tag_element "svg" props children
00:17:09 verbose #19331 > >
00:17:09 verbose #19332 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:09 verbose #19333 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:09 verbose #19334 > > │ ### path                                                                     │
00:17:09 verbose #19335 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:09 verbose #19336 > >
00:17:09 verbose #19337 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:09 verbose #19338 > > inl path props : _ path =
00:17:09 verbose #19339 > >     tag_element "path" props (fun () => ;[[]] |> view_array_to_fragment)
00:17:09 verbose #19340 > >
00:17:09 verbose #19341 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:09 verbose #19342 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:09 verbose #19343 > > │ ### circle                                                                   │
00:17:09 verbose #19344 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:09 verbose #19345 > >
00:17:09 verbose #19346 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:09 verbose #19347 > > inl circle props : _ circle =
00:17:09 verbose #19348 > >     tag_element "circle" props (fun () => ;[[]] |> view_array_to_fragment)
00:17:09 verbose #19349 > >
00:17:09 verbose #19350 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:09 verbose #19351 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:09 verbose #19352 > > │ ### rect                                                                     │
00:17:09 verbose #19353 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:09 verbose #19354 > >
00:17:09 verbose #19355 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:09 verbose #19356 > > inl rect props children : _ rect =
00:17:09 verbose #19357 > >     tag_element "rect" props children
00:17:09 verbose #19358 > >
00:17:09 verbose #19359 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:09 verbose #19360 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:09 verbose #19361 > > │ ### animate                                                                  │
00:17:09 verbose #19362 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:09 verbose #19363 > >
00:17:09 verbose #19364 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:09 verbose #19365 > > inl animate props : _ animate =
00:17:09 verbose #19366 > >     tag_element "animate" props (fun () => ;[[]] |> view_array_to_fragment)
00:17:09 verbose #19367 > >
00:17:09 verbose #19368 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:09 verbose #19369 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:09 verbose #19370 > > │ ### input                                                                    │
00:17:09 verbose #19371 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:09 verbose #19372 > >
00:17:09 verbose #19373 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:09 verbose #19374 > > inl input props : _ input =
00:17:09 verbose #19375 > >     tag_closed "input" props
00:17:09 verbose #19376 > >
00:17:09 verbose #19377 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:09 verbose #19378 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:09 verbose #19379 > > │ ### dd                                                                       │
00:17:09 verbose #19380 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:09 verbose #19381 > >
00:17:09 verbose #19382 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:09 verbose #19383 > > inl dd props children : _ dd =
00:17:09 verbose #19384 > >     tag_element "dd" props children
00:17:09 verbose #19385 > >
00:17:09 verbose #19386 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:09 verbose #19387 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:09 verbose #19388 > > │ ### dl                                                                       │
00:17:09 verbose #19389 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:09 verbose #19390 > >
00:17:09 verbose #19391 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:09 verbose #19392 > > inl dl props children : _ dl =
00:17:09 verbose #19393 > >     tag_element "dl" props children
00:17:09 verbose #19394 > >
00:17:09 verbose #19395 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:09 verbose #19396 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:09 verbose #19397 > > │ ### dt                                                                       │
00:17:09 verbose #19398 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:09 verbose #19399 > >
00:17:09 verbose #19400 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:09 verbose #19401 > > inl dt props children : _ dt =
00:17:09 verbose #19402 > >     tag_element "dt" props children
00:17:10 verbose #19403 > 00:00:25 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 123917 }
00:17:10 verbose #19404 > 00:00:25   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:17:10 verbose #19405 >     "nbconvert",
00:17:10 verbose #19406 >     "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb",
00:17:10 verbose #19407 >     "--to",
00:17:10 verbose #19408 >     "html",
00:17:10 verbose #19409 >     "--HTMLExporter.theme=dark",
00:17:10 verbose #19410 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:10 verbose #19411 > 00:00:25 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb to html
00:17:10 verbose #19412 > 00:00:25 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:17:10 verbose #19413 > 00:00:25 verbose #7 !   validate(nb)
00:17:11 verbose #19414 > 00:00:26 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:17:11 verbose #19415 > 00:00:26 verbose #9 !   return _pygments_highlight(
00:17:12 verbose #19416 > 00:00:27 verbose #10 ! [NbConvertApp] Writing 594343 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.html
00:17:12 verbose #19417 > 00:00:27 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 910 }
00:17:12 verbose #19418 > 00:00:27   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 910 }
00:17:12 verbose #19419 > 00:00:27   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:17:12 verbose #19420 >     "-c",
00:17:12 verbose #19421 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:17:12 verbose #19422 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:12 verbose #19423 > 00:00:27 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:17:12 verbose #19424 > 00:00:27   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:17:12 verbose #19425 > 00:00:27   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 124886 }
00:17:12   debug #19426 runtime.execute_with_options_async / { exit_code = 0; output_length = 132109 }
00:17:12   debug #24 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path leptos/leptos.dib --retries 3
00:17:12   debug #19427 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path util.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:12 verbose #19428 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "util.dib", "--retries", "3"])) }
00:17:12 verbose #19429 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:17:12 verbose #19430 >     "repl",
00:17:12 verbose #19431 >     "--exit-after-run",
00:17:12 verbose #19432 >     "--run",
00:17:12 verbose #19433 >     "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib",
00:17:12 verbose #19434 >     "--output-path",
00:17:12 verbose #19435 >     "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb",
00:17:12 verbose #19436 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:17:14 verbose #19437 > >
00:17:14 verbose #19438 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:14 verbose #19439 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:14 verbose #19440 > > │ # util                                                                       │
00:17:14 verbose #19441 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:16 verbose #19442 > >
00:17:16 verbose #19443 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:16 verbose #19444 > > //// test
00:17:16 verbose #19445 > >
00:17:16 verbose #19446 > > open testing
00:17:17 verbose #19447 > >
00:17:17 verbose #19448 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:17 verbose #19449 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:17 verbose #19450 > > │ ### ski                                                                      │
00:17:17 verbose #19451 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:17 verbose #19452 > >
00:17:17 verbose #19453 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:17 verbose #19454 > > union rec ski =
00:17:17 verbose #19455 > >     | I
00:17:17 verbose #19456 > >     | K
00:17:17 verbose #19457 > >     | S
00:17:17 verbose #19458 > >     | App : ski * ski
00:17:17 verbose #19459 > >
00:17:17 verbose #19460 > > inl rec eval ski =
00:17:17 verbose #19461 > >     match ski with
00:17:17 verbose #19462 > >     | App (App (K, x), y) => x |> eval
00:17:17 verbose #19463 > >     | App (App (App (S, x), y), z) => App (App (x, z), App (y, z)) |> eval
00:17:17 verbose #19464 > >     | App (I, x) => x |> eval
00:17:17 verbose #19465 > >     | App (K, x) => App (K, eval x)
00:17:17 verbose #19466 > >     | App (f, x) => App (eval f, x) |> eval
00:17:17 verbose #19467 > >     | _ => ski
00:17:17 verbose #19468 > >
00:17:17 verbose #19469 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:17 verbose #19470 > > //// test
00:17:17 verbose #19471 > >
00:17:17 verbose #19472 > > eval I
00:17:17 verbose #19473 > > |> _assert_eq I
00:17:17 verbose #19474 > >
00:17:17 verbose #19475 > > App (I, I)
00:17:17 verbose #19476 > > |> eval
00:17:17 verbose #19477 > > |> _assert_eq I
00:17:17 verbose #19478 > >
00:17:17 verbose #19479 > > App (I, App (I, I))
00:17:17 verbose #19480 > > |> eval
00:17:17 verbose #19481 > > |> _assert_eq I
00:17:17 verbose #19482 > >
00:17:17 verbose #19483 > > App (App (I, I), I)
00:17:17 verbose #19484 > > |> eval
00:17:17 verbose #19485 > > |> _assert_eq I
00:17:17 verbose #19486 > >
00:17:17 verbose #19487 > > App (App (App (I, I), I), I)
00:17:17 verbose #19488 > > |> eval
00:17:17 verbose #19489 > > |> _assert_eq I
00:17:17 verbose #19490 > >
00:17:17 verbose #19491 > > eval K
00:17:17 verbose #19492 > > |> _assert_eq K
00:17:17 verbose #19493 > >
00:17:17 verbose #19494 > > App (K, I)
00:17:17 verbose #19495 > > |> eval
00:17:17 verbose #19496 > > |> _assert_eq (App (K, I))
00:17:17 verbose #19497 > >
00:17:17 verbose #19498 > > App (K, K)
00:17:17 verbose #19499 > > |> eval
00:17:17 verbose #19500 > > |> _assert_eq (App (K, K))
00:17:17 verbose #19501 > >
00:17:17 verbose #19502 > > App (App (K, I), K)
00:17:17 verbose #19503 > > |> eval
00:17:17 verbose #19504 > > |> _assert_eq I
00:17:17 verbose #19505 > >
00:17:17 verbose #19506 > > App (App (K, K), I)
00:17:17 verbose #19507 > > |> eval
00:17:17 verbose #19508 > > |> _assert_eq K
00:17:17 verbose #19509 > >
00:17:17 verbose #19510 > > App (App (App (App (K, K), I), S), K)
00:17:17 verbose #19511 > > |> eval
00:17:17 verbose #19512 > > |> _assert_eq S
00:17:17 verbose #19513 > >
00:17:17 verbose #19514 > > eval S
00:17:17 verbose #19515 > > |> _assert_eq S
00:17:17 verbose #19516 > >
00:17:17 verbose #19517 > > App (App (App (S, I), I), I)
00:17:17 verbose #19518 > > |> eval
00:17:17 verbose #19519 > > |> _assert_eq I
00:17:17 verbose #19520 > >
00:17:17 verbose #19521 > > App (App (App (S, K), K), I)
00:17:17 verbose #19522 > > |> eval
00:17:17 verbose #19523 > > |> _assert_eq I
00:17:17 verbose #19524 > >
00:17:17 verbose #19525 > > App (App (App (S, K), I), (App (App (K, I), S)))
00:17:17 verbose #19526 > > |> eval
00:17:17 verbose #19527 > > |> _assert_eq I
00:17:17 verbose #19528 > >
00:17:17 verbose #19529 > > App (App (K, S), App (I, App (App (App (S, K), S), I)))
00:17:17 verbose #19530 > > |> eval
00:17:17 verbose #19531 > > |> _assert_eq S
00:17:17 verbose #19532 > >
00:17:17 verbose #19533 > > App (App (App (S, K), I), K)
00:17:17 verbose #19534 > > |> eval
00:17:17 verbose #19535 > > |> _assert_eq K
00:17:18 verbose #19536 > >
00:17:18 verbose #19537 > > ╭─[ 1.06s - stdout ]───────────────────────────────────────────────────────────╮
00:17:18 verbose #19538 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0                                │
00:17:18 verbose #19539 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0                                │
00:17:18 verbose #19540 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0                                │
00:17:18 verbose #19541 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0                                │
00:17:18 verbose #19542 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0                                │
00:17:18 verbose #19543 > > │ __assert_eq / actual: UH0_1 / expected: UH0_1                                │
00:17:18 verbose #19544 > > │ __assert_eq / actual: UH0_3 (UH0_1, UH0_0) / expected: UH0_3 (UH0_1, UH0_0)  │
00:17:18 verbose #19545 > > │ __assert_eq / actual: UH0_3 (UH0_1, UH0_1) / expected: UH0_3 (UH0_1, UH0_1)  │
00:17:18 verbose #19546 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0                                │
00:17:18 verbose #19547 > > │ __assert_eq / actual: UH0_1 / expected: UH0_1                                │
00:17:18 verbose #19548 > > │ __assert_eq / actual: UH0_2 / expected: UH0_2                                │
00:17:18 verbose #19549 > > │ __assert_eq / actual: UH0_2 / expected: UH0_2                                │
00:17:18 verbose #19550 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0                                │
00:17:18 verbose #19551 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0                                │
00:17:18 verbose #19552 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0                                │
00:17:18 verbose #19553 > > │ __assert_eq / actual: UH0_2 / expected: UH0_2                                │
00:17:18 verbose #19554 > > │ __assert_eq / actual: UH0_1 / expected: UH0_1                                │
00:17:18 verbose #19555 > > │                                                                              │
00:17:18 verbose #19556 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:18 verbose #19557 > 00:00:05 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 4395 }
00:17:18 verbose #19558 > 00:00:05   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:17:18 verbose #19559 >     "nbconvert",
00:17:18 verbose #19560 >     "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb",
00:17:18 verbose #19561 >     "--to",
00:17:18 verbose #19562 >     "html",
00:17:18 verbose #19563 >     "--HTMLExporter.theme=dark",
00:17:18 verbose #19564 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:18 verbose #19565 > 00:00:06 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb to html
00:17:18 verbose #19566 > 00:00:06 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:17:18 verbose #19567 > 00:00:06 verbose #7 !   validate(nb)
00:17:19 verbose #19568 > 00:00:06 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:17:19 verbose #19569 > 00:00:06 verbose #9 !   return _pygments_highlight(
00:17:19 verbose #19570 > 00:00:06 verbose #10 ! [NbConvertApp] Writing 284330 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/util.dib.html
00:17:19 verbose #19571 > 00:00:06 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 }
00:17:19 verbose #19572 > 00:00:06   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 }
00:17:19 verbose #19573 > 00:00:06   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:17:19 verbose #19574 >     "-c",
00:17:19 verbose #19575 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:17:19 verbose #19576 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:19 verbose #19577 > 00:00:07 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:17:19 verbose #19578 > 00:00:07   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:17:19 verbose #19579 > 00:00:07   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 5346 }
00:17:19   debug #19580 runtime.execute_with_options_async / { exit_code = 0; output_length = 8410 }
00:17:19   debug #25 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path util.dib --retries 3
00:17:19   debug #19581 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path platform.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:19 verbose #19582 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "platform.dib", "--retries", "3"])) }
00:17:19 verbose #19583 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:17:19 verbose #19584 >     "repl",
00:17:19 verbose #19585 >     "--exit-after-run",
00:17:19 verbose #19586 >     "--run",
00:17:19 verbose #19587 >     "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib",
00:17:19 verbose #19588 >     "--output-path",
00:17:19 verbose #19589 >     "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb",
00:17:19 verbose #19590 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:17:21 verbose #19591 > >
00:17:21 verbose #19592 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:21 verbose #19593 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:21 verbose #19594 > > │ # platform                                                                   │
00:17:21 verbose #19595 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:23 verbose #19596 > >
00:17:23 verbose #19597 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:23 verbose #19598 > > open rust.rust_operators
00:17:24 verbose #19599 > >
00:17:24 verbose #19600 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:24 verbose #19601 > > //// test
00:17:24 verbose #19602 > >
00:17:24 verbose #19603 > > open testing
00:17:24 verbose #19604 > >
00:17:24 verbose #19605 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:24 verbose #19606 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:24 verbose #19607 > > │ ## fsharp                                                                    │
00:17:24 verbose #19608 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:24 verbose #19609 > >
00:17:24 verbose #19610 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:24 verbose #19611 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:24 verbose #19612 > > │ ### os_platform                                                              │
00:17:24 verbose #19613 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:24 verbose #19614 > >
00:17:24 verbose #19615 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:24 verbose #19616 > > nominal os_platform' = $'System.Runtime.InteropServices.OSPlatform'
00:17:24 verbose #19617 > >
00:17:24 verbose #19618 > > union os_platform =
00:17:24 verbose #19619 > >     | FreeBSD
00:17:24 verbose #19620 > >     | Linux
00:17:24 verbose #19621 > >     | OSX
00:17:24 verbose #19622 > >     | Windows
00:17:24 verbose #19623 > >
00:17:24 verbose #19624 > > inl os_platform = function
00:17:24 verbose #19625 > >     | FreeBSD => $'`os_platform'.FreeBSD' : os_platform'
00:17:24 verbose #19626 > >     | Linux => $'`os_platform'.Linux' : os_platform'
00:17:24 verbose #19627 > >     | OSX => $'`os_platform'.OSX' : os_platform'
00:17:24 verbose #19628 > >     | Windows => $'`os_platform'.Windows' : os_platform'
00:17:24 verbose #19629 > >
00:17:24 verbose #19630 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:24 verbose #19631 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:24 verbose #19632 > > │ ### run_platform                                                             │
00:17:24 verbose #19633 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:24 verbose #19634 > >
00:17:24 verbose #19635 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:24 verbose #19636 > > inl run_platform forall t. (fn : os_platform -> (() -> t)) : t =
00:17:24 verbose #19637 > >     inl result = dyn true
00:17:24 verbose #19638 > >     $'let mutable _!result : `t option = None '
00:17:24 verbose #19639 > >     $'\n#if _FREEBSD'
00:17:24 verbose #19640 > >     fn FreeBSD () |> emit_unit
00:17:24 verbose #19641 > >     $'#endif\n#if _LINUX'
00:17:24 verbose #19642 > >     fn Linux () |> emit_unit
00:17:24 verbose #19643 > >     $'#endif\n#if _OSX'
00:17:24 verbose #19644 > >     fn OSX () |> emit_unit
00:17:24 verbose #19645 > >     $'#endif\n#if _WINDOWS'
00:17:24 verbose #19646 > >     fn Windows () |> emit_unit
00:17:24 verbose #19647 > >     $'#endif'
00:17:24 verbose #19648 > >     $'|> fun x -> _!result <- Some x'
00:17:24 verbose #19649 > >     $'match _!result with Some x -> x | None -> failwith "runtime.run_platform
00:17:24 verbose #19650 > > _!result=None"'
00:17:24 verbose #19651 > >
00:17:24 verbose #19652 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:24 verbose #19653 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:24 verbose #19654 > > │ ### is_os_platform                                                           │
00:17:24 verbose #19655 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:24 verbose #19656 > >
00:17:24 verbose #19657 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:24 verbose #19658 > > inl is_os_platform (x : os_platform') : bool =
00:17:24 verbose #19659 > >     x |> $'System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform'
00:17:24 verbose #19660 > >
00:17:24 verbose #19661 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:24 verbose #19662 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:24 verbose #19663 > > │ ### is_windows'                                                              │
00:17:24 verbose #19664 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:24 verbose #19665 > >
00:17:24 verbose #19666 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:24 verbose #19667 > > inl is_windows' () : bool =
00:17:24 verbose #19668 > >     run_platform function
00:17:24 verbose #19669 > >         | Windows => fun () => true
00:17:24 verbose #19670 > >         | _ => fun () => false
00:17:24 verbose #19671 > >
00:17:24 verbose #19672 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:24 verbose #19673 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:24 verbose #19674 > > │ ## platform                                                                  │
00:17:24 verbose #19675 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:24 verbose #19676 > >
00:17:24 verbose #19677 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:24 verbose #19678 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:24 verbose #19679 > > │ ### is_windows                                                               │
00:17:24 verbose #19680 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:24 verbose #19681 > >
00:17:24 verbose #19682 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:24 verbose #19683 > > inl is_windows () : bool =
00:17:24 verbose #19684 > >     run_target function
00:17:24 verbose #19685 > >         | Rust _ => fun () =>
00:17:24 verbose #19686 > >             !\($'"cfg\!(windows)"')
00:17:24 verbose #19687 > >         | Fsharp _ => fun () =>
00:17:24 verbose #19688 > >             Windows |> os_platform |> is_os_platform
00:17:24 verbose #19689 > >         | target => fun () => failwith $'$"platform.is_windows / target:
00:17:24 verbose #19690 > > {!target}"'
00:17:24 verbose #19691 > >
00:17:24 verbose #19692 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:24 verbose #19693 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:24 verbose #19694 > > │ ### get_executable_suffix                                                    │
00:17:24 verbose #19695 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:24 verbose #19696 > >
00:17:24 verbose #19697 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:24 verbose #19698 > > inl get_executable_suffix () =
00:17:24 verbose #19699 > >     if is_windows ()
00:17:24 verbose #19700 > >     then ".exe"
00:17:24 verbose #19701 > >     else ""
00:17:25 verbose #19702 > >
00:17:25 verbose #19703 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:25 verbose #19704 > > //// test
00:17:25 verbose #19705 > >
00:17:25 verbose #19706 > > get_executable_suffix ()
00:17:25 verbose #19707 > >
00:17:25 verbose #19708 > >
00:17:25 verbose #19709 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:25 verbose #19710 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:25 verbose #19711 > > │ ## main                                                                      │
00:17:25 verbose #19712 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:25 verbose #19713 > >
00:17:25 verbose #19714 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:25 verbose #19715 > > inl main () =
00:17:25 verbose #19716 > >     $'let is_windows () = !is_windows ()' : ()
00:17:25 verbose #19717 > >     $'let get_executable_suffix () = !get_executable_suffix ()' : ()
00:17:26 verbose #19718 > 00:00:06 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 6685 }
00:17:26 verbose #19719 > 00:00:06   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:17:26 verbose #19720 >     "nbconvert",
00:17:26 verbose #19721 >     "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb",
00:17:26 verbose #19722 >     "--to",
00:17:26 verbose #19723 >     "html",
00:17:26 verbose #19724 >     "--HTMLExporter.theme=dark",
00:17:26 verbose #19725 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:26 verbose #19726 > 00:00:07 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb to html
00:17:26 verbose #19727 > 00:00:07 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:17:26 verbose #19728 > 00:00:07 verbose #7 !   validate(nb)
00:17:27 verbose #19729 > 00:00:07 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:17:27 verbose #19730 > 00:00:07 verbose #9 !   return _pygments_highlight(
00:17:27 verbose #19731 > 00:00:07 verbose #10 ! [NbConvertApp] Writing 288024 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.html
00:17:27 verbose #19732 > 00:00:07 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 900 }
00:17:27 verbose #19733 > 00:00:07   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 900 }
00:17:27 verbose #19734 > 00:00:07   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:17:27 verbose #19735 >     "-c",
00:17:27 verbose #19736 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:17:27 verbose #19737 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:27 verbose #19738 > 00:00:08 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:17:27 verbose #19739 > 00:00:08   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:17:27 verbose #19740 > 00:00:08   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 7644 }
00:17:27   debug #19741 runtime.execute_with_options_async / { exit_code = 0; output_length = 10758 }
00:17:27   debug #26 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path platform.dib --retries 3
00:17:27   debug #19742 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path stream.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:27 verbose #19743 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "stream.dib", "--retries", "3"])) }
00:17:27 verbose #19744 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:17:27 verbose #19745 >     "repl",
00:17:27 verbose #19746 >     "--exit-after-run",
00:17:27 verbose #19747 >     "--run",
00:17:27 verbose #19748 >     "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib",
00:17:27 verbose #19749 >     "--output-path",
00:17:27 verbose #19750 >     "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb",
00:17:27 verbose #19751 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:17:29 verbose #19752 > >
00:17:29 verbose #19753 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:29 verbose #19754 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:29 verbose #19755 > > │ # stream                                                                     │
00:17:29 verbose #19756 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:31 verbose #19757 > >
00:17:31 verbose #19758 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:31 verbose #19759 > > open rust.rust_operators
00:17:32 verbose #19760 > >
00:17:32 verbose #19761 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:32 verbose #19762 > > //// test
00:17:32 verbose #19763 > >
00:17:32 verbose #19764 > > open testing
00:17:32 verbose #19765 > >
00:17:32 verbose #19766 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:32 verbose #19767 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:32 verbose #19768 > > │ ## stream                                                                    │
00:17:32 verbose #19769 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:32 verbose #19770 > >
00:17:32 verbose #19771 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:32 verbose #19772 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:32 verbose #19773 > > │ ### stream                                                                   │
00:17:32 verbose #19774 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:32 verbose #19775 > >
00:17:32 verbose #19776 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:32 verbose #19777 > > union rec stream t =
00:17:32 verbose #19778 > >     | StreamCons : t * (() -> stream t)
00:17:32 verbose #19779 > >     | StreamNil
00:17:32 verbose #19780 > >
00:17:32 verbose #19781 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:32 verbose #19782 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:32 verbose #19783 > > │ ### fold                                                                     │
00:17:32 verbose #19784 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:32 verbose #19785 > >
00:17:32 verbose #19786 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:32 verbose #19787 > > inl fold fn init s =
00:17:32 verbose #19788 > >     inl rec body acc = function
00:17:32 verbose #19789 > >         | StreamCons (st, fn') => loop (fn acc st) (fn' ())
00:17:32 verbose #19790 > >         | StreamNil => acc
00:17:32 verbose #19791 > >     and inl loop acc = join_body body acc
00:17:32 verbose #19792 > >     loop init s
00:17:32 verbose #19793 > >
00:17:32 verbose #19794 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:32 verbose #19795 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:32 verbose #19796 > > │ ### fold_back                                                                │
00:17:32 verbose #19797 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:32 verbose #19798 > >
00:17:32 verbose #19799 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:32 verbose #19800 > > inl fold_back fn s init =
00:17:32 verbose #19801 > >     inl rec body acc = function
00:17:32 verbose #19802 > >         | StreamCons (st, fn') => fn st (loop acc (fn' ()))
00:17:32 verbose #19803 > >         | StreamNil => acc
00:17:32 verbose #19804 > >     and inl loop acc = join_body body acc
00:17:32 verbose #19805 > >     loop init s
00:17:32 verbose #19806 > >
00:17:32 verbose #19807 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:32 verbose #19808 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:32 verbose #19809 > > │ ### to_list                                                                  │
00:17:32 verbose #19810 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:32 verbose #19811 > >
00:17:32 verbose #19812 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:32 verbose #19813 > > inl to_list s =
00:17:32 verbose #19814 > >     (s, [[]])
00:17:32 verbose #19815 > >     ||> fold_back fun x acc =>
00:17:32 verbose #19816 > >         x :: acc
00:17:32 verbose #19817 > >
00:17:32 verbose #19818 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:32 verbose #19819 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:32 verbose #19820 > > │ ### rev                                                                      │
00:17:32 verbose #19821 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:32 verbose #19822 > >
00:17:32 verbose #19823 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:32 verbose #19824 > > inl rev s =
00:17:32 verbose #19825 > >     (StreamNil, s)
00:17:32 verbose #19826 > >     ||> fold fun s x =>
00:17:32 verbose #19827 > >         StreamCons (x, fun () => s)
00:17:33 verbose #19828 > >
00:17:33 verbose #19829 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:33 verbose #19830 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:33 verbose #19831 > > │ ### from_list                                                                │
00:17:33 verbose #19832 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:33 verbose #19833 > >
00:17:33 verbose #19834 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:33 verbose #19835 > > inl from_list list =
00:17:33 verbose #19836 > >     (list, StreamNil)
00:17:33 verbose #19837 > >     ||> listm.foldBack fun x acc =>
00:17:33 verbose #19838 > >         StreamCons (x, fun () => acc)
00:17:33 verbose #19839 > >
00:17:33 verbose #19840 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:33 verbose #19841 > > //// test
00:17:33 verbose #19842 > >
00:17:33 verbose #19843 > > listm.init 3i32 id
00:17:33 verbose #19844 > > |> from_list
00:17:33 verbose #19845 > > |> rev
00:17:33 verbose #19846 > > |> to_list
00:17:33 verbose #19847 > > |> _assert_eq [[ 2; 1; 0 ]]
00:17:33 verbose #19848 > >
00:17:33 verbose #19849 > > ╭─[ 792.93ms - stdout ]────────────────────────────────────────────────────────╮
00:17:33 verbose #19850 > > │ __assert_eq / actual: UH0_1 (2, UH0_1 (1, UH0_1 (0, UH0_0))) / expected:     │
00:17:33 verbose #19851 > > │ UH0_1 (2, UH0_1 (1, UH0_1 (0, UH0_0)))                                       │
00:17:33 verbose #19852 > > │                                                                              │
00:17:33 verbose #19853 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:33 verbose #19854 > >
00:17:33 verbose #19855 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:33 verbose #19856 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:33 verbose #19857 > > │ ### try_item                                                                 │
00:17:33 verbose #19858 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:33 verbose #19859 > >
00:17:33 verbose #19860 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:33 verbose #19861 > > inl try_item i s =
00:17:33 verbose #19862 > >     inl rec body i = function
00:17:33 verbose #19863 > >         | StreamCons (x, _) when i <= 0 => Some x
00:17:33 verbose #19864 > >         | StreamCons (_, fn) => loop (i - 1) (fn ())
00:17:33 verbose #19865 > >         | StreamNil => None
00:17:33 verbose #19866 > >     and inl loop acc s' =
00:17:33 verbose #19867 > >         match var_is acc, var_is s' with
00:17:33 verbose #19868 > >         | false, false => body acc s'
00:17:33 verbose #19869 > >         | _ =>
00:17:33 verbose #19870 > >             inl acc = dyn acc
00:17:33 verbose #19871 > >             inl s' = dyn s'
00:17:33 verbose #19872 > >             join body acc s'
00:17:33 verbose #19873 > >     loop i s
00:17:33 verbose #19874 > >
00:17:33 verbose #19875 > > inl item i =
00:17:33 verbose #19876 > >     try_item i >> optionm.value
00:17:33 verbose #19877 > >
00:17:33 verbose #19878 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:33 verbose #19879 > > //// test
00:17:33 verbose #19880 > >
00:17:33 verbose #19881 > > listm.init 10i32 id
00:17:33 verbose #19882 > > |> from_list
00:17:33 verbose #19883 > > |> item 9i32
00:17:33 verbose #19884 > > |> _assert_eq 9
00:17:34 verbose #19885 > >
00:17:34 verbose #19886 > > ╭─[ 94.40ms - stdout ]─────────────────────────────────────────────────────────╮
00:17:34 verbose #19887 > > │ __assert_eq / actual: 9 / expected: 9                                        │
00:17:34 verbose #19888 > > │                                                                              │
00:17:34 verbose #19889 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:34 verbose #19890 > >
00:17:34 verbose #19891 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:34 verbose #19892 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:34 verbose #19893 > > │ ### new_infinite_stream                                                      │
00:17:34 verbose #19894 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:34 verbose #19895 > >
00:17:34 verbose #19896 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:34 verbose #19897 > > inl new_infinite_stream fn =
00:17:34 verbose #19898 > >     inl rec loop n =
00:17:34 verbose #19899 > >         StreamCons (fn n, fun () => loop (n + 1))
00:17:34 verbose #19900 > >     loop 0
00:17:34 verbose #19901 > >
00:17:34 verbose #19902 > > inl new_infinite_stream_ fn =
00:17:34 verbose #19903 > >     let rec loop n =
00:17:34 verbose #19904 > >         StreamCons (fn n, fun () => loop (n + 1))
00:17:34 verbose #19905 > >     loop 0
00:17:34 verbose #19906 > >
00:17:34 verbose #19907 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:34 verbose #19908 > > //// test
00:17:34 verbose #19909 > >
00:17:34 verbose #19910 > > new_infinite_stream print_and_return
00:17:34 verbose #19911 > > |> item 4i32
00:17:34 verbose #19912 > > |> _assert_eq 4i32
00:17:34 verbose #19913 > >
00:17:34 verbose #19914 > > ╭─[ 120.01ms - stdout ]────────────────────────────────────────────────────────╮
00:17:34 verbose #19915 > > │ print_and_return / x: 0                                                      │
00:17:34 verbose #19916 > > │ print_and_return / x: 1                                                      │
00:17:34 verbose #19917 > > │ print_and_return / x: 2                                                      │
00:17:34 verbose #19918 > > │ print_and_return / x: 3                                                      │
00:17:34 verbose #19919 > > │ print_and_return / x: 4                                                      │
00:17:34 verbose #19920 > > │ __assert_eq / actual: 4 / expected: 4                                        │
00:17:34 verbose #19921 > > │                                                                              │
00:17:34 verbose #19922 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:34 verbose #19923 > >
00:17:34 verbose #19924 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:34 verbose #19925 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:34 verbose #19926 > > │ ### new_finite_stream                                                        │
00:17:34 verbose #19927 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:34 verbose #19928 > >
00:17:34 verbose #19929 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:34 verbose #19930 > > inl new_finite_stream fn max =
00:17:34 verbose #19931 > >     inl rec loop n =
00:17:34 verbose #19932 > >         if n >= max
00:17:34 verbose #19933 > >         then StreamNil
00:17:34 verbose #19934 > >         else StreamCons (fn n, fun () => loop (n + 1))
00:17:34 verbose #19935 > >     loop 0
00:17:34 verbose #19936 > >
00:17:34 verbose #19937 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:34 verbose #19938 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:34 verbose #19939 > > │ ### memoize                                                                  │
00:17:34 verbose #19940 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:34 verbose #19941 > >
00:17:34 verbose #19942 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:34 verbose #19943 > > union memoized_stream t =
00:17:34 verbose #19944 > >     | NotComputed : () -> stream t
00:17:34 verbose #19945 > >     | Computed : stream t
00:17:34 verbose #19946 > >
00:17:34 verbose #19947 > > inl memoize s =
00:17:34 verbose #19948 > >     inl rec body s =
00:17:34 verbose #19949 > >         inl state = mut (NotComputed s)
00:17:34 verbose #19950 > >         fun () =>
00:17:34 verbose #19951 > >             match *state with
00:17:34 verbose #19952 > >             | Computed x => x
00:17:34 verbose #19953 > >             | NotComputed fn =>
00:17:34 verbose #19954 > >                 inl new_state =
00:17:34 verbose #19955 > >                     match fn () with
00:17:34 verbose #19956 > >                     | StreamNil => StreamNil
00:17:34 verbose #19957 > >                     | StreamCons (x, fn) => StreamCons (x, loop fn)
00:17:34 verbose #19958 > >                 state <- Computed new_state
00:17:34 verbose #19959 > >                 new_state
00:17:34 verbose #19960 > >     and inl loop s' = join_body_unit body s s'
00:17:34 verbose #19961 > >     loop (fun () => s)
00:17:34 verbose #19962 > >
00:17:34 verbose #19963 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:34 verbose #19964 > > //// test
00:17:34 verbose #19965 > >
00:17:34 verbose #19966 > > inl memo_stream = new_finite_stream print_and_return 10 |> memoize
00:17:34 verbose #19967 > >
00:17:34 verbose #19968 > > memo_stream ()
00:17:34 verbose #19969 > > |> item 3i32
00:17:34 verbose #19970 > > |> _assert_eq 3i32
00:17:34 verbose #19971 > >
00:17:34 verbose #19972 > > memo_stream ()
00:17:34 verbose #19973 > > |> item 5i32
00:17:34 verbose #19974 > > |> _assert_eq 5i32
00:17:34 verbose #19975 > >
00:17:34 verbose #19976 > > ╭─[ 365.04ms - stdout ]────────────────────────────────────────────────────────╮
00:17:34 verbose #19977 > > │ print_and_return / x: 0                                                      │
00:17:34 verbose #19978 > > │ print_and_return / x: 1                                                      │
00:17:34 verbose #19979 > > │ print_and_return / x: 2                                                      │
00:17:34 verbose #19980 > > │ print_and_return / x: 3                                                      │
00:17:34 verbose #19981 > > │ __assert_eq / actual: 3 / expected: 3                                        │
00:17:34 verbose #19982 > > │ print_and_return / x: 4                                                      │
00:17:34 verbose #19983 > > │ print_and_return / x: 5                                                      │
00:17:34 verbose #19984 > > │ __assert_eq / actual: 5 / expected: 5                                        │
00:17:34 verbose #19985 > > │                                                                              │
00:17:34 verbose #19986 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:34 verbose #19987 > >
00:17:34 verbose #19988 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:34 verbose #19989 > > //// test
00:17:34 verbose #19990 > >
00:17:34 verbose #19991 > > inl memo_stream = new_infinite_stream_ print_and_return |> memoize
00:17:34 verbose #19992 > >
00:17:34 verbose #19993 > > memo_stream ()
00:17:34 verbose #19994 > > |> item 3i32
00:17:34 verbose #19995 > > |> _assert_eq 3i32
00:17:34 verbose #19996 > >
00:17:34 verbose #19997 > > memo_stream ()
00:17:34 verbose #19998 > > |> item 5i32
00:17:34 verbose #19999 > > |> _assert_eq 5i32
00:17:34 verbose #20000 > >
00:17:34 verbose #20001 > > ╭─[ 158.13ms - stdout ]────────────────────────────────────────────────────────╮
00:17:34 verbose #20002 > > │ print_and_return / x: 0                                                      │
00:17:34 verbose #20003 > > │ print_and_return / x: 1                                                      │
00:17:34 verbose #20004 > > │ print_and_return / x: 2                                                      │
00:17:34 verbose #20005 > > │ print_and_return / x: 3                                                      │
00:17:34 verbose #20006 > > │ __assert_eq / actual: 3 / expected: 3                                        │
00:17:34 verbose #20007 > > │ print_and_return / x: 4                                                      │
00:17:34 verbose #20008 > > │ print_and_return / x: 5                                                      │
00:17:34 verbose #20009 > > │ __assert_eq / actual: 5 / expected: 5                                        │
00:17:34 verbose #20010 > > │                                                                              │
00:17:34 verbose #20011 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:34 verbose #20012 > >
00:17:34 verbose #20013 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:34 verbose #20014 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:34 verbose #20015 > > │ ### unfold                                                                   │
00:17:34 verbose #20016 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:34 verbose #20017 > >
00:17:34 verbose #20018 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:34 verbose #20019 > > inl unfold f x0 =
00:17:34 verbose #20020 > >     inl rec body x =
00:17:34 verbose #20021 > >         match f x with
00:17:34 verbose #20022 > >         | Some (x', y) => StreamCons (x', fun () => loop y)
00:17:34 verbose #20023 > >         | None => StreamNil
00:17:34 verbose #20024 > >     and inl loop x = join_body_unit body x0 x
00:17:34 verbose #20025 > >     loop x0
00:17:35 verbose #20026 > >
00:17:35 verbose #20027 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:35 verbose #20028 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:35 verbose #20029 > > │ ### iterate                                                                  │
00:17:35 verbose #20030 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:35 verbose #20031 > >
00:17:35 verbose #20032 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:35 verbose #20033 > > inl iterate f =
00:17:35 verbose #20034 > >     unfold (fun x => Some (x, f x))
00:17:35 verbose #20035 > >
00:17:35 verbose #20036 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:35 verbose #20037 > > //// test
00:17:35 verbose #20038 > >
00:17:35 verbose #20039 > > iterate ((*) 2) 1i32
00:17:35 verbose #20040 > > |> item 10i32
00:17:35 verbose #20041 > > |> _assert_eq 1024
00:17:35 verbose #20042 > >
00:17:35 verbose #20043 > > ╭─[ 96.64ms - stdout ]─────────────────────────────────────────────────────────╮
00:17:35 verbose #20044 > > │ __assert_eq / actual: 1024 / expected: 1024                                  │
00:17:35 verbose #20045 > > │                                                                              │
00:17:35 verbose #20046 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:35 verbose #20047 > >
00:17:35 verbose #20048 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:35 verbose #20049 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:35 verbose #20050 > > │ ### take_while                                                               │
00:17:35 verbose #20051 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:35 verbose #20052 > >
00:17:35 verbose #20053 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:35 verbose #20054 > > inl take_while cond s =
00:17:35 verbose #20055 > >     inl rec body i = function
00:17:35 verbose #20056 > >         | StreamCons (st, fn) when cond st i => StreamCons (st, fun () => loop
00:17:35 verbose #20057 > > (i + 1) (fn ()))
00:17:35 verbose #20058 > >         | _ => StreamNil
00:17:35 verbose #20059 > >     and inl loop i = join_body body i
00:17:35 verbose #20060 > >     loop 0 s
00:17:35 verbose #20061 > >
00:17:35 verbose #20062 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:35 verbose #20063 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:35 verbose #20064 > > │ ### sum                                                                      │
00:17:35 verbose #20065 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:35 verbose #20066 > >
00:17:35 verbose #20067 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:35 verbose #20068 > > inl sum seq =
00:17:35 verbose #20069 > >     seq |> fold (+) 0
00:17:35 verbose #20070 > >
00:17:35 verbose #20071 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:35 verbose #20072 > > //// test
00:17:35 verbose #20073 > >
00:17:35 verbose #20074 > > listm.init 10i32 id
00:17:35 verbose #20075 > > |> from_list
00:17:35 verbose #20076 > > |> sum
00:17:35 verbose #20077 > > |> _assert_eq 45
00:17:35 verbose #20078 > >
00:17:35 verbose #20079 > > ╭─[ 101.84ms - stdout ]────────────────────────────────────────────────────────╮
00:17:35 verbose #20080 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:17:35 verbose #20081 > > │                                                                              │
00:17:35 verbose #20082 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:35 verbose #20083 > >
00:17:35 verbose #20084 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:35 verbose #20085 > > //// test
00:17:35 verbose #20086 > >
00:17:35 verbose #20087 > > new_finite_stream print_and_return 10i32
00:17:35 verbose #20088 > > |> take_while (fun n (_ : i32) => n < 5)
00:17:35 verbose #20089 > > |> sum
00:17:35 verbose #20090 > > |> _assert_eq 10
00:17:35 verbose #20091 > >
00:17:35 verbose #20092 > > ╭─[ 115.06ms - stdout ]────────────────────────────────────────────────────────╮
00:17:35 verbose #20093 > > │ print_and_return / x: 0                                                      │
00:17:35 verbose #20094 > > │ print_and_return / x: 1                                                      │
00:17:35 verbose #20095 > > │ print_and_return / x: 2                                                      │
00:17:35 verbose #20096 > > │ print_and_return / x: 3                                                      │
00:17:35 verbose #20097 > > │ print_and_return / x: 4                                                      │
00:17:35 verbose #20098 > > │ print_and_return / x: 5                                                      │
00:17:35 verbose #20099 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:17:35 verbose #20100 > > │                                                                              │
00:17:35 verbose #20101 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:35 verbose #20102 > >
00:17:35 verbose #20103 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:35 verbose #20104 > > //// test
00:17:35 verbose #20105 > >
00:17:35 verbose #20106 > > new_infinite_stream print_and_return
00:17:35 verbose #20107 > > |> take_while (fun n (_ : i32) => n < 5i32)
00:17:35 verbose #20108 > > |> sum
00:17:35 verbose #20109 > > |> _assert_eq 10
00:17:35 verbose #20110 > >
00:17:35 verbose #20111 > > ╭─[ 109.47ms - stdout ]────────────────────────────────────────────────────────╮
00:17:35 verbose #20112 > > │ print_and_return / x: 0                                                      │
00:17:35 verbose #20113 > > │ print_and_return / x: 1                                                      │
00:17:35 verbose #20114 > > │ print_and_return / x: 2                                                      │
00:17:35 verbose #20115 > > │ print_and_return / x: 3                                                      │
00:17:35 verbose #20116 > > │ print_and_return / x: 4                                                      │
00:17:35 verbose #20117 > > │ print_and_return / x: 5                                                      │
00:17:35 verbose #20118 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:17:35 verbose #20119 > > │                                                                              │
00:17:35 verbose #20120 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:35 verbose #20121 > >
00:17:35 verbose #20122 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:35 verbose #20123 > > //// test
00:17:35 verbose #20124 > >
00:17:35 verbose #20125 > > iterate ((*) 6) 1i32
00:17:35 verbose #20126 > > |> take_while (fun _ i => i <= 7i32)
00:17:35 verbose #20127 > > |> to_list
00:17:35 verbose #20128 > > |> _assert_eq [[ 1i32; 6; 36; 216; 1296; 7776; 46656; 279936 ]]
00:17:35 verbose #20129 > >
00:17:35 verbose #20130 > > ╭─[ 146.19ms - stdout ]────────────────────────────────────────────────────────╮
00:17:35 verbose #20131 > > │ __assert_eq / actual: UH0_1                                                  │
00:17:35 verbose #20132 > > │   (1,                                                                        │
00:17:35 verbose #20133 > > │    UH0_1                                                                     │
00:17:35 verbose #20134 > > │      (6,                                                                     │
00:17:35 verbose #20135 > > │       UH0_1                                                                  │
00:17:35 verbose #20136 > > │         (36,                                                                 │
00:17:35 verbose #20137 > > │          UH0_1                                                               │
00:17:35 verbose #20138 > > │            (216,                                                             │
00:17:35 verbose #20139 > > │             UH0_1 (1296, UH0_1 (7776, UH0_1 (46656, UH0_1 (279936,           │
00:17:35 verbose #20140 > > │ UH0_0)))))))) / expected: UH0_1                                              │
00:17:35 verbose #20141 > > │   (1,                                                                        │
00:17:35 verbose #20142 > > │    UH0_1                                                                     │
00:17:35 verbose #20143 > > │      (6,                                                                     │
00:17:35 verbose #20144 > > │       UH0_1                                                                  │
00:17:35 verbose #20145 > > │         (36,                                                                 │
00:17:35 verbose #20146 > > │          UH0_1                                                               │
00:17:35 verbose #20147 > > │            (216,                                                             │
00:17:35 verbose #20148 > > │             UH0_1 (1296, UH0_1 (7776, UH0_1 (46656, UH0_1 (279936,           │
00:17:35 verbose #20149 > > │ UH0_0))))))))                                                                │
00:17:35 verbose #20150 > > │                                                                              │
00:17:35 verbose #20151 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:35 verbose #20152 > >
00:17:35 verbose #20153 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:35 verbose #20154 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:35 verbose #20155 > > │ ### indexed                                                                  │
00:17:35 verbose #20156 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:35 verbose #20157 > >
00:17:35 verbose #20158 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:35 verbose #20159 > > inl indexed s =
00:17:35 verbose #20160 > >     ((StreamNil, 0), s)
00:17:35 verbose #20161 > >     ||> fold fun (acc, i) x =>
00:17:35 verbose #20162 > >         StreamCons ((i, x), fun () => acc), i + 1
00:17:35 verbose #20163 > >     |> fst
00:17:35 verbose #20164 > >     |> rev
00:17:36 verbose #20165 > >
00:17:36 verbose #20166 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:36 verbose #20167 > > //// test
00:17:36 verbose #20168 > >
00:17:36 verbose #20169 > > listm.init 10i32 ((*) 2)
00:17:36 verbose #20170 > > |> from_list
00:17:36 verbose #20171 > > |> indexed
00:17:36 verbose #20172 > > |> item 5i32
00:17:36 verbose #20173 > > |> _assert_eq (5i32, 10i32)
00:17:36 verbose #20174 > >
00:17:36 verbose #20175 > > ╭─[ 105.17ms - stdout ]────────────────────────────────────────────────────────╮
00:17:36 verbose #20176 > > │ __assert_eq / actual: struct (5, 10) / expected: struct (5, 10)              │
00:17:36 verbose #20177 > > │                                                                              │
00:17:36 verbose #20178 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:36 verbose #20179 > >
00:17:36 verbose #20180 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:36 verbose #20181 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:36 verbose #20182 > > │ ### map                                                                      │
00:17:36 verbose #20183 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:36 verbose #20184 > >
00:17:36 verbose #20185 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:36 verbose #20186 > > inl map fn s =
00:17:36 verbose #20187 > >     (s, StreamNil)
00:17:36 verbose #20188 > >     ||> fold_back fun x acc =>
00:17:36 verbose #20189 > >         StreamCons (fn x, fun () => acc)
00:17:36 verbose #20190 > >
00:17:36 verbose #20191 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:36 verbose #20192 > > //// test
00:17:36 verbose #20193 > >
00:17:36 verbose #20194 > > listm.init 10i32 id
00:17:36 verbose #20195 > > |> from_list
00:17:36 verbose #20196 > > |> map ((*) 2)
00:17:36 verbose #20197 > > |> item 5i32
00:17:36 verbose #20198 > > |> _assert_eq 10i32
00:17:36 verbose #20199 > >
00:17:36 verbose #20200 > > ╭─[ 100.76ms - stdout ]────────────────────────────────────────────────────────╮
00:17:36 verbose #20201 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:17:36 verbose #20202 > > │                                                                              │
00:17:36 verbose #20203 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:36 verbose #20204 > >
00:17:36 verbose #20205 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:36 verbose #20206 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:36 verbose #20207 > > │ ### zip_with                                                                 │
00:17:36 verbose #20208 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:36 verbose #20209 > >
00:17:36 verbose #20210 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:36 verbose #20211 > > inl zip_with fn s1 s2 =
00:17:36 verbose #20212 > >     inl rec loop s1 s2 =
00:17:36 verbose #20213 > >         match s1, s2 with
00:17:36 verbose #20214 > >         | StreamCons (st1, fn1), StreamCons (st2, fn2) =>
00:17:36 verbose #20215 > >             StreamCons (fn st1 st2, fun () => loop (fn1 ()) (fn2 ()))
00:17:36 verbose #20216 > >         | StreamNil, _ | _, StreamNil => StreamNil
00:17:36 verbose #20217 > >     loop s1 s2
00:17:36 verbose #20218 > >
00:17:36 verbose #20219 > > inl zip_with_ fn s1 s2 =
00:17:36 verbose #20220 > >     let rec loop s1 s2 =
00:17:36 verbose #20221 > >         match s1, s2 with
00:17:36 verbose #20222 > >         | StreamCons (st1, fn1), StreamCons (st2, fn2) =>
00:17:36 verbose #20223 > >             StreamCons (fn st1 st2, fun () => loop (fn1 ()) (fn2 ()))
00:17:36 verbose #20224 > >         | StreamNil, _ | _, StreamNil => StreamNil
00:17:36 verbose #20225 > >     loop s1 s2
00:17:36 verbose #20226 > >
00:17:36 verbose #20227 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:36 verbose #20228 > > //// test
00:17:36 verbose #20229 > >
00:17:36 verbose #20230 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:17:36 verbose #20231 > > ||> zip_with (+)
00:17:36 verbose #20232 > > |> item 2i32
00:17:36 verbose #20233 > > |> _assert_eq 6
00:17:36 verbose #20234 > >
00:17:36 verbose #20235 > > ╭─[ 98.95ms - stdout ]─────────────────────────────────────────────────────────╮
00:17:36 verbose #20236 > > │ __assert_eq / actual: 6 / expected: 6                                        │
00:17:36 verbose #20237 > > │                                                                              │
00:17:36 verbose #20238 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:36 verbose #20239 > >
00:17:36 verbose #20240 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:36 verbose #20241 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:36 verbose #20242 > > │ ### zip                                                                      │
00:17:36 verbose #20243 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:36 verbose #20244 > >
00:17:36 verbose #20245 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:36 verbose #20246 > > inl zip s1 s2 =
00:17:36 verbose #20247 > >     zip_with pair s1 s2
00:17:36 verbose #20248 > >
00:17:36 verbose #20249 > > inl zip_ s1 s2 =
00:17:36 verbose #20250 > >     zip_with_ pair s1 s2
00:17:36 verbose #20251 > >
00:17:36 verbose #20252 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:36 verbose #20253 > > //// test
00:17:36 verbose #20254 > >
00:17:36 verbose #20255 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:17:36 verbose #20256 > > ||> zip
00:17:36 verbose #20257 > > |> item 5i32
00:17:36 verbose #20258 > > |> _assert_eq (5, 10)
00:17:36 verbose #20259 > >
00:17:36 verbose #20260 > > ╭─[ 100.86ms - stdout ]────────────────────────────────────────────────────────╮
00:17:36 verbose #20261 > > │ __assert_eq / actual: struct (5, 10) / expected: struct (5, 10)              │
00:17:36 verbose #20262 > > │                                                                              │
00:17:36 verbose #20263 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:36 verbose #20264 > >
00:17:36 verbose #20265 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:36 verbose #20266 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:36 verbose #20267 > > │ ### unzip                                                                    │
00:17:36 verbose #20268 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:36 verbose #20269 > >
00:17:36 verbose #20270 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:36 verbose #20271 > > inl unzip s =
00:17:36 verbose #20272 > >     inl rec body s =
00:17:36 verbose #20273 > >         match s with
00:17:36 verbose #20274 > >         | StreamCons ((x, y), fn) =>
00:17:36 verbose #20275 > >             inl xs, ys = loop (fn ())
00:17:36 verbose #20276 > >             StreamCons (x, fun () => xs), StreamCons (y, fun () => ys)
00:17:36 verbose #20277 > >         | StreamNil => pair StreamNil StreamNil
00:17:36 verbose #20278 > >     and inl loop x =
00:17:36 verbose #20279 > >         if var_is x |> not
00:17:36 verbose #20280 > >         then body x
00:17:36 verbose #20281 > >         else
00:17:36 verbose #20282 > >             inl x = dyn x
00:17:36 verbose #20283 > >             join body x
00:17:36 verbose #20284 > >     loop s
00:17:36 verbose #20285 > >
00:17:36 verbose #20286 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:36 verbose #20287 > > //// test
00:17:36 verbose #20288 > >
00:17:36 verbose #20289 > > listm.init 10i32 id
00:17:36 verbose #20290 > > |> listm.map (fun x => x, x)
00:17:36 verbose #20291 > > |> from_list
00:17:36 verbose #20292 > > |> unzip
00:17:36 verbose #20293 > > |> fun x, y =>
00:17:36 verbose #20294 > >     x |> sum
00:17:36 verbose #20295 > >     |> _assert_eq 45
00:17:36 verbose #20296 > >
00:17:36 verbose #20297 > >     y |> sum
00:17:36 verbose #20298 > >     |> _assert_eq 45
00:17:36 verbose #20299 > >
00:17:36 verbose #20300 > > ╭─[ 106.99ms - stdout ]────────────────────────────────────────────────────────╮
00:17:36 verbose #20301 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:17:36 verbose #20302 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:17:36 verbose #20303 > > │                                                                              │
00:17:36 verbose #20304 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:36 verbose #20305 > >
00:17:36 verbose #20306 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:36 verbose #20307 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:36 verbose #20308 > > │ ## rust                                                                      │
00:17:36 verbose #20309 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:36 verbose #20310 > >
00:17:36 verbose #20311 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:36 verbose #20312 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:36 verbose #20313 > > │ ### io_error                                                                 │
00:17:36 verbose #20314 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:36 verbose #20315 > >
00:17:36 verbose #20316 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:36 verbose #20317 > > nominal io_error =
00:17:36 verbose #20318 > >     `(
00:17:36 verbose #20319 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:17:36 verbose #20320 > > Fable.Core.Emit(\"std::io::Error\")>]]\n#endif\ntype std_io_Error = class end"
00:17:36 verbose #20321 > >         $'' : $'std_io_Error'
00:17:36 verbose #20322 > >     )
00:17:37 verbose #20323 > >
00:17:37 verbose #20324 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:37 verbose #20325 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:37 verbose #20326 > > │ ### buf_reader                                                               │
00:17:37 verbose #20327 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:37 verbose #20328 > >
00:17:37 verbose #20329 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:37 verbose #20330 > > nominal buf_reader t =
00:17:37 verbose #20331 > >     `(
00:17:37 verbose #20332 > >         backend_switch `(()) `({}) {
00:17:37 verbose #20333 > >             Fsharp =
00:17:37 verbose #20334 > >                 (fun () =>
00:17:37 verbose #20335 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:17:37 verbose #20336 > > Fable.Core.Emit(\"std::io::BufReader<$0>\")>]]\n#endif\ntype
00:17:37 verbose #20337 > > std_io_BufReader<'T> = class end"
00:17:37 verbose #20338 > >                 ) : () -> ()
00:17:37 verbose #20339 > >         }
00:17:37 verbose #20340 > >         $'' : $'std_io_BufReader<`t>'
00:17:37 verbose #20341 > >     )
00:17:37 verbose #20342 > >
00:17:37 verbose #20343 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:37 verbose #20344 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:37 verbose #20345 > > │ ### cursor                                                                   │
00:17:37 verbose #20346 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:37 verbose #20347 > >
00:17:37 verbose #20348 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:37 verbose #20349 > > nominal cursor t =
00:17:37 verbose #20350 > >     `(
00:17:37 verbose #20351 > >         backend_switch `(()) `({}) {
00:17:37 verbose #20352 > >             Fsharp =
00:17:37 verbose #20353 > >                 (fun () =>
00:17:37 verbose #20354 > >                     global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:17:37 verbose #20355 > > Fable.Core.Emit(\"std::io::Cursor<$0>\")>]]\n#endif\ntype std_io_Cursor<'T> =
00:17:37 verbose #20356 > > class end"
00:17:37 verbose #20357 > >                 ) : () -> ()
00:17:37 verbose #20358 > >         }
00:17:37 verbose #20359 > >         $'' : $'std_io_Cursor<`t>'
00:17:37 verbose #20360 > >     )
00:17:37 verbose #20361 > >
00:17:37 verbose #20362 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:37 verbose #20363 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:37 verbose #20364 > > │ ### async_buf_reader                                                         │
00:17:37 verbose #20365 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:37 verbose #20366 > >
00:17:37 verbose #20367 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:37 verbose #20368 > > nominal async_buf_reader t =
00:17:37 verbose #20369 > >     `(
00:17:37 verbose #20370 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:17:37 verbose #20371 > > Fable.Core.Emit(\"tokio::io::BufReader<$0>\")>]]\n#endif\ntype
00:17:37 verbose #20372 > > tokio_io_BufReader<'T> = class end"
00:17:37 verbose #20373 > >         $'' : $'tokio_io_BufReader<`t>'
00:17:37 verbose #20374 > >     )
00:17:37 verbose #20375 > >
00:17:37 verbose #20376 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:37 verbose #20377 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:37 verbose #20378 > > │ ### new_buf_reader                                                           │
00:17:37 verbose #20379 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:37 verbose #20380 > >
00:17:37 verbose #20381 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:37 verbose #20382 > > inl new_buf_reader forall t. (x : t) : buf_reader t =
00:17:37 verbose #20383 > >     !\($'"std::io::BufReader::new(!x)"')
00:17:37 verbose #20384 > >
00:17:37 verbose #20385 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:37 verbose #20386 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:37 verbose #20387 > > │ ### new_cursor                                                               │
00:17:37 verbose #20388 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:37 verbose #20389 > >
00:17:37 verbose #20390 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:37 verbose #20391 > > inl new_cursor forall t. (x : t) : cursor t =
00:17:37 verbose #20392 > >     !\($'"std::io::Cursor::new(!x)"')
00:17:37 verbose #20393 > >
00:17:37 verbose #20394 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:37 verbose #20395 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:37 verbose #20396 > > │ ### lines                                                                    │
00:17:37 verbose #20397 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:37 verbose #20398 > >
00:17:37 verbose #20399 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:37 verbose #20400 > > nominal lines t =
00:17:37 verbose #20401 > >     `(
00:17:37 verbose #20402 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:17:37 verbose #20403 > > Fable.Core.Emit(\"std::io::Lines<$0>\")>]]\n#endif\ntype std_io_Lines<'T> =
00:17:37 verbose #20404 > > class end"
00:17:37 verbose #20405 > >         $'' : $'std_io_Lines<`t>'
00:17:37 verbose #20406 > >     )
00:17:37 verbose #20407 > >
00:17:37 verbose #20408 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:37 verbose #20409 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:37 verbose #20410 > > │ ### buf_read_lines                                                           │
00:17:37 verbose #20411 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:37 verbose #20412 > >
00:17:37 verbose #20413 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:37 verbose #20414 > > inl buf_read_lines forall t. (buf_reader : buf_reader t) : lines (buf_reader t)
00:17:37 verbose #20415 > > =
00:17:37 verbose #20416 > >     !\($'"std::io::BufRead::lines(!buf_reader)"')
00:17:37 verbose #20417 > >
00:17:37 verbose #20418 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:37 verbose #20419 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:37 verbose #20420 > > │ ### decode_reader_bytes                                                      │
00:17:37 verbose #20421 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:37 verbose #20422 > >
00:17:37 verbose #20423 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:37 verbose #20424 > > nominal decode_reader_bytes t u =
00:17:37 verbose #20425 > >     `(
00:17:37 verbose #20426 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:17:37 verbose #20427 > > Fable.Core.Emit(\"encoding_rs_io::DecodeReaderBytes<$0, $1>\")>]]\n#endif\ntype
00:17:37 verbose #20428 > > encoding_rs_io_DecodeReaderBytes<'T, 'U> = class end"
00:17:37 verbose #20429 > >         $'' : $'encoding_rs_io_DecodeReaderBytes<`t, `u>'
00:17:37 verbose #20430 > >     )
00:17:37 verbose #20431 > >
00:17:37 verbose #20432 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:37 verbose #20433 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:37 verbose #20434 > > │ ### decode_reader_bytes_build                                                │
00:17:37 verbose #20435 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:37 verbose #20436 > >
00:17:37 verbose #20437 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:37 verbose #20438 > > inl decode_reader_bytes_build forall t. (x : t) : decode_reader_bytes t (am'.vec
00:17:37 verbose #20439 > > u8) =
00:17:37 verbose #20440 > >
00:17:37 verbose #20441 > > !\($'"encoding_rs_io::DecodeReaderBytesBuilder::new().encoding(Some(encoding_rs:
00:17:37 verbose #20442 > > :UTF_8)).build(!x)"')
00:17:37 verbose #20443 > >
00:17:37 verbose #20444 > > !\($'"encoding_rs_io::DecodeReaderBytesBuilder::new().encoding(Some(encoding_rs:
00:17:37 verbose #20445 > > :UTF_8)).utf8_passthru(true).build(!x)"')
00:17:37 verbose #20446 > >     !\\(x,
00:17:37 verbose #20447 > > $'"encoding_rs_io::DecodeReaderBytesBuilder::new().utf8_passthru(true).build($0)
00:17:37 verbose #20448 > > "')
00:17:37 verbose #20449 > >     // !\($'"encoding_rs_io::DecodeReaderBytes::new(!x)"')
00:17:37 verbose #20450 > >
00:17:37 verbose #20451 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:37 verbose #20452 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:37 verbose #20453 > > │ ### buf_reader_read                                                          │
00:17:37 verbose #20454 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:37 verbose #20455 > >
00:17:37 verbose #20456 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:37 verbose #20457 > > inl buf_reader_read forall el dim. (slice : am'.slice' el dim) (buf_reader :
00:17:37 verbose #20458 > > buf_reader el) : resultm.result' unativeint io_error =
00:17:37 verbose #20459 > >     (!\($'"true; let mut !slice = !slice"') : bool) |> ignore
00:17:37 verbose #20460 > >     !\($'"std::io::Read::read(&mut !buf_reader, &mut !slice)"')
00:17:37 verbose #20461 > >
00:17:37 verbose #20462 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:37 verbose #20463 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:37 verbose #20464 > > │ ### io_read_by_ref                                                           │
00:17:37 verbose #20465 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:37 verbose #20466 > >
00:17:37 verbose #20467 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:37 verbose #20468 > > inl io_read_by_ref forall t. (lines : lines t) : lines t =
00:17:37 verbose #20469 > >     !\\(lines, $'"std::io::Read::by_ref($0)"')
00:17:38 verbose #20470 > 00:00:10 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 38336 }
00:17:38 verbose #20471 > 00:00:10   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:17:38 verbose #20472 >     "nbconvert",
00:17:38 verbose #20473 >     "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb",
00:17:38 verbose #20474 >     "--to",
00:17:38 verbose #20475 >     "html",
00:17:38 verbose #20476 >     "--HTMLExporter.theme=dark",
00:17:38 verbose #20477 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:38 verbose #20478 > 00:00:10 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb to html
00:17:38 verbose #20479 > 00:00:10 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:17:38 verbose #20480 > 00:00:10 verbose #7 !   validate(nb)
00:17:39 verbose #20481 > 00:00:11 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:17:39 verbose #20482 > 00:00:11 verbose #9 !   return _pygments_highlight(
00:17:39 verbose #20483 > 00:00:11 verbose #10 ! [NbConvertApp] Writing 366652 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.html
00:17:39 verbose #20484 > 00:00:11 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 }
00:17:39 verbose #20485 > 00:00:11   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 }
00:17:39 verbose #20486 > 00:00:11   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:17:39 verbose #20487 >     "-c",
00:17:39 verbose #20488 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:17:39 verbose #20489 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:39 verbose #20490 > 00:00:12 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:17:39 verbose #20491 > 00:00:12   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:17:39 verbose #20492 > 00:00:12   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 39291 }
00:17:39   debug #20493 runtime.execute_with_options_async / { exit_code = 0; output_length = 43571 }
00:17:39   debug #27 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path stream.dib --retries 3
00:17:39   debug #20494 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path parsing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:17:39 verbose #20495 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "parsing.dib", "--retries", "3"])) }
00:17:39 verbose #20496 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:17:39 verbose #20497 >     "repl",
00:17:39 verbose #20498 >     "--exit-after-run",
00:17:39 verbose #20499 >     "--run",
00:17:39 verbose #20500 >     "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib",
00:17:39 verbose #20501 >     "--output-path",
00:17:39 verbose #20502 >     "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb",
00:17:39 verbose #20503 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:17:41 verbose #20504 > >
00:17:41 verbose #20505 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:41 verbose #20506 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:41 verbose #20507 > > │ # parsing                                                                    │
00:17:41 verbose #20508 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:43 verbose #20509 > >
00:17:43 verbose #20510 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:43 verbose #20511 > > open rust.rust_operators
00:17:43 verbose #20512 > > open sm'_operators
00:17:44 verbose #20513 > >
00:17:44 verbose #20514 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:44 verbose #20515 > > //// test
00:17:44 verbose #20516 > >
00:17:44 verbose #20517 > > open testing
00:17:44 verbose #20518 > >
00:17:44 verbose #20519 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:44 verbose #20520 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:44 verbose #20521 > > │ ## fparsec                                                                   │
00:17:44 verbose #20522 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:44 verbose #20523 > >
00:17:44 verbose #20524 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:44 verbose #20525 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:44 verbose #20526 > > │ <div><div></div><div><strong>Installing                                      │
00:17:44 verbose #20527 > > │ Packages</strong><ul><li><span>FParsec</span></li></ul></div><div></div></di │
00:17:44 verbose #20528 > > │ v>                                                                           │
00:17:44 verbose #20529 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:45 verbose #20530 > >
00:17:45 verbose #20531 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:45 verbose #20532 > > │ <div><div></div><div><strong>Installing                                      │
00:17:45 verbose #20533 > > │ Packages</strong><ul><li><span>FParsec.</span></li></ul></div><div></div></d │
00:17:45 verbose #20534 > > │ iv>                                                                          │
00:17:45 verbose #20535 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:45 verbose #20536 > >
00:17:45 verbose #20537 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:45 verbose #20538 > > │ <div><div></div><div><strong>Installing                                      │
00:17:45 verbose #20539 > > │ Packages</strong><ul><li><span>FParsec..</span></li></ul></div><div></div></ │
00:17:45 verbose #20540 > > │ div>                                                                         │
00:17:45 verbose #20541 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:46 verbose #20542 > >
00:17:46 verbose #20543 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:46 verbose #20544 > > │ <div><div></div><div><strong>Installing                                      │
00:17:46 verbose #20545 > > │ Packages</strong><ul><li><span>FParsec...</span></li></ul></div><div></div>< │
00:17:46 verbose #20546 > > │ /div>                                                                        │
00:17:46 verbose #20547 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:46 verbose #20548 > >
00:17:46 verbose #20549 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:46 verbose #20550 > > │ <div><div></div><div><strong>Installing                                      │
00:17:46 verbose #20551 > > │ Packages</strong><ul><li><span>FParsec....</span></li></ul></div><div></div> │
00:17:46 verbose #20552 > > │ </div>                                                                       │
00:17:46 verbose #20553 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:46 verbose #20554 > >
00:17:46 verbose #20555 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:46 verbose #20556 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:46 verbose #20557 > > │  Package added: fsharp.core,4.3.4                                            │
00:17:46 verbose #20558 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:46 verbose #20559 > >
00:17:46 verbose #20560 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:46 verbose #20561 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:46 verbose #20562 > > │  Package added: FParsec,1.1.1                                                │
00:17:46 verbose #20563 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:46 verbose #20564 > >
00:17:46 verbose #20565 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:46 verbose #20566 > > │ <div><div></div><div></div><div><strong>Installed                            │
00:17:46 verbose #20567 > > │ Packages</strong><ul><li><span>FParsec, 1.1.1</span></li></ul></div></div>   │
00:17:46 verbose #20568 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:47 verbose #20569 > >
00:17:47 verbose #20570 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:47 verbose #20571 > > //// test
00:17:47 verbose #20572 > >
00:17:47 verbose #20573 > > nominal position_ = $'FParsec.Position'
00:17:47 verbose #20574 > > nominal parser_error_ = $'FParsec.Error.ParserError'
00:17:47 verbose #20575 > >
00:17:47 verbose #20576 > > nominal reply_ t = $'FParsec.Reply<`t>'
00:17:47 verbose #20577 > >
00:17:47 verbose #20578 > > nominal char_stream_ t = $'FParsec.CharStream<`t>'
00:17:47 verbose #20579 > >
00:17:47 verbose #20580 > > // nominal parser t u = char_stream u -> reply t
00:17:47 verbose #20581 > > nominal parser_ t u = $'FParsec.Primitives.Parser<`t, `u>'
00:17:47 verbose #20582 > >
00:17:47 verbose #20583 > > inl p_char_ forall t. (x : char) : parser_ char t =
00:17:47 verbose #20584 > >     x |> $'FParsec.CharParsers.pchar'
00:17:47 verbose #20585 > >
00:17:47 verbose #20586 > > inl p_string_ forall t. (x : string) : parser_ string t =
00:17:47 verbose #20587 > >     x |> $'FParsec.CharParsers.pstring'
00:17:47 verbose #20588 > >
00:17:47 verbose #20589 > > inl (>>.$) forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ u v =
00:17:47 verbose #20590 > >     b |> $'FParsec.Primitives.(>>.)' a
00:17:47 verbose #20591 > >
00:17:47 verbose #20592 > > inl (.>>$) forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ t v =
00:17:47 verbose #20593 > >     b |> $'FParsec.Primitives.(.>>)' a
00:17:47 verbose #20594 > >
00:17:47 verbose #20595 > > inl (.>>.$) forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ (pair t
00:17:47 verbose #20596 > > u) v =
00:17:47 verbose #20597 > >     b |> $'FParsec.Primitives.(.>>.)' a
00:17:47 verbose #20598 > >
00:17:47 verbose #20599 > > inl (>>%$) forall t u v. (a : parser_ t v) (b : u) : parser_ u v =
00:17:47 verbose #20600 > >     b |> $'FParsec.Primitives.(>>%)' a
00:17:47 verbose #20601 > >
00:17:47 verbose #20602 > > inl (>>=$) forall t u v. (a : parser_ t v) (b : t -> parser_ u v) : parser_ u v
00:17:47 verbose #20603 > > =
00:17:47 verbose #20604 > >     b |> $'FParsec.Primitives.(>>=)' a
00:17:47 verbose #20605 > >
00:17:47 verbose #20606 > > inl (|>>$) forall t u v. (a : parser_ t v) (b : t -> u) : parser_ u v =
00:17:47 verbose #20607 > >     inl b = fun x => x |> b
00:17:47 verbose #20608 > >     b |> $'FParsec.Primitives.(|>>)' a
00:17:47 verbose #20609 > >
00:17:47 verbose #20610 > > inl any_char_ () : parser_ char _ =
00:17:47 verbose #20611 > >     $'FParsec.CharParsers.anyChar'
00:17:47 verbose #20612 > >
00:17:47 verbose #20613 > > inl any_string_ () : parser_ string _ =
00:17:47 verbose #20614 > >     $'FParsec.CharParsers.anyString'
00:17:47 verbose #20615 > >
00:17:47 verbose #20616 > > inl any_string__ (n : i32) : parser_ string _ =
00:17:47 verbose #20617 > >     n |> $'FParsec.CharParsers.anyString'
00:17:47 verbose #20618 > >
00:17:47 verbose #20619 > > inl eof_ () : parser_ () _ =
00:17:47 verbose #20620 > >     $'FParsec.CharParsers.eof'
00:17:47 verbose #20621 > >
00:17:47 verbose #20622 > > inl spaces_ () : parser_ () () =
00:17:47 verbose #20623 > >     $'FParsec.CharParsers.spaces'
00:17:47 verbose #20624 > >
00:17:47 verbose #20625 > > inl spaces1_ () : parser_ () () =
00:17:47 verbose #20626 > >     $'FParsec.CharParsers.spaces1'
00:17:47 verbose #20627 > >
00:17:47 verbose #20628 > > inl (<|>$) forall t u. (a : parser_ t u) (b : parser_ t u) : parser_ t u =
00:17:47 verbose #20629 > >     b |> $'FParsec.Primitives.(<|>)' a
00:17:47 verbose #20630 > >
00:17:47 verbose #20631 > > inl many_satisfy_ forall t. (x : char -> bool) : parser_ string t =
00:17:47 verbose #20632 > >     x |> $'FParsec.CharParsers.manySatisfy'
00:17:47 verbose #20633 > >
00:17:47 verbose #20634 > > inl satisfy_ forall t. (x : char -> bool) : parser_ char t =
00:17:47 verbose #20635 > >     x |> $'FParsec.CharParsers.satisfy'
00:17:47 verbose #20636 > >
00:17:47 verbose #20637 > > inl none_of_ (x : list char) : parser_ char () =
00:17:47 verbose #20638 > >     x
00:17:47 verbose #20639 > >     |> listm'.box
00:17:47 verbose #20640 > >     |> listm'.to_array'
00:17:47 verbose #20641 > >     |> $'FParsec.CharParsers.noneOf'
00:17:47 verbose #20642 > >
00:17:47 verbose #20643 > > inl any_of_ (x : list char) : parser_ char () =
00:17:47 verbose #20644 > >     x
00:17:47 verbose #20645 > >     |> listm'.box
00:17:47 verbose #20646 > >     |> listm'.to_array'
00:17:47 verbose #20647 > >     |> $'FParsec.CharParsers.anyOf'
00:17:47 verbose #20648 > >
00:17:47 verbose #20649 > > inl skip_any_of_ (x : list char) : parser_ () () =
00:17:47 verbose #20650 > >     x
00:17:47 verbose #20651 > >     |> listm'.box
00:17:47 verbose #20652 > >     |> listm'.to_array'
00:17:47 verbose #20653 > >     |> $'FParsec.CharParsers.skipAnyOf'
00:17:47 verbose #20654 > >
00:17:47 verbose #20655 > > inl between_ forall t u v x. (a : parser_ t x) (b : parser_ u x) (c : parser_ v
00:17:47 verbose #20656 > > x) : parser_ v x =
00:17:47 verbose #20657 > >     c |> $'FParsec.Primitives.between' a b
00:17:47 verbose #20658 > >
00:17:47 verbose #20659 > > inl many_chars_ forall t. (x : parser_ char t) : parser_ string t =
00:17:47 verbose #20660 > >     x |> $'FParsec.CharParsers.manyChars'
00:17:47 verbose #20661 > >
00:17:47 verbose #20662 > > inl many1_chars_ forall t. (x : parser_ char t) : parser_ string t =
00:17:47 verbose #20663 > >     x |> $'FParsec.CharParsers.many1Chars'
00:17:47 verbose #20664 > >
00:17:47 verbose #20665 > > inl many_strings_ forall t. (x : parser_ string t) : parser_ string t =
00:17:47 verbose #20666 > >     x |> $'FParsec.CharParsers.manyStrings'
00:17:47 verbose #20667 > >
00:17:47 verbose #20668 > > inl skip_any_string_ forall t. (n : i32) : parser_ () t =
00:17:47 verbose #20669 > >     n |> $'FParsec.CharParsers.skipAnyString'
00:17:47 verbose #20670 > >
00:17:47 verbose #20671 > > inl many1_strings_ forall t. (x : parser_ string t) : parser_ string t =
00:17:47 verbose #20672 > >     x |> $'FParsec.CharParsers.many1Strings'
00:17:47 verbose #20673 > >
00:17:47 verbose #20674 > > inl opt_ forall t u. (a : parser_ t u) : parser_ (optionm'.option' t) u =
00:17:47 verbose #20675 > >     a |> $'FParsec.Primitives.opt'
00:17:47 verbose #20676 > >
00:17:47 verbose #20677 > > inl choice_ forall t u. (a : list (parser_ t u)) : parser_ t u =
00:17:47 verbose #20678 > >     a
00:17:47 verbose #20679 > >     |> listm'.box
00:17:47 verbose #20680 > >     |> seq.of_list'
00:17:47 verbose #20681 > >     |> $'FParsec.Primitives.choice'
00:17:47 verbose #20682 > >
00:17:47 verbose #20683 > > inl delay_ forall t u. (fn : () -> parser_ t u) : parser_ t u =
00:17:47 verbose #20684 > >     fn |> $'FParsec.Primitives.parse.Delay'
00:17:47 verbose #20685 > >
00:17:47 verbose #20686 > > inl peek_ forall t u. (a : parser_ t u) : parser_ char u =
00:17:47 verbose #20687 > >     $'!a.Peek ()'
00:17:47 verbose #20688 > >
00:17:47 verbose #20689 > > inl not_followed_by_ forall t u. (a : parser_ t u) : parser_ () u =
00:17:47 verbose #20690 > >     a |> $'FParsec.Primitives.notFollowedBy'
00:17:47 verbose #20691 > >
00:17:47 verbose #20692 > > inl sep_by_ forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_
00:17:47 verbose #20693 > > (listm'.list' t) v =
00:17:47 verbose #20694 > >     b |> $'FParsec.Primitives.sepBy' a
00:17:47 verbose #20695 > >
00:17:47 verbose #20696 > > inl sep_by1_ forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_
00:17:47 verbose #20697 > > (listm'.list' t) v =
00:17:47 verbose #20698 > >     b |> $'FParsec.Primitives.sepBy1' a
00:17:47 verbose #20699 > >
00:17:47 verbose #20700 > > inl sep_end_by_ forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_
00:17:47 verbose #20701 > > (listm'.list' t) v =
00:17:47 verbose #20702 > >     b |> $'FParsec.Primitives.sepEndBy' a
00:17:47 verbose #20703 > >
00:17:47 verbose #20704 > > inl many_ forall t u. (a : parser_ t u) : parser_ (listm'.list' t) u =
00:17:47 verbose #20705 > >     a |> $'FParsec.Primitives.many'
00:17:47 verbose #20706 > >
00:17:47 verbose #20707 > > inl many1_ forall t u. (a : parser_ t u) : parser_ (listm'.list' t) u =
00:17:47 verbose #20708 > >     a |> $'FParsec.Primitives.many1'
00:17:47 verbose #20709 > >
00:17:47 verbose #20710 > > inl many1_satisfy_ forall t. (x : char -> bool) : parser_ string t =
00:17:47 verbose #20711 > >     x |> $'FParsec.CharParsers.many1Satisfy'
00:17:47 verbose #20712 > >
00:17:47 verbose #20713 > > nominal parser_result'_ t u = $'FParsec.CharParsers.ParserResult<`t, `u>'
00:17:47 verbose #20714 > >
00:17:47 verbose #20715 > > inl run_ forall t. (parser : parser_ t ()) (x : string) : parser_result'_ t () =
00:17:47 verbose #20716 > >     x |> $'FParsec.CharParsers.run' parser
00:17:47 verbose #20717 > >
00:17:47 verbose #20718 > > union parser_result_ t u =
00:17:47 verbose #20719 > >     | Success : t * u * position_
00:17:47 verbose #20720 > >     | Failure : string * parser_error_ * u
00:17:47 verbose #20721 > >
00:17:47 verbose #20722 > > inl parser_result_ forall t u. = function
00:17:47 verbose #20723 > >     | Success (a, b, c) => $'`(parser_result'_ t u).Success (!a, !b, !c)' :
00:17:47 verbose #20724 > > parser_result'_ t u
00:17:47 verbose #20725 > >     | Failure (a, b, c) => $'`(parser_result'_ t u).Failure (!a, !b, !c)' :
00:17:47 verbose #20726 > > parser_result'_ t u
00:17:47 verbose #20727 > >
00:17:47 verbose #20728 > > inl parser_result'_ forall t u. (x : parser_result'_ t u) : parser_result_ t u =
00:17:47 verbose #20729 > >     $'let mutable _!x = None '
00:17:47 verbose #20730 > >     $'match !x with'
00:17:47 verbose #20731 > >     $'| FParsec.CharParsers.Success (a, b, c) -> (' : ()
00:17:47 verbose #20732 > >     $'(fun () ->'
00:17:47 verbose #20733 > >     $'(fun () ->'
00:17:47 verbose #20734 > >     (Success ((dyn $'a'), dyn $'b', dyn $'c') : _ t u) |> emit_unit
00:17:47 verbose #20735 > >     $')'
00:17:47 verbose #20736 > >     $'|> fun x -> x ()'
00:17:47 verbose #20737 > >     $') () ) | FParsec.CharParsers.Failure (a, b, c) -> (' : ()
00:17:47 verbose #20738 > >     $'(fun () ->'
00:17:47 verbose #20739 > >     $'(fun () ->'
00:17:47 verbose #20740 > >     (Failure ((dyn $'a'), dyn $'b', dyn $'c') : _ t u) |> emit_unit
00:17:47 verbose #20741 > >     $')'
00:17:47 verbose #20742 > >     $'|> fun x -> x ()'
00:17:47 verbose #20743 > >     $') () )' : ()
00:17:47 verbose #20744 > >     $'|> fun x -> _!x <- Some x'
00:17:47 verbose #20745 > >     $'match _!x with Some x -> x | None -> failwith "??? / _!x=None"'
00:17:47 verbose #20746 > >
00:17:47 verbose #20747 > > inl parse_ parser input : result _ _ =
00:17:47 verbose #20748 > >     match input |> run_ parser |> parser_result'_ with
00:17:47 verbose #20749 > >     | Success (result, b, c) => Ok (result, c)
00:17:47 verbose #20750 > >     | Failure (error_msg, b, c) => Error (error_msg, b)
00:17:47 verbose #20751 > >
00:17:47 verbose #20752 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:47 verbose #20753 > > //// test
00:17:47 verbose #20754 > >
00:17:47 verbose #20755 > > inl split_args (args : string) : result (array_base (string * position_))
00:17:47 verbose #20756 > > (string * parser_error_) =
00:17:47 verbose #20757 > >     inl esc = [[ '\\'; '`' ]]
00:17:47 verbose #20758 > >     inl quotes = [[ '"' ]]
00:17:47 verbose #20759 > >     inl special = esc ++ quotes
00:17:47 verbose #20760 > >     inl p_esc_char c =
00:17:47 verbose #20761 > >         p_char_ c >>.$ any_char_ () |>>$ fun c' => $'$"{!c}{!c'}"'
00:17:47 verbose #20762 > >     inl p_word = special |> none_of_ |>>$ sm'.obj_to_string
00:17:47 verbose #20763 > >     inl p_plain = special ++ [[ ' ' ]] |> none_of_ |> many1_chars_
00:17:47 verbose #20764 > >     inl p_text = p_word |> many1_strings_
00:17:47 verbose #20765 > >     inl p_esc = esc |> listm.map p_esc_char |> choice_
00:17:47 verbose #20766 > >     inl p_quoted = (p_word <|>$ p_esc) |> many_ |>>$ (seq.of_list' >> sm'.concat
00:17:47 verbose #20767 > > "")
00:17:47 verbose #20768 > >     inl p_quoted_all = p_quoted |> between_ (p_char_ '"') (p_char_ '"')
00:17:47 verbose #20769 > >     inl p_esc_root = p_esc |>>$ (fun _ => "") >>.$ (p_word |> many_) |>>$
00:17:47 verbose #20770 > > (seq.of_list' >> sm'.concat "")
00:17:47 verbose #20771 > >     inl p_content = p_plain <|>$ p_quoted_all <|>$ p_esc_root
00:17:47 verbose #20772 > >     inl p_args = spaces1_ () |> sep_by_ p_content
00:17:47 verbose #20773 > >     args
00:17:47 verbose #20774 > >     |> parse_ p_args
00:17:47 verbose #20775 > >     |> resultm.map fun (a', b') =>
00:17:47 verbose #20776 > >         (
00:17:47 verbose #20777 > >             (
00:17:47 verbose #20778 > >                 a'
00:17:47 verbose #20779 > >                 |> listm'.to_array'
00:17:47 verbose #20780 > >                 |> a
00:17:47 verbose #20781 > >                 |> am.map fun x => x, b'
00:17:47 verbose #20782 > >                 |> fun (a x : _ i32 _) => x
00:17:47 verbose #20783 > >             )
00:17:47 verbose #20784 > >         )
00:17:47 verbose #20785 > >
00:17:47 verbose #20786 > > [[
00:17:47 verbose #20787 > >     "a b c",
00:17:47 verbose #20788 > >     ;[[ "a"; "b"; "c" ]]
00:17:47 verbose #20789 > >
00:17:47 verbose #20790 > >     "e f \"g h\" i",
00:17:47 verbose #20791 > >     ;[[ "e"; "f"; "g h"; "i" ]]
00:17:47 verbose #20792 > >
00:17:47 verbose #20793 > >     "\"j k\" \"l\" \"m\"",
00:17:47 verbose #20794 > >     ;[[ "j k"; "l"; "m" ]]
00:17:47 verbose #20795 > >
00:17:47 verbose #20796 > >     "s -t \"u \`\"v\`\" w\"",
00:17:47 verbose #20797 > >     ;[[ "s"; "-t"; "u \`\"v\`\" w" ]]
00:17:47 verbose #20798 > >
00:17:47 verbose #20799 > >     "n -o \"p \\\"q\\\" r\"",
00:17:47 verbose #20800 > >     ;[[ "n"; "-o"; "p \\\"q\\\" r" ]]
00:17:47 verbose #20801 > >
00:17:47 verbose #20802 > >     "r -s \"t \\\"u\\\"\"",
00:17:47 verbose #20803 > >     ;[[ "r"; "-s"; "t \\\"u\\\"" ]]
00:17:47 verbose #20804 > >
00:17:47 verbose #20805 > >     $'$"x -y \\\"$z -a \'(b=\\\\\\"c-id=)[[a-fA-F0-9]]{{8}}\', {{ \`$_[[1]] +
00:17:47 verbose #20806 > > \`$d++ }}\\\""',
00:17:47 verbose #20807 > >     ;[[ "x"; "-y"; "$z -a '(b=\\\"c-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$d++ }"
00:17:47 verbose #20808 > > ]]
00:17:47 verbose #20809 > >
00:17:47 verbose #20810 > >     "e -f \"$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }\"",
00:17:47 verbose #20811 > >     ;[[ "e"; "-f"; "$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }"
00:17:47 verbose #20812 > > ]]
00:17:47 verbose #20813 > >
00:17:47 verbose #20814 > >     $'$"--l \\\\\\"\'\'\' m \'\'\'\\\\\\" "',
00:17:47 verbose #20815 > >     ;[[ "--l"; "''' m '''" ]]
00:17:47 verbose #20816 > >
00:17:47 verbose #20817 > >     $'$"n --o --p q --r \\\"s:/t u/v.w\\\" --x \\\"y:/z.a\\\" --b c.d
00:17:47 verbose #20818 > > \\\"\\\\e{{f-g}}\\\" h.i \\\"j (k)\\\""',
00:17:47 verbose #20819 > >     ;[[ "n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; "y:/z.a"; "--b";
00:17:47 verbose #20820 > > "c.d"; "\\e{f-g}"; "h.i"; "j (k)" ]]
00:17:47 verbose #20821 > >
00:17:47 verbose #20822 > >     $'\@$"l ""m n:\\o.p"""',
00:17:47 verbose #20823 > >     ;[[ "l"; "m n:\\o.p" ]]
00:17:47 verbose #20824 > > ]]
00:17:47 verbose #20825 > > |> listm.rev
00:17:47 verbose #20826 > > |> listm.map fun input, expected =>
00:17:47 verbose #20827 > >     input
00:17:47 verbose #20828 > >     |> split_args
00:17:47 verbose #20829 > >     |> fun x =>
00:17:47 verbose #20830 > >         try
00:17:47 verbose #20831 > >             fun () =>
00:17:47 verbose #20832 > >                 ($'$"\ninput: {!input}"' : string)
00:17:47 verbose #20833 > >                 |> console.write_line
00:17:47 verbose #20834 > >                 x
00:17:47 verbose #20835 > >                 |> resultm.get
00:17:47 verbose #20836 > >                 |> am'.map_base fst
00:17:47 verbose #20837 > >                 |> _assert_eq' expected
00:17:47 verbose #20838 > >                 false
00:17:47 verbose #20839 > >             fun ex =>
00:17:47 verbose #20840 > >                 ($'$"error / expected: %A{!expected} / ex: %A{!ex}"' : string)
00:17:47 verbose #20841 > >                 |> console.write_line
00:17:47 verbose #20842 > >                 Some true
00:17:47 verbose #20843 > >         |> optionm.value
00:17:47 verbose #20844 > > |> listm'.filter id
00:17:47 verbose #20845 > > |> function
00:17:47 verbose #20846 > >     | [[]] => ()
00:17:47 verbose #20847 > >     | x => failwith $'$"{!x}"'
00:17:49 verbose #20848 > >
00:17:49 verbose #20849 > > ╭─[ 2.55s - stdout ]───────────────────────────────────────────────────────────╮
00:17:49 verbose #20850 > > │                                                                              │
00:17:49 verbose #20851 > > │ input: a b c                                                                 │
00:17:49 verbose #20852 > > │ __assert_eq' / actual: [|"a"; "b"; "c"|] / expected: [|"a"; "b"; "c"|]       │
00:17:49 verbose #20853 > > │                                                                              │
00:17:49 verbose #20854 > > │ input: e f "g h" i                                                           │
00:17:49 verbose #20855 > > │ __assert_eq' / actual: [|"e"; "f"; "g h"; "i"|] / expected: [|"e"; "f"; "g   │
00:17:49 verbose #20856 > > │ h"; "i"|]                                                                    │
00:17:49 verbose #20857 > > │                                                                              │
00:17:49 verbose #20858 > > │ input: "j k" "l" "m"                                                         │
00:17:49 verbose #20859 > > │ __assert_eq' / actual: [|"j k"; "l"; "m"|] / expected: [|"j k"; "l"; "m"|]   │
00:17:49 verbose #20860 > > │                                                                              │
00:17:49 verbose #20861 > > │ input: s -t "u `"v`" w"                                                      │
00:17:49 verbose #20862 > > │ __assert_eq' / actual: [|"s"; "-t"; "u `"v`" w"|] / expected: [|"s"; "-t";   │
00:17:49 verbose #20863 > > │ "u `"v`" w"|]                                                                │
00:17:49 verbose #20864 > > │                                                                              │
00:17:49 verbose #20865 > > │ input: n -o "p \"q\" r"                                                      │
00:17:49 verbose #20866 > > │ __assert_eq' / actual: [|"n"; "-o"; "p \"q\" r"|] / expected: [|"n"; "-o";   │
00:17:49 verbose #20867 > > │ "p \"q\" r"|]                                                                │
00:17:49 verbose #20868 > > │                                                                              │
00:17:49 verbose #20869 > > │ input: r -s "t \"u\""                                                        │
00:17:49 verbose #20870 > > │ __assert_eq' / actual: [|"r"; "-s"; "t \"u\""|] / expected: [|"r"; "-s"; "t  │
00:17:49 verbose #20871 > > │ \"u\""|]                                                                     │
00:17:49 verbose #20872 > > │                                                                              │
00:17:49 verbose #20873 > > │ input: x -y "$z -a '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }"          │
00:17:49 verbose #20874 > > │ __assert_eq' / actual: [|"x"; "-y"; "$z -a '(b=\"c-id=)[a-fA-F0-9]{8}', {    │
00:17:49 verbose #20875 > > │ `$_[1] + `$d++ }"|] / expected: [|"x"; "-y"; "$z -a '(b=\"c-id=)[            │
00:17:49 verbose #20876 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }"|]                                        │
00:17:49 verbose #20877 > > │                                                                              │
00:17:49 verbose #20878 > > │ input: e -f "$g -h '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + `$k++ }"          │
00:17:49 verbose #20879 > > │ __assert_eq' / actual: [|"e"; "-f"; "$g -h '(i=`"j-id=)[a-fA-F0-9]{8}', {    │
00:17:49 verbose #20880 > > │ `$_[1] + `$k++ }"|] / expected: [|"e"; "-f"; "$g -h '(i=`"j-id=)[            │
00:17:49 verbose #20881 > > │ a-fA-F0-9]{8}', { `$_[1] + `$k++ }"|]                                        │
00:17:49 verbose #20882 > > │                                                                              │
00:17:49 verbose #20883 > > │ input: --l \"''' m '''\"                                                     │
00:17:49 verbose #20884 > > │ __assert_eq' / actual: [|"--l"; "''' m '''"|] / expected: [|"--l"; "''' m    │
00:17:49 verbose #20885 > > │ '''"|]                                                                       │
00:17:49 verbose #20886 > > │                                                                              │
00:17:49 verbose #20887 > > │ input: n --o --p q --r "s:/t u/v.w" --x "y:/z.a" --b c.d "\e{f-g}" h.i "j    │
00:17:49 verbose #20888 > > │ (k)"                                                                         │
00:17:49 verbose #20889 > > │ __assert_eq' / actual: [|"n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; │
00:17:49 verbose #20890 > > │ "y:/z.a"; "--b"; "c.d";                                                      │
00:17:49 verbose #20891 > > │   "\e{f-g}"; "h.i"; "j (k)"|] / expected: [|"n"; "--o"; "--p"; "q"; "--r";   │
00:17:49 verbose #20892 > > │ "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; "c.d";                                 │
00:17:49 verbose #20893 > > │   "\e{f-g}"; "h.i"; "j (k)"|]                                                │
00:17:49 verbose #20894 > > │                                                                              │
00:17:49 verbose #20895 > > │ input: l "m n:\o.p"                                                          │
00:17:49 verbose #20896 > > │ __assert_eq' / actual: [|"l"; "m n:\o.p"|] / expected: [|"l"; "m n:\o.p"|]   │
00:17:49 verbose #20897 > > │                                                                              │
00:17:49 verbose #20898 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:49 verbose #20899 > >
00:17:49 verbose #20900 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:49 verbose #20901 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:49 verbose #20902 > > │ ## parsing                                                                   │
00:17:49 verbose #20903 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:49 verbose #20904 > >
00:17:49 verbose #20905 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:49 verbose #20906 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:49 verbose #20907 > > │ ### range                                                                    │
00:17:49 verbose #20908 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:49 verbose #20909 > >
00:17:49 verbose #20910 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:49 verbose #20911 > > type range =
00:17:49 verbose #20912 > >     {
00:17:49 verbose #20913 > >         from : int
00:17:49 verbose #20914 > >         to : int
00:17:49 verbose #20915 > >     }
00:17:50 verbose #20916 > >
00:17:50 verbose #20917 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:50 verbose #20918 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:50 verbose #20919 > > │ ### position                                                                 │
00:17:50 verbose #20920 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:50 verbose #20921 > >
00:17:50 verbose #20922 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:50 verbose #20923 > > type position =
00:17:50 verbose #20924 > >     {
00:17:50 verbose #20925 > >         line : int
00:17:50 verbose #20926 > >         col : int
00:17:50 verbose #20927 > >     }
00:17:50 verbose #20928 > >
00:17:50 verbose #20929 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:50 verbose #20930 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:50 verbose #20931 > > │ ### parser_state                                                             │
00:17:50 verbose #20932 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:50 verbose #20933 > >
00:17:50 verbose #20934 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:50 verbose #20935 > > nominal parser_state =
00:17:50 verbose #20936 > >     {
00:17:50 verbose #20937 > >         line_text : sm'.string_builder
00:17:50 verbose #20938 > >         position : position
00:17:50 verbose #20939 > >     }
00:17:50 verbose #20940 > >
00:17:50 verbose #20941 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:50 verbose #20942 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:50 verbose #20943 > > │ ### parser                                                                   │
00:17:50 verbose #20944 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:50 verbose #20945 > >
00:17:50 verbose #20946 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:50 verbose #20947 > > type parser t = string * parser_state -> result (t * string * parser_state)
00:17:50 verbose #20948 > > string
00:17:50 verbose #20949 > >
00:17:50 verbose #20950 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:50 verbose #20951 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:50 verbose #20952 > > │ ### parse                                                                    │
00:17:50 verbose #20953 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:50 verbose #20954 > >
00:17:50 verbose #20955 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:50 verbose #20956 > > inl parse forall t. (p : parser t) (input : string) : result (t * string *
00:17:50 verbose #20957 > > parser_state) string =
00:17:50 verbose #20958 > >     inl input =
00:17:50 verbose #20959 > >         input
00:17:50 verbose #20960 > >         |> optionm'.of_obj
00:17:50 verbose #20961 > >         |> optionm'.default_value' ""
00:17:50 verbose #20962 > >     p (input, { line_text = "" |> sm'.string_builder; position = { line = 1; col
00:17:50 verbose #20963 > > = 1 } } |> parser_state)
00:17:50 verbose #20964 > >
00:17:50 verbose #20965 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:50 verbose #20966 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:50 verbose #20967 > > │ ### inc                                                                      │
00:17:50 verbose #20968 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:50 verbose #20969 > >
00:17:50 verbose #20970 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:50 verbose #20971 > > inl inc c (parser_state s) =
00:17:50 verbose #20972 > >     match c with
00:17:50 verbose #20973 > >     | '\n' => { line = s.position.line + 1; col = 1 }
00:17:50 verbose #20974 > >     | _ => { s.position with col = s.position.col + 1 }.position
00:17:50 verbose #20975 > >
00:17:50 verbose #20976 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:50 verbose #20977 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:50 verbose #20978 > > │ ### update                                                                   │
00:17:50 verbose #20979 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:50 verbose #20980 > >
00:17:50 verbose #20981 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:50 verbose #20982 > > inl update result s =
00:17:50 verbose #20983 > >     (s, result |> sm'.to_char_array |> a |> (fun x => x : _ int _) |>
00:17:50 verbose #20984 > > am'.to_list' |> listm'.unbox)
00:17:50 verbose #20985 > >     ||> listm.fold fun (parser_state s) c =>
00:17:50 verbose #20986 > >         { s with
00:17:50 verbose #20987 > >             position = s |> parser_state |> inc c
00:17:50 verbose #20988 > >             line_text =
00:17:50 verbose #20989 > >                 match c with
00:17:50 verbose #20990 > >                 | '\n' => s.line_text |> sm'.builder_clear
00:17:50 verbose #20991 > >                 | c => s.line_text |> sm'.builder_append (sm'.obj_to_string c)
00:17:50 verbose #20992 > >         } |> parser_state
00:17:50 verbose #20993 > >
00:17:50 verbose #20994 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:50 verbose #20995 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:50 verbose #20996 > > │ ### any_char                                                                 │
00:17:50 verbose #20997 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:50 verbose #20998 > >
00:17:50 verbose #20999 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:50 verbose #21000 > > inl any_char () : parser char = function
00:17:50 verbose #21001 > >     | "", s => Error $'$"parsing.any_char / unexpected end of input / s:
00:17:50 verbose #21002 > > %A{!s}"'
00:17:50 verbose #21003 > >     | x, s =>
00:17:50 verbose #21004 > >         inl first_char = x |> sm'.index 0i32
00:17:50 verbose #21005 > >         inl rest = x |> sm'.range (am'.Start 1i32) (am'.End id)
00:17:50 verbose #21006 > >         in Ok (first_char, rest, s |> update (sm'.obj_to_string first_char))
00:17:50 verbose #21007 > >
00:17:50 verbose #21008 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:50 verbose #21009 > > //// test
00:17:50 verbose #21010 > >
00:17:50 verbose #21011 > > "abc"
00:17:50 verbose #21012 > > |> parse (any_char ())
00:17:50 verbose #21013 > > |> resultm.get
00:17:50 verbose #21014 > > |> sm'.format_debug
00:17:50 verbose #21015 > > |> _assert_eq (
00:17:50 verbose #21016 > >     ('a', "bc", { line_text = "a" |> sm'.string_builder; position = { line =
00:17:50 verbose #21017 > > 1i32; col = 2i32 } })
00:17:50 verbose #21018 > >     |> sm'.format_debug
00:17:50 verbose #21019 > > )
00:17:51 verbose #21020 > >
00:17:51 verbose #21021 > > ╭─[ 257.11ms - stdout ]────────────────────────────────────────────────────────╮
00:17:51 verbose #21022 > > │ __assert_eq / actual: "struct ('a', "bc", a, 1, 2)" / expected: "struct      │
00:17:51 verbose #21023 > > │ ('a', "bc", a, 1, 2)"                                                        │
00:17:51 verbose #21024 > > │                                                                              │
00:17:51 verbose #21025 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:51 verbose #21026 > >
00:17:51 verbose #21027 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:51 verbose #21028 > > //// test
00:17:51 verbose #21029 > >
00:17:51 verbose #21030 > > "abc"
00:17:51 verbose #21031 > > |> parse_ (any_char_ ())
00:17:51 verbose #21032 > > |> resultm.get
00:17:51 verbose #21033 > > |> sm'.format_debug
00:17:51 verbose #21034 > > |> _assert_eq' (('a', ($'FParsec.Position (null, 0, 1, 2)' : position_)) |>
00:17:51 verbose #21035 > > sm'.format_debug)
00:17:51 verbose #21036 > >
00:17:51 verbose #21037 > > ╭─[ 163.66ms - stdout ]────────────────────────────────────────────────────────╮
00:17:51 verbose #21038 > > │ __assert_eq' / actual: "struct ('a', (Ln: 1, Col: 2))" / expected: "struct   │
00:17:51 verbose #21039 > > │ ('a', (Ln: 1, Col: 2))"                                                      │
00:17:51 verbose #21040 > > │                                                                              │
00:17:51 verbose #21041 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:51 verbose #21042 > >
00:17:51 verbose #21043 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:51 verbose #21044 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:51 verbose #21045 > > │ ### p_char                                                                   │
00:17:51 verbose #21046 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:51 verbose #21047 > >
00:17:51 verbose #21048 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:51 verbose #21049 > > inl p_char (c : char) : parser char = function
00:17:51 verbose #21050 > >     | "", s => Error $'$"parsing.p_char / unexpected end of input / s: %A{!s}"'
00:17:51 verbose #21051 > >     | input, parser_state ({ line_text position = { line col } } as s) =>
00:17:51 verbose #21052 > >         inl first_char = input |> sm'.index 0i32
00:17:51 verbose #21053 > >         if first_char = c
00:17:51 verbose #21054 > >         then Ok (
00:17:51 verbose #21055 > >             first_char,
00:17:51 verbose #21056 > >             input |> sm'.range (am'.Start 1i32) (am'.End id),
00:17:51 verbose #21057 > >             s |> parser_state |> update (sm'.obj_to_string first_char)
00:17:51 verbose #21058 > >         )
00:17:51 verbose #21059 > >         else
00:17:51 verbose #21060 > >             inl message : string =
00:17:51 verbose #21061 > >                 inl rest =
00:17:51 verbose #21062 > >                     input
00:17:51 verbose #21063 > >                     |> sm'.range
00:17:51 verbose #21064 > >                         (am'.Start 0i32)
00:17:51 verbose #21065 > >                         (am'.End fun l =>
00:17:51 verbose #21066 > >                             match (input |> sm'.index_of "\n") - 1 with
00:17:51 verbose #21067 > >                             | -2 => l
00:17:51 verbose #21068 > >                             | l => l
00:17:51 verbose #21069 > >                         )
00:17:51 verbose #21070 > >                 $'$"parsing.p_char / expected: \'{!c}\' / line: {!line} / col:
00:17:51 verbose #21071 > > {!col}\n{!line_text}{!rest}"'
00:17:51 verbose #21072 > >             inl pointer_line = (sm'.replicate (col - 1) " ") +. "^"
00:17:51 verbose #21073 > >             $'$"{!message}\n{!pointer_line}\n"' |> Error
00:17:51 verbose #21074 > >
00:17:51 verbose #21075 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:51 verbose #21076 > > //// test
00:17:51 verbose #21077 > >
00:17:51 verbose #21078 > > "abc"
00:17:51 verbose #21079 > > |> parse (p_char 'a')
00:17:51 verbose #21080 > > |> resultm.get
00:17:51 verbose #21081 > > |> sm'.format_debug
00:17:51 verbose #21082 > > |> _assert_eq (
00:17:51 verbose #21083 > >     ('a', "bc", { line_text = "a" |> sm'.string_builder; position = { line =
00:17:51 verbose #21084 > > 1i32; col = 2i32 } })
00:17:51 verbose #21085 > >     |> sm'.format_debug
00:17:51 verbose #21086 > > )
00:17:51 verbose #21087 > >
00:17:51 verbose #21088 > > ╭─[ 199.55ms - stdout ]────────────────────────────────────────────────────────╮
00:17:51 verbose #21089 > > │ __assert_eq / actual: "struct ('a', "bc", a, 1, 2)" / expected: "struct      │
00:17:51 verbose #21090 > > │ ('a', "bc", a, 1, 2)"                                                        │
00:17:51 verbose #21091 > > │                                                                              │
00:17:51 verbose #21092 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:51 verbose #21093 > >
00:17:51 verbose #21094 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:51 verbose #21095 > > //// test
00:17:51 verbose #21096 > >
00:17:51 verbose #21097 > > "abc"
00:17:51 verbose #21098 > > |> parse_ (p_char_ 'a')
00:17:51 verbose #21099 > > |> resultm.get
00:17:51 verbose #21100 > > |> sm'.format_debug
00:17:51 verbose #21101 > > |> _assert_eq' (('a', ($'FParsec.Position (null, 0, 1, 2)' : position_)) |>
00:17:51 verbose #21102 > > sm'.format_debug)
00:17:51 verbose #21103 > >
00:17:51 verbose #21104 > > ╭─[ 154.68ms - stdout ]────────────────────────────────────────────────────────╮
00:17:51 verbose #21105 > > │ __assert_eq' / actual: "struct ('a', (Ln: 1, Col: 2))" / expected: "struct   │
00:17:51 verbose #21106 > > │ ('a', (Ln: 1, Col: 2))"                                                      │
00:17:51 verbose #21107 > > │                                                                              │
00:17:51 verbose #21108 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:51 verbose #21109 > >
00:17:51 verbose #21110 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:51 verbose #21111 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:51 verbose #21112 > > │ ### any_string                                                               │
00:17:51 verbose #21113 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:51 verbose #21114 > >
00:17:51 verbose #21115 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:51 verbose #21116 > > inl any_string length : parser string = fun input, s =>
00:17:51 verbose #21117 > >     if sm'.length input < length
00:17:51 verbose #21118 > >     then Error $'$"parsing.any_string / unexpected end of input / s: %A{!s}"'
00:17:51 verbose #21119 > >     else
00:17:51 verbose #21120 > >         inl result = input |> sm'.range (am'.Start 0i32) (am'.End fun _ =>
00:17:51 verbose #21121 > > length - 1)
00:17:51 verbose #21122 > >         inl rest = input |> sm'.range (am'.Start length) (am'.End id)
00:17:51 verbose #21123 > >         Ok (result, rest, s |> update result)
00:17:51 verbose #21124 > >
00:17:51 verbose #21125 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:51 verbose #21126 > > //// test
00:17:51 verbose #21127 > >
00:17:51 verbose #21128 > > "abcdef"
00:17:51 verbose #21129 > > |> parse (any_string 3i32)
00:17:51 verbose #21130 > > |> resultm.get
00:17:51 verbose #21131 > > |> sm'.format_debug
00:17:51 verbose #21132 > > |> _assert_eq (
00:17:51 verbose #21133 > >     ("abc", "def", { line_text = "abc" |> sm'.string_builder; position = { line
00:17:51 verbose #21134 > > = 1i32; col = 4i32 } })
00:17:51 verbose #21135 > >     |> sm'.format_debug
00:17:51 verbose #21136 > > )
00:17:52 verbose #21137 > >
00:17:52 verbose #21138 > > ╭─[ 221.23ms - stdout ]────────────────────────────────────────────────────────╮
00:17:52 verbose #21139 > > │ __assert_eq / actual: "struct ("abc", "def", abc, 1, 4)" / expected: "struct │
00:17:52 verbose #21140 > > │ ("abc", "def", abc, 1, 4)"                                                   │
00:17:52 verbose #21141 > > │                                                                              │
00:17:52 verbose #21142 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:52 verbose #21143 > >
00:17:52 verbose #21144 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:52 verbose #21145 > > //// test
00:17:52 verbose #21146 > >
00:17:52 verbose #21147 > > "abcdef"
00:17:52 verbose #21148 > > |> parse_ (any_string__ 3)
00:17:52 verbose #21149 > > |> resultm.get
00:17:52 verbose #21150 > > |> sm'.obj_to_string
00:17:52 verbose #21151 > > |> _assert_eq' (("abc", ($'FParsec.Position (null, 0, 1, 4)' : position_)) |>
00:17:52 verbose #21152 > > sm'.obj_to_string)
00:17:52 verbose #21153 > >
00:17:52 verbose #21154 > > ╭─[ 153.90ms - stdout ]────────────────────────────────────────────────────────╮
00:17:52 verbose #21155 > > │ __assert_eq' / actual: "(abc, (Ln: 1, Col: 4))" / expected: "(abc, (Ln: 1,   │
00:17:52 verbose #21156 > > │ Col: 4))"                                                                    │
00:17:52 verbose #21157 > > │                                                                              │
00:17:52 verbose #21158 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:52 verbose #21159 > >
00:17:52 verbose #21160 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:52 verbose #21161 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:52 verbose #21162 > > │ ### skip_any_string                                                          │
00:17:52 verbose #21163 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:52 verbose #21164 > >
00:17:52 verbose #21165 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:52 verbose #21166 > > inl skip_any_string length : parser () = fun input, s =>
00:17:52 verbose #21167 > >     if sm'.length input < length
00:17:52 verbose #21168 > >     then Error $'$"parsing.skip_any_string / unexpected end of input / s:
00:17:52 verbose #21169 > > %A{!s}"'
00:17:52 verbose #21170 > >     else Ok (
00:17:52 verbose #21171 > >         (),
00:17:52 verbose #21172 > >         input |> sm'.range (am'.Start length) (am'.End id),
00:17:52 verbose #21173 > >         s |> update (input |> sm'.range (am'.Start 0i32) (am'.End fun _ =>
00:17:52 verbose #21174 > > length - 1))
00:17:52 verbose #21175 > >     )
00:17:52 verbose #21176 > >
00:17:52 verbose #21177 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:52 verbose #21178 > > //// test
00:17:52 verbose #21179 > >
00:17:52 verbose #21180 > > "abcdef"
00:17:52 verbose #21181 > > |> parse (skip_any_string 3i32)
00:17:52 verbose #21182 > > |> resultm.get
00:17:52 verbose #21183 > > |> sm'.format_debug
00:17:52 verbose #21184 > > |> _assert_eq (
00:17:52 verbose #21185 > >     ((), "def", { line_text = "abc" |> sm'.string_builder; position = { line =
00:17:52 verbose #21186 > > 1i32; col = 4i32 } })
00:17:52 verbose #21187 > >     |> sm'.format_debug
00:17:52 verbose #21188 > > )
00:17:52 verbose #21189 > >
00:17:52 verbose #21190 > > ╭─[ 207.66ms - stdout ]────────────────────────────────────────────────────────╮
00:17:52 verbose #21191 > > │ __assert_eq / actual: "struct ("def", abc, 1, 4)" / expected: "struct        │
00:17:52 verbose #21192 > > │ ("def", abc, 1, 4)"                                                          │
00:17:52 verbose #21193 > > │                                                                              │
00:17:52 verbose #21194 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:52 verbose #21195 > >
00:17:52 verbose #21196 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:52 verbose #21197 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:52 verbose #21198 > > │ ### (>>.)                                                                    │
00:17:52 verbose #21199 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:52 verbose #21200 > >
00:17:52 verbose #21201 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:52 verbose #21202 > > inl (>>.) forall t u. (a : parser t) (b : parser u) : parser u = fun input, s =>
00:17:52 verbose #21203 > >     match a (input, s) with
00:17:52 verbose #21204 > >     | Ok (_, rest, s) => b (rest, s)
00:17:52 verbose #21205 > >     | Error e => Error e
00:17:52 verbose #21206 > >
00:17:52 verbose #21207 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:52 verbose #21208 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:52 verbose #21209 > > │ ### (>>.)                                                                    │
00:17:52 verbose #21210 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:52 verbose #21211 > >
00:17:52 verbose #21212 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:52 verbose #21213 > > inl (.>>) forall t u. (a : parser t) (b : parser u) : parser t = fun input, s =>
00:17:52 verbose #21214 > >     match a (input, s) with
00:17:52 verbose #21215 > >     | Ok (result, rest, s) =>
00:17:52 verbose #21216 > >         match b (rest, s) with
00:17:52 verbose #21217 > >         | Ok (_, rest, s) => Ok (result, rest, s)
00:17:52 verbose #21218 > >         | Error e => Error e
00:17:52 verbose #21219 > >     | Error e => Error e
00:17:52 verbose #21220 > >
00:17:52 verbose #21221 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:52 verbose #21222 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:52 verbose #21223 > > │ ### (.>>.)                                                                   │
00:17:52 verbose #21224 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:52 verbose #21225 > >
00:17:52 verbose #21226 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:52 verbose #21227 > > inl (.>>.) forall t u. (a : parser t) (b : parser u) : parser (t * u) = fun
00:17:52 verbose #21228 > > input, s =>
00:17:52 verbose #21229 > >     match a (input, s) with
00:17:52 verbose #21230 > >     | Ok (result_a, rest, s) =>
00:17:52 verbose #21231 > >         match b (rest, s) with
00:17:52 verbose #21232 > >         | Ok (result_b, rest, s) => Ok ((result_a, result_b), rest, s)
00:17:52 verbose #21233 > >         | Error e => Error e
00:17:52 verbose #21234 > >     | Error e => Error e
00:17:52 verbose #21235 > >
00:17:52 verbose #21236 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:52 verbose #21237 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:52 verbose #21238 > > │ ### (>>%)                                                                    │
00:17:52 verbose #21239 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:52 verbose #21240 > >
00:17:52 verbose #21241 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:52 verbose #21242 > > inl (>>%) forall t u. (a : parser t) (b : u) : parser u = fun input, s =>
00:17:52 verbose #21243 > >     match a (input, s) with
00:17:52 verbose #21244 > >     | Ok (_, rest, s) => Ok (b, rest, s)
00:17:52 verbose #21245 > >     | Error e => Error e
00:17:53 verbose #21246 > >
00:17:53 verbose #21247 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:53 verbose #21248 > > //// test
00:17:53 verbose #21249 > >
00:17:53 verbose #21250 > > "abc"
00:17:53 verbose #21251 > > |> parse (p_char 'a' >>. p_char 'b')
00:17:53 verbose #21252 > > |> resultm.get
00:17:53 verbose #21253 > > |> sm'.format_debug
00:17:53 verbose #21254 > > |> _assert_eq (
00:17:53 verbose #21255 > >     ('b', "c", { line_text = "ab" |> sm'.string_builder; position = { line =
00:17:53 verbose #21256 > > 1i32; col = 3i32 } })
00:17:53 verbose #21257 > >     |> sm'.format_debug
00:17:53 verbose #21258 > > )
00:17:53 verbose #21259 > >
00:17:53 verbose #21260 > > "abc\ndef\nghi"
00:17:53 verbose #21261 > > |> parse (skip_any_string 5i32 >>. p_char 'a')
00:17:53 verbose #21262 > > |> _assert_eq (Error "parsing.p_char / expected: 'a' / line: 2 / col: 2\ndef\n
00:17:53 verbose #21263 > > ^\n")
00:17:53 verbose #21264 > >
00:17:53 verbose #21265 > > ╭─[ 322.94ms - stdout ]────────────────────────────────────────────────────────╮
00:17:53 verbose #21266 > > │ __assert_eq / actual: "struct ('b', "c", ab, 1, 3)" / expected: "struct      │
00:17:53 verbose #21267 > > │ ('b', "c", ab, 1, 3)"                                                        │
00:17:53 verbose #21268 > > │ __assert_eq / actual: US0_1 "parsing.p_char / expected: 'a' / line: 2 / col: │
00:17:53 verbose #21269 > > │ 2                                                                            │
00:17:53 verbose #21270 > > │ def                                                                          │
00:17:53 verbose #21271 > > │  ^                                                                           │
00:17:53 verbose #21272 > > │ " / expected: US0_1 "parsing.p_char / expected: 'a' / line: 2 / col: 2       │
00:17:53 verbose #21273 > > │ def                                                                          │
00:17:53 verbose #21274 > > │  ^                                                                           │
00:17:53 verbose #21275 > > │ "                                                                            │
00:17:53 verbose #21276 > > │                                                                              │
00:17:53 verbose #21277 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:53 verbose #21278 > >
00:17:53 verbose #21279 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:53 verbose #21280 > > //// test
00:17:53 verbose #21281 > >
00:17:53 verbose #21282 > > "abc"
00:17:53 verbose #21283 > > |> parse_ (p_char_ 'a' >>.$ p_char_ 'b')
00:17:53 verbose #21284 > > |> resultm.get
00:17:53 verbose #21285 > > |> sm'.obj_to_string
00:17:53 verbose #21286 > > |> _assert_eq' (('b', ($'FParsec.Position (null, 0, 1, 3)' : position_)) |>
00:17:53 verbose #21287 > > sm'.obj_to_string)
00:17:53 verbose #21288 > >
00:17:53 verbose #21289 > > ╭─[ 195.01ms - stdout ]────────────────────────────────────────────────────────╮
00:17:53 verbose #21290 > > │ __assert_eq' / actual: "(b, (Ln: 1, Col: 3))" / expected: "(b, (Ln: 1, Col:  │
00:17:53 verbose #21291 > > │ 3))"                                                                         │
00:17:53 verbose #21292 > > │                                                                              │
00:17:53 verbose #21293 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:53 verbose #21294 > >
00:17:53 verbose #21295 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:53 verbose #21296 > > //// test
00:17:53 verbose #21297 > >
00:17:53 verbose #21298 > > "abc\ndef\nghi"
00:17:53 verbose #21299 > > |> parse_ (skip_any_string_ 5 >>.$ p_char_ 'a')
00:17:53 verbose #21300 > > |> resultm.unwrap_err
00:17:53 verbose #21301 > > |> sm'.obj_to_string
00:17:53 verbose #21302 > > |> sm'.replace "\r\n" "\n"
00:17:53 verbose #21303 > > |> _assert_eq "(Error in Ln: 2 Col: 2\ndef\n ^\nExpecting: 'a'\n, Error in Ln: 2
00:17:53 verbose #21304 > > Col: 2\nExpecting: 'a'\n)"
00:17:53 verbose #21305 > >
00:17:53 verbose #21306 > > ╭─[ 172.39ms - stdout ]────────────────────────────────────────────────────────╮
00:17:53 verbose #21307 > > │ __assert_eq / actual: "(Error in Ln: 2 Col: 2                                │
00:17:53 verbose #21308 > > │ def                                                                          │
00:17:53 verbose #21309 > > │  ^                                                                           │
00:17:53 verbose #21310 > > │ Expecting: 'a'                                                               │
00:17:53 verbose #21311 > > │ , Error in Ln: 2 Col: 2                                                      │
00:17:53 verbose #21312 > > │ Expecting: 'a'                                                               │
00:17:53 verbose #21313 > > │ )" / expected: "(Error in Ln: 2 Col: 2                                       │
00:17:53 verbose #21314 > > │ def                                                                          │
00:17:53 verbose #21315 > > │  ^                                                                           │
00:17:53 verbose #21316 > > │ Expecting: 'a'                                                               │
00:17:53 verbose #21317 > > │ , Error in Ln: 2 Col: 2                                                      │
00:17:53 verbose #21318 > > │ Expecting: 'a'                                                               │
00:17:53 verbose #21319 > > │ )"                                                                           │
00:17:53 verbose #21320 > > │                                                                              │
00:17:53 verbose #21321 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:53 verbose #21322 > >
00:17:53 verbose #21323 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:53 verbose #21324 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:53 verbose #21325 > > │ ### none_of                                                                  │
00:17:53 verbose #21326 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:53 verbose #21327 > >
00:17:53 verbose #21328 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:53 verbose #21329 > > inl none_of (chars : list char) : parser char = function
00:17:53 verbose #21330 > >     | "", s =>
00:17:53 verbose #21331 > >         inl chars = chars |> listm'.box |> listm'.to_array'
00:17:53 verbose #21332 > >         Error $'$"parsing.none_of / unexpected end of input / chars: %A{!chars}
00:17:53 verbose #21333 > > / s: %A{!s}"'
00:17:53 verbose #21334 > >     | x, s =>
00:17:53 verbose #21335 > >         inl first_char = x |> sm'.index 0i32
00:17:53 verbose #21336 > >         inl rest = x |> sm'.range (am'.Start 1i32) (am'.End id)
00:17:53 verbose #21337 > >         if chars |> listm'.exists' ((=) first_char) |> not
00:17:53 verbose #21338 > >         then Ok (first_char, rest, s |> update (sm'.obj_to_string first_char))
00:17:53 verbose #21339 > >         else
00:17:53 verbose #21340 > >             inl chars = chars |> listm'.box |> listm'.to_array'
00:17:53 verbose #21341 > >             Error $'$"parsing.none_of / unexpected char: \'{!first_char}\'
00:17:53 verbose #21342 > > chars: %A{!chars} / s: %A{!s}"'
00:17:53 verbose #21343 > >
00:17:53 verbose #21344 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:53 verbose #21345 > > //// test
00:17:53 verbose #21346 > >
00:17:53 verbose #21347 > > "abc"
00:17:53 verbose #21348 > > |> parse (none_of [['a'; 'b'; 'c']])
00:17:53 verbose #21349 > > |> _assert_eq (Error "parsing.none_of / unexpected char: \'a\' / chars: [[|'a';
00:17:53 verbose #21350 > > 'b'; 'c'|]] / s: struct (, 1, 1)")
00:17:53 verbose #21351 > >
00:17:53 verbose #21352 > > "def"
00:17:53 verbose #21353 > > |> parse (none_of [['a'; 'b'; 'c']])
00:17:53 verbose #21354 > > |> resultm.get
00:17:53 verbose #21355 > > |> sm'.format_debug
00:17:53 verbose #21356 > > |> _assert_eq (
00:17:53 verbose #21357 > >     ('d', "ef", { line_text = "d" |> sm'.string_builder; position = { line =
00:17:53 verbose #21358 > > 1i32; col = 2i32 } })
00:17:53 verbose #21359 > >     |> sm'.format_debug
00:17:53 verbose #21360 > > )
00:17:54 verbose #21361 > >
00:17:54 verbose #21362 > > ╭─[ 268.76ms - stdout ]────────────────────────────────────────────────────────╮
00:17:54 verbose #21363 > > │ __assert_eq / actual: US0_1                                                  │
00:17:54 verbose #21364 > > │   "parsing.none_of / unexpected char: 'a' / chars: [|'a'; 'b'; 'c'|] / s:    │
00:17:54 verbose #21365 > > │ struct (, 1, 1)" / expected: US0_1                                           │
00:17:54 verbose #21366 > > │   "parsing.none_of / unexpected char: 'a' / chars: [|'a'; 'b'; 'c'|] / s:    │
00:17:54 verbose #21367 > > │ struct (, 1, 1)"                                                             │
00:17:54 verbose #21368 > > │ __assert_eq / actual: "struct ('d', "ef", d, 1, 2)" / expected: "struct      │
00:17:54 verbose #21369 > > │ ('d', "ef", d, 1, 2)"                                                        │
00:17:54 verbose #21370 > > │                                                                              │
00:17:54 verbose #21371 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:54 verbose #21372 > >
00:17:54 verbose #21373 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:54 verbose #21374 > > //// test
00:17:54 verbose #21375 > >
00:17:54 verbose #21376 > > "abc"
00:17:54 verbose #21377 > > |> parse_ (none_of_ [['a'; 'b'; 'c']])
00:17:54 verbose #21378 > > |> resultm.unwrap_err
00:17:54 verbose #21379 > > |> sm'.obj_to_string
00:17:54 verbose #21380 > > |> sm'.replace "\r\n" "\n"
00:17:54 verbose #21381 > > |> _assert_eq ($'"(Error in Ln: 1 Col: 1\nabc\n^\nExpecting: any char not in
00:17:54 verbose #21382 > > ‘abc’\n, Error in Ln: 1 Col: 1\nExpecting: any char not in ‘abc’\n)"')
00:17:54 verbose #21383 > >
00:17:54 verbose #21384 > > "def"
00:17:54 verbose #21385 > > |> parse_ (none_of_ [['a'; 'b'; 'c']])
00:17:54 verbose #21386 > > |> resultm.get
00:17:54 verbose #21387 > > |> sm'.obj_to_string
00:17:54 verbose #21388 > > |> _assert_eq' (('d', ($'FParsec.Position (null, 0, 1, 2)' : position_)) |>
00:17:54 verbose #21389 > > sm'.obj_to_string)
00:17:54 verbose #21390 > >
00:17:54 verbose #21391 > > ╭─[ 217.32ms - stdout ]────────────────────────────────────────────────────────╮
00:17:54 verbose #21392 > > │ __assert_eq / actual: "(Error in Ln: 1 Col: 1                                │
00:17:54 verbose #21393 > > │ abc                                                                          │
00:17:54 verbose #21394 > > │ ^                                                                            │
00:17:54 verbose #21395 > > │ Expecting: any char not in ‘abc’                                             │
00:17:54 verbose #21396 > > │ , Error in Ln: 1 Col: 1                                                      │
00:17:54 verbose #21397 > > │ Expecting: any char not in ‘abc’                                             │
00:17:54 verbose #21398 > > │ )" / expected: "(Error in Ln: 1 Col: 1                                       │
00:17:54 verbose #21399 > > │ abc                                                                          │
00:17:54 verbose #21400 > > │ ^                                                                            │
00:17:54 verbose #21401 > > │ Expecting: any char not in ‘abc’                                             │
00:17:54 verbose #21402 > > │ , Error in Ln: 1 Col: 1                                                      │
00:17:54 verbose #21403 > > │ Expecting: any char not in ‘abc’                                             │
00:17:54 verbose #21404 > > │ )"                                                                           │
00:17:54 verbose #21405 > > │ __assert_eq' / actual: "(d, (Ln: 1, Col: 2))" / expected: "(d, (Ln: 1, Col:  │
00:17:54 verbose #21406 > > │ 2))"                                                                         │
00:17:54 verbose #21407 > > │                                                                              │
00:17:54 verbose #21408 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:54 verbose #21409 > >
00:17:54 verbose #21410 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:54 verbose #21411 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:54 verbose #21412 > > │ ### (<|>)                                                                    │
00:17:54 verbose #21413 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:54 verbose #21414 > >
00:17:54 verbose #21415 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:54 verbose #21416 > > inl (<|>) forall t. (a : parser t) (b : parser t) : parser t = fun input, s =>
00:17:54 verbose #21417 > >     match a (input, s) with
00:17:54 verbose #21418 > >     | Ok _ as result => result
00:17:54 verbose #21419 > >     | Error _ => b (input, s)
00:17:54 verbose #21420 > >
00:17:54 verbose #21421 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:54 verbose #21422 > > //// test
00:17:54 verbose #21423 > >
00:17:54 verbose #21424 > > "abc"
00:17:54 verbose #21425 > > |> parse (p_char 'a' <|> p_char 'b')
00:17:54 verbose #21426 > > |> resultm.get
00:17:54 verbose #21427 > > |> sm'.format_debug
00:17:54 verbose #21428 > > |> _assert_eq (
00:17:54 verbose #21429 > >     ('a', "bc", { line_text = "a" |> sm'.string_builder; position = { line =
00:17:54 verbose #21430 > > 1i32; col = 2i32 } })
00:17:54 verbose #21431 > >     |> sm'.format_debug
00:17:54 verbose #21432 > > )
00:17:54 verbose #21433 > >
00:17:54 verbose #21434 > > "cba"
00:17:54 verbose #21435 > > |> parse (p_char 'a' <|> p_char 'b')
00:17:54 verbose #21436 > > |> _assert_eq (Error "parsing.p_char / expected: 'b' / line: 1 / col:
00:17:54 verbose #21437 > > 1\ncba\n^\n")
00:17:54 verbose #21438 > >
00:17:54 verbose #21439 > > ╭─[ 287.09ms - stdout ]────────────────────────────────────────────────────────╮
00:17:54 verbose #21440 > > │ __assert_eq / actual: "struct ('a', "bc", a, 1, 2)" / expected: "struct      │
00:17:54 verbose #21441 > > │ ('a', "bc", a, 1, 2)"                                                        │
00:17:54 verbose #21442 > > │ __assert_eq / actual: US0_1 "parsing.p_char / expected: 'b' / line: 1 / col: │
00:17:54 verbose #21443 > > │ 1                                                                            │
00:17:54 verbose #21444 > > │ cba                                                                          │
00:17:54 verbose #21445 > > │ ^                                                                            │
00:17:54 verbose #21446 > > │ " / expected: US0_1 "parsing.p_char / expected: 'b' / line: 1 / col: 1       │
00:17:54 verbose #21447 > > │ cba                                                                          │
00:17:54 verbose #21448 > > │ ^                                                                            │
00:17:54 verbose #21449 > > │ "                                                                            │
00:17:54 verbose #21450 > > │                                                                              │
00:17:54 verbose #21451 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:54 verbose #21452 > >
00:17:54 verbose #21453 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:54 verbose #21454 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:54 verbose #21455 > > │ ### (|>>)                                                                    │
00:17:54 verbose #21456 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:54 verbose #21457 > >
00:17:54 verbose #21458 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:54 verbose #21459 > > inl (|>>) p f : parser _ = fun input =>
00:17:54 verbose #21460 > >     match p input with
00:17:54 verbose #21461 > >     | Ok (result, rest) => Ok (f result, rest)
00:17:54 verbose #21462 > >     | Error e => Error e
00:17:54 verbose #21463 > >
00:17:54 verbose #21464 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:54 verbose #21465 > > //// test
00:17:54 verbose #21466 > >
00:17:54 verbose #21467 > > "abc"
00:17:54 verbose #21468 > > |> parse (p_char 'a' |>> sm'.char_to_upper)
00:17:54 verbose #21469 > > |> resultm.get
00:17:54 verbose #21470 > > |> sm'.format_debug
00:17:54 verbose #21471 > > |> _assert_eq (
00:17:54 verbose #21472 > >     ('A', "bc", { line_text = "a" |> sm'.string_builder; position = { line =
00:17:54 verbose #21473 > > 1i32; col = 2i32 } })
00:17:54 verbose #21474 > >     |> sm'.format_debug
00:17:54 verbose #21475 > > )
00:17:55 verbose #21476 > >
00:17:55 verbose #21477 > > ╭─[ 248.10ms - stdout ]────────────────────────────────────────────────────────╮
00:17:55 verbose #21478 > > │ __assert_eq / actual: "struct ('A', "bc", a, 1, 2)" / expected: "struct      │
00:17:55 verbose #21479 > > │ ('A', "bc", a, 1, 2)"                                                        │
00:17:55 verbose #21480 > > │                                                                              │
00:17:55 verbose #21481 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:55 verbose #21482 > >
00:17:55 verbose #21483 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:55 verbose #21484 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:55 verbose #21485 > > │ ### many                                                                     │
00:17:55 verbose #21486 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:55 verbose #21487 > >
00:17:55 verbose #21488 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:55 verbose #21489 > > inl many p : parser (list _) = fun input =>
00:17:55 verbose #21490 > >     let rec loop acc input =
00:17:55 verbose #21491 > >         match p input with
00:17:55 verbose #21492 > >         | Ok (result, rest) => loop (result :: acc) rest
00:17:55 verbose #21493 > >         | Error _ => Ok (listm.rev acc, input)
00:17:55 verbose #21494 > >     loop [[]] input
00:17:55 verbose #21495 > >
00:17:55 verbose #21496 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:55 verbose #21497 > > //// test
00:17:55 verbose #21498 > >
00:17:55 verbose #21499 > > "aaabbc"
00:17:55 verbose #21500 > > |> parse (many (p_char 'a' <|> p_char 'b'))
00:17:55 verbose #21501 > > |> resultm.get
00:17:55 verbose #21502 > > |> sm'.format_debug
00:17:55 verbose #21503 > > |> _assert_eq (
00:17:55 verbose #21504 > >     ([['a'; 'a'; 'a'; 'b'; 'b']], "c", { line_text = "aaabb" |>
00:17:55 verbose #21505 > > sm'.string_builder; position = { line = 1i32; col = 6i32 } })
00:17:55 verbose #21506 > >     |> sm'.format_debug
00:17:55 verbose #21507 > > )
00:17:55 verbose #21508 > >
00:17:55 verbose #21509 > > ╭─[ 277.90ms - stdout ]────────────────────────────────────────────────────────╮
00:17:55 verbose #21510 > > │ __assert_eq / actual: "struct (UH0_1 ('a', UH0_1 ('a', UH0_1 ('a', UH0_1     │
00:17:55 verbose #21511 > > │ ('b', UH0_1 ('b', UH0_0))))),                                                │
00:17:55 verbose #21512 > > │         "c", aaabb, 1, 6)" / expected: "struct (UH0_1 ('a', UH0_1 ('a',      │
00:17:55 verbose #21513 > > │ UH0_1 ('a', UH0_1 ('b', UH0_1 ('b', UH0_0))))),                              │
00:17:55 verbose #21514 > > │         "c", aaabb, 1, 6)"                                                   │
00:17:55 verbose #21515 > > │                                                                              │
00:17:55 verbose #21516 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:55 verbose #21517 > >
00:17:55 verbose #21518 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:55 verbose #21519 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:55 verbose #21520 > > │ ### many1_chars                                                              │
00:17:55 verbose #21521 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:55 verbose #21522 > >
00:17:55 verbose #21523 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:55 verbose #21524 > > inl many1_chars p : parser string = fun input =>
00:17:55 verbose #21525 > >     match p input with
00:17:55 verbose #21526 > >     | Error e => Error e
00:17:55 verbose #21527 > >     | Ok (first_result, rest) =>
00:17:55 verbose #21528 > >         let rec loop acc input =
00:17:55 verbose #21529 > >             match p input with
00:17:55 verbose #21530 > >             | Ok (result, rest) => loop (acc +. sm'.obj_to_string result) rest
00:17:55 verbose #21531 > >             | Error _ => Ok (acc, input)
00:17:55 verbose #21532 > >         loop (sm'.obj_to_string first_result) rest
00:17:55 verbose #21533 > >
00:17:55 verbose #21534 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:55 verbose #21535 > > //// test
00:17:55 verbose #21536 > >
00:17:55 verbose #21537 > > "aaabbc"
00:17:55 verbose #21538 > > |> parse (many1_chars (p_char 'a' <|> p_char 'b'))
00:17:55 verbose #21539 > > |> resultm.get
00:17:55 verbose #21540 > > |> sm'.format_debug
00:17:55 verbose #21541 > > |> _assert_eq (
00:17:55 verbose #21542 > >     ("aaabb", "c", { line_text = "aaabb" |> sm'.string_builder; position = {
00:17:55 verbose #21543 > > line = 1i32; col = 6i32 } })
00:17:55 verbose #21544 > >     |> sm'.format_debug
00:17:55 verbose #21545 > > )
00:17:56 verbose #21546 > >
00:17:56 verbose #21547 > > ╭─[ 307.79ms - stdout ]────────────────────────────────────────────────────────╮
00:17:56 verbose #21548 > > │ __assert_eq / actual: "struct ("aaabb", "c", aaabb, 1, 6)" / expected:       │
00:17:56 verbose #21549 > > │ "struct ("aaabb", "c", aaabb, 1, 6)"                                         │
00:17:56 verbose #21550 > > │                                                                              │
00:17:56 verbose #21551 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:56 verbose #21552 > >
00:17:56 verbose #21553 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:56 verbose #21554 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:56 verbose #21555 > > │ ### many_chars                                                               │
00:17:56 verbose #21556 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:56 verbose #21557 > >
00:17:56 verbose #21558 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:56 verbose #21559 > > inl many_chars p : parser string = fun input =>
00:17:56 verbose #21560 > >     match many1_chars p input with
00:17:56 verbose #21561 > >     | Ok (result, rest) => Ok (result, rest)
00:17:56 verbose #21562 > >     | Error e => Ok ("", input)
00:17:56 verbose #21563 > >
00:17:56 verbose #21564 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:56 verbose #21565 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:56 verbose #21566 > > │ ### many_chars_till                                                          │
00:17:56 verbose #21567 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:56 verbose #21568 > >
00:17:56 verbose #21569 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:56 verbose #21570 > > inl many_chars_till p end_p : parser string = fun input =>
00:17:56 verbose #21571 > >     match end_p input with
00:17:56 verbose #21572 > >     | Ok _ => Ok ("", input)
00:17:56 verbose #21573 > >     | Error _ =>
00:17:56 verbose #21574 > >         match many_chars p input with
00:17:56 verbose #21575 > >         | Ok (result, rest) => Ok (result, rest)
00:17:56 verbose #21576 > >         | Error e => Error e
00:17:56 verbose #21577 > >
00:17:56 verbose #21578 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:56 verbose #21579 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:56 verbose #21580 > > │ ### many1                                                                    │
00:17:56 verbose #21581 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:56 verbose #21582 > >
00:17:56 verbose #21583 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:56 verbose #21584 > > inl many1 p : parser (list _) = fun input =>
00:17:56 verbose #21585 > >     match p input with
00:17:56 verbose #21586 > >     | Error e => Error e
00:17:56 verbose #21587 > >     | Ok (first_result, rest) =>
00:17:56 verbose #21588 > >         let rec loop acc input =
00:17:56 verbose #21589 > >             match p input with
00:17:56 verbose #21590 > >             | Ok (result, rest) => loop (result :: acc) rest
00:17:56 verbose #21591 > >             | Error _ => Ok (listm.rev acc, input)
00:17:56 verbose #21592 > >         loop [[ first_result ]] rest
00:17:56 verbose #21593 > >
00:17:56 verbose #21594 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:56 verbose #21595 > > //// test
00:17:56 verbose #21596 > >
00:17:56 verbose #21597 > > "aaabbc"
00:17:56 verbose #21598 > > |> parse (many1 (p_char 'a' <|> p_char 'b'))
00:17:56 verbose #21599 > > |> resultm.get
00:17:56 verbose #21600 > > |> sm'.format_debug
00:17:56 verbose #21601 > > |> _assert_eq (
00:17:56 verbose #21602 > >     ([['a'; 'a'; 'a'; 'b'; 'b']], "c", { line_text = "aaabb" |>
00:17:56 verbose #21603 > > sm'.string_builder; position = { line = 1i32; col = 6i32 } })
00:17:56 verbose #21604 > >     |> sm'.format_debug
00:17:56 verbose #21605 > > )
00:17:56 verbose #21606 > >
00:17:56 verbose #21607 > > "bcc"
00:17:56 verbose #21608 > > |> parse (many1 (p_char 'a' <|> p_char 'b'))
00:17:56 verbose #21609 > > |> resultm.get
00:17:56 verbose #21610 > > |> sm'.format_debug
00:17:56 verbose #21611 > > |> _assert_eq (
00:17:56 verbose #21612 > >     ([['b']], "cc", { line_text = "b" |> sm'.string_builder; position = { line =
00:17:56 verbose #21613 > > 1i32; col = 2i32 } })
00:17:56 verbose #21614 > >     |> sm'.format_debug
00:17:56 verbose #21615 > > )
00:17:56 verbose #21616 > >
00:17:56 verbose #21617 > > "cba"
00:17:56 verbose #21618 > > |> parse (many1 (p_char 'a' <|> p_char 'b'))
00:17:56 verbose #21619 > > |> _assert_eq (Error "parsing.p_char / expected: 'b' / line: 1 / col:
00:17:56 verbose #21620 > > 1\ncba\n^\n")
00:17:57 verbose #21621 > >
00:17:57 verbose #21622 > > ╭─[ 939.12ms - stdout ]────────────────────────────────────────────────────────╮
00:17:57 verbose #21623 > > │ __assert_eq / actual: "struct (UH0_1 ('a', UH0_1 ('a', UH0_1 ('a', UH0_1     │
00:17:57 verbose #21624 > > │ ('b', UH0_1 ('b', UH0_0))))),                                                │
00:17:57 verbose #21625 > > │         "c", aaabb, 1, 6)" / expected: "struct (UH0_1 ('a', UH0_1 ('a',      │
00:17:57 verbose #21626 > > │ UH0_1 ('a', UH0_1 ('b', UH0_1 ('b', UH0_0))))),                              │
00:17:57 verbose #21627 > > │         "c", aaabb, 1, 6)"                                                   │
00:17:57 verbose #21628 > > │ __assert_eq / actual: "struct (UH0_1 ('b', UH0_0), "cc", b, 1, 2)" /         │
00:17:57 verbose #21629 > > │ expected: "struct (UH0_1 ('b', UH0_0), "cc", b, 1, 2)"                       │
00:17:57 verbose #21630 > > │ __assert_eq / actual: US1_1 "parsing.p_char / expected: 'b' / line: 1 / col: │
00:17:57 verbose #21631 > > │ 1                                                                            │
00:17:57 verbose #21632 > > │ cba                                                                          │
00:17:57 verbose #21633 > > │ ^                                                                            │
00:17:57 verbose #21634 > > │ " / expected: US1_1 "parsing.p_char / expected: 'b' / line: 1 / col: 1       │
00:17:57 verbose #21635 > > │ cba                                                                          │
00:17:57 verbose #21636 > > │ ^                                                                            │
00:17:57 verbose #21637 > > │ "                                                                            │
00:17:57 verbose #21638 > > │                                                                              │
00:17:57 verbose #21639 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:57 verbose #21640 > >
00:17:57 verbose #21641 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:57 verbose #21642 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:57 verbose #21643 > > │ ### many1_strings                                                            │
00:17:57 verbose #21644 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:57 verbose #21645 > >
00:17:57 verbose #21646 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:57 verbose #21647 > > inl many1_strings p : parser string = fun input =>
00:17:57 verbose #21648 > >     match many1 p input with
00:17:57 verbose #21649 > >     | Ok (results, rest) =>
00:17:57 verbose #21650 > >         Ok (results |> listm.map sm'.obj_to_string |> listm'.box |> seq.of_list'
00:17:57 verbose #21651 > > |> sm'.concat "", rest)
00:17:57 verbose #21652 > >     | Error e => Error e
00:17:57 verbose #21653 > >
00:17:57 verbose #21654 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:57 verbose #21655 > > //// test
00:17:57 verbose #21656 > >
00:17:57 verbose #21657 > > "aaabbc"
00:17:57 verbose #21658 > > |> parse (many1_strings (p_char 'a' <|> p_char 'b'))
00:17:57 verbose #21659 > > |> resultm.get
00:17:57 verbose #21660 > > |> sm'.format_debug
00:17:57 verbose #21661 > > |> _assert_eq (
00:17:57 verbose #21662 > >     ("aaabb", "c", { line_text = "aaabb" |> sm'.string_builder; position = {
00:17:57 verbose #21663 > > line = 1i32; col = 6i32 } })
00:17:57 verbose #21664 > >     |> sm'.format_debug
00:17:57 verbose #21665 > > )
00:17:57 verbose #21666 > >
00:17:57 verbose #21667 > > ╭─[ 483.99ms - stdout ]────────────────────────────────────────────────────────╮
00:17:57 verbose #21668 > > │ __assert_eq / actual: "struct ("aaabb", "c", aaabb, 1, 6)" / expected:       │
00:17:57 verbose #21669 > > │ "struct ("aaabb", "c", aaabb, 1, 6)"                                         │
00:17:57 verbose #21670 > > │                                                                              │
00:17:57 verbose #21671 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:57 verbose #21672 > >
00:17:57 verbose #21673 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:57 verbose #21674 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:57 verbose #21675 > > │ ### many_strings                                                             │
00:17:57 verbose #21676 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:57 verbose #21677 > >
00:17:57 verbose #21678 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:57 verbose #21679 > > inl many_strings p : parser string = fun input =>
00:17:57 verbose #21680 > >     match many p input with
00:17:57 verbose #21681 > >     | Ok (results, rest) =>
00:17:57 verbose #21682 > >         Ok (results |> listm.map sm'.obj_to_string |> listm'.box |> seq.of_list'
00:17:57 verbose #21683 > > |> sm'.concat "", rest)
00:17:57 verbose #21684 > >     | Error e => Ok ("", input)
00:17:58 verbose #21685 > >
00:17:58 verbose #21686 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:58 verbose #21687 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:58 verbose #21688 > > │ ### choice                                                                   │
00:17:58 verbose #21689 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:58 verbose #21690 > >
00:17:58 verbose #21691 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:58 verbose #21692 > > inl choice parsers : parser _ = fun input =>
00:17:58 verbose #21693 > >     let rec loop = function
00:17:58 verbose #21694 > >         | [[]] => Error "choice / no parsers succeeded"
00:17:58 verbose #21695 > >         | p :: ps =>
00:17:58 verbose #21696 > >             match p input with
00:17:58 verbose #21697 > >             | Ok _ as result => result
00:17:58 verbose #21698 > >             | Error _ => loop ps
00:17:58 verbose #21699 > >     loop parsers
00:17:58 verbose #21700 > >
00:17:58 verbose #21701 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:58 verbose #21702 > > //// test
00:17:58 verbose #21703 > >
00:17:58 verbose #21704 > > "bca"
00:17:58 verbose #21705 > > |> parse (choice [[p_char 'a'; p_char 'b'; p_char 'c']])
00:17:58 verbose #21706 > > |> resultm.get
00:17:58 verbose #21707 > > |> sm'.format_debug
00:17:58 verbose #21708 > > |> _assert_eq (
00:17:58 verbose #21709 > >     ('b', "ca", { line_text = "b" |> sm'.string_builder; position = { line =
00:17:58 verbose #21710 > > 1i32; col = 2i32 } })
00:17:58 verbose #21711 > >     |> sm'.format_debug
00:17:58 verbose #21712 > > )
00:17:58 verbose #21713 > >
00:17:58 verbose #21714 > > "cba"
00:17:58 verbose #21715 > > |> parse (choice [[p_char 'a'; p_char 'b'; p_char 'c']])
00:17:58 verbose #21716 > > |> resultm.get
00:17:58 verbose #21717 > > |> sm'.format_debug
00:17:58 verbose #21718 > > |> _assert_eq (
00:17:58 verbose #21719 > >     ('c', "ba", { line_text = "c" |> sm'.string_builder; position = { line =
00:17:58 verbose #21720 > > 1i32; col = 2i32 } })
00:17:58 verbose #21721 > >     |> sm'.format_debug
00:17:58 verbose #21722 > > )
00:17:58 verbose #21723 > >
00:17:58 verbose #21724 > > ╭─[ 313.17ms - stdout ]────────────────────────────────────────────────────────╮
00:17:58 verbose #21725 > > │ __assert_eq / actual: "struct ('b', "ca", b, 1, 2)" / expected: "struct      │
00:17:58 verbose #21726 > > │ ('b', "ca", b, 1, 2)"                                                        │
00:17:58 verbose #21727 > > │ __assert_eq / actual: "struct ('c', "ba", c, 1, 2)" / expected: "struct      │
00:17:58 verbose #21728 > > │ ('c', "ba", c, 1, 2)"                                                        │
00:17:58 verbose #21729 > > │                                                                              │
00:17:58 verbose #21730 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:58 verbose #21731 > >
00:17:58 verbose #21732 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:58 verbose #21733 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:58 verbose #21734 > > │ ### between                                                                  │
00:17:58 verbose #21735 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:58 verbose #21736 > >
00:17:58 verbose #21737 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:58 verbose #21738 > > inl between p_open p_close p_content : parser _ = fun input =>
00:17:58 verbose #21739 > >     match p_open input with
00:17:58 verbose #21740 > >     | Ok (_, rest1) =>
00:17:58 verbose #21741 > >         match p_content rest1 with
00:17:58 verbose #21742 > >         | Ok (result, rest2) =>
00:17:58 verbose #21743 > >             match p_close rest2 with
00:17:58 verbose #21744 > >             | Ok (_, rest3) => Ok (result, rest3)
00:17:58 verbose #21745 > >             | Error e => Error $'$"between / expected closing delimiter / e:
00:17:58 verbose #21746 > > %A{!e} / input: %A{!input} / rest1: %A{!rest1} / rest2: %A{!rest2}"'
00:17:58 verbose #21747 > >         | Error _ => Error "between / expected content"
00:17:58 verbose #21748 > >     | Error e => Error e
00:17:58 verbose #21749 > >
00:17:58 verbose #21750 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:58 verbose #21751 > > //// test
00:17:58 verbose #21752 > >
00:17:58 verbose #21753 > > "[[aaabb]]"
00:17:58 verbose #21754 > > |> parse (between (p_char '[[') (p_char ']]') (many1_chars (p_char 'a' <|>
00:17:58 verbose #21755 > > p_char 'b')))
00:17:58 verbose #21756 > > |> resultm.get
00:17:58 verbose #21757 > > |> sm'.format_debug
00:17:58 verbose #21758 > > |> _assert_eq (
00:17:58 verbose #21759 > >     ("aaabb", "", { line_text = "[[aaabb]]" |> sm'.string_builder; position = {
00:17:58 verbose #21760 > > line = 1i32; col = 8i32 } })
00:17:58 verbose #21761 > >     |> sm'.format_debug
00:17:58 verbose #21762 > > )
00:17:58 verbose #21763 > >
00:17:58 verbose #21764 > > "[[aaabb"
00:17:58 verbose #21765 > > |> parse (between (p_char '[[') (p_char ']]') (many1_chars (p_char 'a' <|>
00:17:58 verbose #21766 > > p_char 'b')))
00:17:58 verbose #21767 > > |> resultm.unwrap_err
00:17:58 verbose #21768 > > |> sm'.format_debug
00:17:58 verbose #21769 > > |> _assert_eq "\"between / expected closing delimiter / e: \"parsing.p_char
00:17:58 verbose #21770 > > unexpected end of input / s: struct ([[aaabb, 1, 7)\" / input: struct
00:17:58 verbose #21771 > > (\"[[aaabb\", [[aaabb, 1, 1) / rest1: struct (\"aaabb\", [[aaabb, 1, 2) / rest2:
00:17:58 verbose #21772 > > struct (\"\", [[aaabb, 1, 7)\""
00:17:59 verbose #21773 > >
00:17:59 verbose #21774 > > ╭─[ 593.73ms - stdout ]────────────────────────────────────────────────────────╮
00:17:59 verbose #21775 > > │ __assert_eq / actual: "struct ("aaabb", "", [aaabb], 1, 8)" / expected:      │
00:17:59 verbose #21776 > > │ "struct ("aaabb", "", [aaabb], 1, 8)"                                        │
00:17:59 verbose #21777 > > │ __assert_eq / actual: ""between / expected closing delimiter / e:            │
00:17:59 verbose #21778 > > │ "parsing.p_char / unexpected end of input / s: struct ([aaabb, 1, 7)" /      │
00:17:59 verbose #21779 > > │ input: struct ("[aaabb", [aaabb, 1, 1) / rest1: struct ("aaabb", [aaabb, 1,  │
00:17:59 verbose #21780 > > │ 2) / rest2: struct ("", [aaabb, 1, 7)"" / expected: ""between / expected     │
00:17:59 verbose #21781 > > │ closing delimiter / e: "parsing.p_char / unexpected end of input / s: struct │
00:17:59 verbose #21782 > > │ ([aaabb, 1, 7)" / input: struct ("[aaabb", [aaabb, 1, 1) / rest1: struct     │
00:17:59 verbose #21783 > > │ ("aaabb", [aaabb, 1, 2) / rest2: struct ("", [aaabb, 1, 7)""                 │
00:17:59 verbose #21784 > > │                                                                              │
00:17:59 verbose #21785 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:59 verbose #21786 > >
00:17:59 verbose #21787 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:59 verbose #21788 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:59 verbose #21789 > > │ ### sep_by                                                                   │
00:17:59 verbose #21790 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:59 verbose #21791 > >
00:17:59 verbose #21792 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:59 verbose #21793 > > inl sep_by p sep : parser (list _) = fun input, s =>
00:17:59 verbose #21794 > >     let rec loop acc input s =
00:17:59 verbose #21795 > >         match p (input, s) with
00:17:59 verbose #21796 > >         | Error _ => Ok (acc |> listm.rev, input, s)
00:17:59 verbose #21797 > >         | Ok (result, rest, s) =>
00:17:59 verbose #21798 > >             match sep (rest, s) with
00:17:59 verbose #21799 > >             | Error _ => Ok ((result :: acc) |> listm.rev, rest, s)
00:17:59 verbose #21800 > >             | Ok (_, rest, s) => loop (result :: acc) rest s
00:17:59 verbose #21801 > >     loop [[]] input s
00:17:59 verbose #21802 > >
00:17:59 verbose #21803 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:59 verbose #21804 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:59 verbose #21805 > > │ ### span                                                                     │
00:17:59 verbose #21806 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:59 verbose #21807 > >
00:17:59 verbose #21808 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:59 verbose #21809 > > inl span pred str =
00:17:59 verbose #21810 > >     let rec loop i =
00:17:59 verbose #21811 > >         if i >= sm'.length str
00:17:59 verbose #21812 > >         then i
00:17:59 verbose #21813 > >         elif pred (str |> sm'.index i)
00:17:59 verbose #21814 > >         then loop (i + 1)
00:17:59 verbose #21815 > >         else i
00:17:59 verbose #21816 > >     loop 0
00:17:59 verbose #21817 > >
00:17:59 verbose #21818 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:59 verbose #21819 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:59 verbose #21820 > > │ ### spaces1                                                                  │
00:17:59 verbose #21821 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:59 verbose #21822 > >
00:17:59 verbose #21823 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:59 verbose #21824 > > inl spaces1 () : parser () = fun input, s =>
00:17:59 verbose #21825 > >     match input |> span fun c => c = ' ' with
00:17:59 verbose #21826 > >     | 0i32 => Error "spaces1 / expected at least one space"
00:17:59 verbose #21827 > >     | n => Ok ((), input |> sm'.range (am'.Start n) (am'.End id), s)
00:17:59 verbose #21828 > >
00:17:59 verbose #21829 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:59 verbose #21830 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:59 verbose #21831 > > │ ### spaces                                                                   │
00:17:59 verbose #21832 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:59 verbose #21833 > >
00:17:59 verbose #21834 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:59 verbose #21835 > > inl spaces () : parser () = fun input, s =>
00:17:59 verbose #21836 > >     input
00:17:59 verbose #21837 > >     |> span fun c => c = ' '
00:17:59 verbose #21838 > >     |> fun (n : i32) => Ok ((), input |> sm'.range (am'.Start n) (am'.End id),
00:17:59 verbose #21839 > > s)
00:17:59 verbose #21840 > >
00:17:59 verbose #21841 > > ── markdown ────────────────────────────────────────────────────────────────────
00:17:59 verbose #21842 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:17:59 verbose #21843 > > │ ### p_digit                                                                  │
00:17:59 verbose #21844 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:17:59 verbose #21845 > >
00:17:59 verbose #21846 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:59 verbose #21847 > > inl p_digit () : parser char = fun input, s =>
00:17:59 verbose #21848 > >     match input |> sm'.index 0i32 with
00:17:59 verbose #21849 > >     | ('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') as c =>
00:17:59 verbose #21850 > >         Ok (c, input |> sm'.range (am'.Start 1i32) (am'.End id), s)
00:17:59 verbose #21851 > >     | c => Error $'$"p_digit / unexpected char: {!c}"'
00:17:59 verbose #21852 > >
00:17:59 verbose #21853 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:17:59 verbose #21854 > > //// test
00:17:59 verbose #21855 > >
00:17:59 verbose #21856 > > "1 2 3"
00:17:59 verbose #21857 > > |> parse (sep_by (p_digit ()) (spaces1 ()))
00:17:59 verbose #21858 > > |> resultm.get
00:17:59 verbose #21859 > > |> sm'.format_debug
00:17:59 verbose #21860 > > |> _assert_eq (
00:17:59 verbose #21861 > >     ([['1'; '2'; '3']], "", { line_text = "" |> sm'.string_builder; position = {
00:17:59 verbose #21862 > > col = 1i32; line = 1i32 } })
00:17:59 verbose #21863 > >     |> sm'.format_debug
00:17:59 verbose #21864 > > )
00:18:00 verbose #21865 > >
00:18:00 verbose #21866 > > ╭─[ 295.65ms - stdout ]────────────────────────────────────────────────────────╮
00:18:00 verbose #21867 > > │ __assert_eq / actual: "struct (UH0_1 ('1', UH0_1 ('2', UH0_1 ('3', UH0_0))), │
00:18:00 verbose #21868 > > │ "", , 1, 1)" / expected: "struct (UH0_1 ('1', UH0_1 ('2', UH0_1 ('3',        │
00:18:00 verbose #21869 > > │ UH0_0))), "", , 1, 1)"                                                       │
00:18:00 verbose #21870 > > │                                                                              │
00:18:00 verbose #21871 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:00 verbose #21872 > >
00:18:00 verbose #21873 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:00 verbose #21874 > > //// test
00:18:00 verbose #21875 > >
00:18:00 verbose #21876 > > "1 a 2"
00:18:00 verbose #21877 > > |> parse (sep_by (p_digit ()) (spaces1 ()))
00:18:00 verbose #21878 > > |> resultm.get
00:18:00 verbose #21879 > > |> sm'.format_debug
00:18:00 verbose #21880 > > |> _assert_eq (
00:18:00 verbose #21881 > >     ([['1']], "a 2", { line_text = "" |> sm'.string_builder; position = { col =
00:18:00 verbose #21882 > > 1i32; line = 1i32 } })
00:18:00 verbose #21883 > >     |> sm'.format_debug
00:18:00 verbose #21884 > > )
00:18:00 verbose #21885 > >
00:18:00 verbose #21886 > > ╭─[ 279.78ms - stdout ]────────────────────────────────────────────────────────╮
00:18:00 verbose #21887 > > │ __assert_eq / actual: "struct (UH0_1 ('1', UH0_0), "a 2", , 1, 1)" /         │
00:18:00 verbose #21888 > > │ expected: "struct (UH0_1 ('1', UH0_0), "a 2", , 1, 1)"                       │
00:18:00 verbose #21889 > > │                                                                              │
00:18:00 verbose #21890 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:00 verbose #21891 > >
00:18:00 verbose #21892 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:00 verbose #21893 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:00 verbose #21894 > > │ ### opt                                                                      │
00:18:00 verbose #21895 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:00 verbose #21896 > >
00:18:00 verbose #21897 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:00 verbose #21898 > > inl opt p : parser (option _) = fun input, s =>
00:18:00 verbose #21899 > >     match p (input, s) with
00:18:00 verbose #21900 > >     | Ok (result, rest, s) => Ok (Some result, rest, s)
00:18:00 verbose #21901 > >     | Error _ => Ok (None, input, s)
00:18:00 verbose #21902 > >
00:18:00 verbose #21903 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:00 verbose #21904 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:00 verbose #21905 > > │ ### rest_of_line                                                             │
00:18:00 verbose #21906 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:00 verbose #21907 > >
00:18:00 verbose #21908 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:00 verbose #21909 > > inl rest_of_line () : parser string = fun input, s =>
00:18:00 verbose #21910 > >     inl i : i32 = input |> span ((<>) '\n')
00:18:00 verbose #21911 > >     Ok (input |> sm'.range (am'.Start i) (am'.End id), input |> sm'.range
00:18:00 verbose #21912 > > (am'.Start i) (am'.End id), s)
00:18:00 verbose #21913 > >
00:18:00 verbose #21914 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:00 verbose #21915 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:00 verbose #21916 > > │ ### eof                                                                      │
00:18:00 verbose #21917 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:00 verbose #21918 > >
00:18:00 verbose #21919 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:00 verbose #21920 > > inl eof () : parser () = fun input, s =>
00:18:00 verbose #21921 > >     if sm'.length input = 0i32
00:18:00 verbose #21922 > >     then Ok ((), input, s)
00:18:00 verbose #21923 > >     else Error $'$"parsing.eof / expected end of input / input: %A{!input}"'
00:18:01 verbose #21924 > 00:00:21 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 74369 }
00:18:01 verbose #21925 > 00:00:21   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:18:01 verbose #21926 >     "nbconvert",
00:18:01 verbose #21927 >     "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb",
00:18:01 verbose #21928 >     "--to",
00:18:01 verbose #21929 >     "html",
00:18:01 verbose #21930 >     "--HTMLExporter.theme=dark",
00:18:01 verbose #21931 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:01 verbose #21932 > 00:00:21 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb to html
00:18:01 verbose #21933 > 00:00:21 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:18:01 verbose #21934 > 00:00:21 verbose #7 !   validate(nb)
00:18:02 verbose #21935 > 00:00:22 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:18:02 verbose #21936 > 00:00:22 verbose #9 !   return _pygments_highlight(
00:18:02 verbose #21937 > 00:00:22 verbose #10 ! [NbConvertApp] Writing 479664 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.html
00:18:02 verbose #21938 > 00:00:23 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 }
00:18:02 verbose #21939 > 00:00:23   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 }
00:18:02 verbose #21940 > 00:00:23   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:18:02 verbose #21941 >     "-c",
00:18:02 verbose #21942 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:18:02 verbose #21943 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:03 verbose #21944 > 00:00:23 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:18:03 verbose #21945 > 00:00:23   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:18:03 verbose #21946 > 00:00:23   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 75326 }
00:18:03   debug #21947 runtime.execute_with_options_async / { exit_code = 0; output_length = 81019 }
00:18:03   debug #28 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path parsing.dib --retries 3
00:18:03   debug #21948 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path threading.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:03 verbose #21949 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "threading.dib", "--retries", "3"])) }
00:18:03 verbose #21950 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:18:03 verbose #21951 >     "repl",
00:18:03 verbose #21952 >     "--exit-after-run",
00:18:03 verbose #21953 >     "--run",
00:18:03 verbose #21954 >     "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib",
00:18:03 verbose #21955 >     "--output-path",
00:18:03 verbose #21956 >     "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb",
00:18:03 verbose #21957 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:18:04 verbose #21958 > >
00:18:04 verbose #21959 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:04 verbose #21960 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:04 verbose #21961 > > │ # threading                                                                  │
00:18:04 verbose #21962 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:07 verbose #21963 > >
00:18:07 verbose #21964 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:07 verbose #21965 > > open rust
00:18:07 verbose #21966 > > open rust_operators
00:18:07 verbose #21967 > >
00:18:07 verbose #21968 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:07 verbose #21969 > > //// test
00:18:07 verbose #21970 > >
00:18:07 verbose #21971 > > open testing
00:18:07 verbose #21972 > >
00:18:07 verbose #21973 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:07 verbose #21974 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:07 verbose #21975 > > │ ## rust                                                                      │
00:18:07 verbose #21976 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:07 verbose #21977 > >
00:18:07 verbose #21978 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:07 verbose #21979 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:07 verbose #21980 > > │ ### sleep                                                                    │
00:18:07 verbose #21981 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:07 verbose #21982 > >
00:18:07 verbose #21983 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:07 verbose #21984 > > inl sleep (duration : date_time.duration) : () =
00:18:07 verbose #21985 > >     inl duration = join duration
00:18:07 verbose #21986 > >     !\($'"std::thread::sleep(!duration)"')
00:18:07 verbose #21987 > >
00:18:07 verbose #21988 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:07 verbose #21989 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:07 verbose #21990 > > │ ### join_handle                                                              │
00:18:07 verbose #21991 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:07 verbose #21992 > >
00:18:07 verbose #21993 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:07 verbose #21994 > > nominal join_handle t =
00:18:07 verbose #21995 > >     `(
00:18:07 verbose #21996 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:18:07 verbose #21997 > > Fable.Core.Emit(\"std::thread::JoinHandle<$0>\")>]]\n#endif\ntype
00:18:07 verbose #21998 > > std_thread_JoinHandle<'T> = class end"
00:18:07 verbose #21999 > >         $'' : $'std_thread_JoinHandle<`t>'
00:18:07 verbose #22000 > >     )
00:18:07 verbose #22001 > >
00:18:07 verbose #22002 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:07 verbose #22003 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:07 verbose #22004 > > │ ### spawn                                                                    │
00:18:07 verbose #22005 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:07 verbose #22006 > >
00:18:07 verbose #22007 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:07 verbose #22008 > > inl spawn forall t. depth flag (x : () -> t) : join_handle t =
00:18:07 verbose #22009 > >     if flag = 1u8
00:18:07 verbose #22010 > >     then (!\($'"true; let __spawn = std::thread::spawn(move || { //"') : bool)
00:18:07 verbose #22011 > > |> ignore
00:18:07 verbose #22012 > >     else (!\($'"true; let __spawn = std::thread::spawn(|| { //"') : bool) |>
00:18:07 verbose #22013 > > ignore
00:18:07 verbose #22014 > >
00:18:07 verbose #22015 > >     let x' = x ()
00:18:07 verbose #22016 > >     inl x' = join x'
00:18:07 verbose #22017 > >
00:18:07 verbose #22018 > >     x' |> rust.fix_closure depth
00:18:07 verbose #22019 > >
00:18:07 verbose #22020 > >     !\($'"__spawn"')
00:18:08 verbose #22021 > >
00:18:08 verbose #22022 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:08 verbose #22023 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:08 verbose #22024 > > │ ### join'                                                                    │
00:18:08 verbose #22025 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:08 verbose #22026 > >
00:18:08 verbose #22027 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:08 verbose #22028 > > inl join' forall t.
00:18:08 verbose #22029 > >     (x : join_handle t)
00:18:08 verbose #22030 > >     : resultm.result'
00:18:08 verbose #22031 > >         t
00:18:08 verbose #22032 > >         (
00:18:08 verbose #22033 > >             rust.box (
00:18:08 verbose #22034 > >                 rust.lifetime_ref
00:18:08 verbose #22035 > >                     rust.dyn'
00:18:08 verbose #22036 > >                     (
00:18:08 verbose #22037 > >                         rust.lifetime_join
00:18:08 verbose #22038 > >                             rust.any
00:18:08 verbose #22039 > >                             (
00:18:08 verbose #22040 > >                                 rust.lifetime_ref
00:18:08 verbose #22041 > >                                     rust.send
00:18:08 verbose #22042 > >                                     rust.static_lifetime
00:18:08 verbose #22043 > >                             )
00:18:08 verbose #22044 > >                     )
00:18:08 verbose #22045 > >             )
00:18:08 verbose #22046 > >         ) =
00:18:08 verbose #22047 > >     !\\(x, $'"std::thread::JoinHandle::join($0)"')
00:18:08 verbose #22048 > >
00:18:08 verbose #22049 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:08 verbose #22050 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:08 verbose #22051 > > │ ### arc                                                                      │
00:18:08 verbose #22052 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:08 verbose #22053 > >
00:18:08 verbose #22054 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:08 verbose #22055 > > nominal arc t =
00:18:08 verbose #22056 > >     `(
00:18:08 verbose #22057 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:18:08 verbose #22058 > > Fable.Core.Emit(\"std::sync::Arc<$0>\")>]]\n#endif\ntype std_sync_Arc<'T> =
00:18:08 verbose #22059 > > class end"
00:18:08 verbose #22060 > >         $'' : $'std_sync_Arc<`t>'
00:18:08 verbose #22061 > >     )
00:18:08 verbose #22062 > >
00:18:08 verbose #22063 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:08 verbose #22064 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:08 verbose #22065 > > │ ### new_arc                                                                  │
00:18:08 verbose #22066 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:08 verbose #22067 > >
00:18:08 verbose #22068 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:08 verbose #22069 > > inl new_arc forall t. (x : t) : arc t =
00:18:08 verbose #22070 > >     !\\(x, $'"std::sync::Arc::new($0)"')
00:18:08 verbose #22071 > >
00:18:08 verbose #22072 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:08 verbose #22073 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:08 verbose #22074 > > │ ### mutex                                                                    │
00:18:08 verbose #22075 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:08 verbose #22076 > >
00:18:08 verbose #22077 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:08 verbose #22078 > > nominal mutex t =
00:18:08 verbose #22079 > >     `(
00:18:08 verbose #22080 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:18:08 verbose #22081 > > Fable.Core.Emit(\"std::sync::Mutex<$0>\")>]]\n#endif\ntype std_sync_Mutex<'T> =
00:18:08 verbose #22082 > > class end"
00:18:08 verbose #22083 > >         $'' : $'std_sync_Mutex<`t>'
00:18:08 verbose #22084 > >     )
00:18:08 verbose #22085 > >
00:18:08 verbose #22086 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:08 verbose #22087 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:08 verbose #22088 > > │ ### new_mutex                                                                │
00:18:08 verbose #22089 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:08 verbose #22090 > >
00:18:08 verbose #22091 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:08 verbose #22092 > > inl new_mutex forall t. (x : t) : mutex t =
00:18:08 verbose #22093 > >     !\\(x, $'"std::sync::Mutex::new($0)"')
00:18:08 verbose #22094 > >
00:18:08 verbose #22095 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:08 verbose #22096 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:08 verbose #22097 > > │ ### rw_lock                                                                  │
00:18:08 verbose #22098 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:08 verbose #22099 > >
00:18:08 verbose #22100 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:08 verbose #22101 > > nominal rw_lock t =
00:18:08 verbose #22102 > >     `(
00:18:08 verbose #22103 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:18:08 verbose #22104 > > Fable.Core.Emit(\"std::sync::RwLock<$0>\")>]]\n#endif\ntype std_sync_RwLock<'T>
00:18:08 verbose #22105 > > = class end"
00:18:08 verbose #22106 > >         $'' : $'std_sync_RwLock<`t>'
00:18:08 verbose #22107 > >     )
00:18:08 verbose #22108 > >
00:18:08 verbose #22109 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:08 verbose #22110 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:08 verbose #22111 > > │ ### new_rw_lock                                                              │
00:18:08 verbose #22112 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:08 verbose #22113 > >
00:18:08 verbose #22114 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:08 verbose #22115 > > inl new_rw_lock forall t. (x : t) : rw_lock t =
00:18:08 verbose #22116 > >     !\\(x, $'"std::sync::RwLock::new($0)"')
00:18:08 verbose #22117 > >
00:18:08 verbose #22118 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:08 verbose #22119 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:08 verbose #22120 > > │ ### new_arc_mutex                                                            │
00:18:08 verbose #22121 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:08 verbose #22122 > >
00:18:08 verbose #22123 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:08 verbose #22124 > > inl new_arc_mutex forall t. (x : t) : arc (mutex t) =
00:18:08 verbose #22125 > >     x |> new_mutex |> new_arc
00:18:08 verbose #22126 > >
00:18:08 verbose #22127 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:08 verbose #22128 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:08 verbose #22129 > > │ ### new_arc_rw_lock                                                          │
00:18:08 verbose #22130 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:08 verbose #22131 > >
00:18:08 verbose #22132 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:08 verbose #22133 > > inl new_arc_rw_lock forall t. (x : t) : arc (rw_lock t) =
00:18:08 verbose #22134 > >     x |> new_rw_lock |> new_arc
00:18:08 verbose #22135 > >
00:18:08 verbose #22136 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:08 verbose #22137 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:08 verbose #22138 > > │ ### arc_clone                                                                │
00:18:08 verbose #22139 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:08 verbose #22140 > >
00:18:08 verbose #22141 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:08 verbose #22142 > > inl arc_clone forall t. (x : arc t) : arc t =
00:18:08 verbose #22143 > >     inl x = join x
00:18:08 verbose #22144 > >     !\($'"std::sync::Arc::clone(&!x)"')
00:18:09 verbose #22145 > >
00:18:09 verbose #22146 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:09 verbose #22147 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:09 verbose #22148 > > │ ### arc_ptr_eq                                                               │
00:18:09 verbose #22149 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:09 verbose #22150 > >
00:18:09 verbose #22151 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:09 verbose #22152 > > inl arc_ptr_eq forall t. (a : rust.ref (arc t)) (b : rust.ref (arc t)) : bool =
00:18:09 verbose #22153 > >     !\\((a, b), $'"std::sync::Arc::ptr_eq($0, $1)"')
00:18:09 verbose #22154 > >
00:18:09 verbose #22155 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:09 verbose #22156 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:09 verbose #22157 > > │ ### arc_try_unwrap                                                           │
00:18:09 verbose #22158 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:09 verbose #22159 > >
00:18:09 verbose #22160 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:09 verbose #22161 > > inl arc_try_unwrap forall t. (x : arc t) : resultm.result' t (arc t) =
00:18:09 verbose #22162 > >     !\\(x, $'"std::sync::Arc::try_unwrap($0)"')
00:18:09 verbose #22163 > >
00:18:09 verbose #22164 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:09 verbose #22165 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:09 verbose #22166 > > │ ### arc_into_raw                                                             │
00:18:09 verbose #22167 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:09 verbose #22168 > >
00:18:09 verbose #22169 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:09 verbose #22170 > > inl arc_into_raw forall t. (x : arc t) : rust.ptr t =
00:18:09 verbose #22171 > >     !\\(x, $'"std::sync::Arc::into_raw($0)"')
00:18:09 verbose #22172 > >
00:18:09 verbose #22173 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:09 verbose #22174 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:09 verbose #22175 > > │ ### arc_from_raw                                                             │
00:18:09 verbose #22176 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:09 verbose #22177 > >
00:18:09 verbose #22178 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:09 verbose #22179 > > inl arc_from_raw forall t. (x : rust.ptr t) : arc t =
00:18:09 verbose #22180 > >     !\\(x, $'"std::sync::Arc::from_raw($0)"')
00:18:09 verbose #22181 > >
00:18:09 verbose #22182 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:09 verbose #22183 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:09 verbose #22184 > > │ ### partial_eq_wrapper_arc_eq                                                │
00:18:09 verbose #22185 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:09 verbose #22186 > >
00:18:09 verbose #22187 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:09 verbose #22188 > > inl partial_eq_wrapper_arc_eq forall t.
00:18:09 verbose #22189 > >     (self : rust.ref (rust.partial_eq_wrapper (arc t)))
00:18:09 verbose #22190 > >     (other : rust.ref (rust.partial_eq_wrapper (arc t)))
00:18:09 verbose #22191 > >     =
00:18:09 verbose #22192 > >     self
00:18:09 verbose #22193 > >     |> rust.unwrap_0_ref
00:18:09 verbose #22194 > >     |> arc_ptr_eq (
00:18:09 verbose #22195 > >         other
00:18:09 verbose #22196 > >         |> rust.unwrap_0_ref
00:18:09 verbose #22197 > >     )
00:18:09 verbose #22198 > >
00:18:09 verbose #22199 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:09 verbose #22200 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:09 verbose #22201 > > │ ### new_partial_eq_wrapper_arc                                               │
00:18:09 verbose #22202 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:09 verbose #22203 > >
00:18:09 verbose #22204 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:09 verbose #22205 > > inl new_partial_eq_wrapper_arc forall t. (x : arc t) : rust.partial_eq_wrapper
00:18:09 verbose #22206 > > (arc t) =
00:18:09 verbose #22207 > >     x |> rust.new_partial_eq_wrapper partial_eq_wrapper_arc_eq
00:18:09 verbose #22208 > >
00:18:09 verbose #22209 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:09 verbose #22210 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:09 verbose #22211 > > │ ### mutex_guard                                                              │
00:18:09 verbose #22212 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:09 verbose #22213 > >
00:18:09 verbose #22214 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:09 verbose #22215 > > nominal mutex_guard t =
00:18:09 verbose #22216 > >     `(
00:18:09 verbose #22217 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:18:09 verbose #22218 > > Fable.Core.Emit(\"std::sync::MutexGuard<$0>\")>]]\n#endif\ntype
00:18:09 verbose #22219 > > std_sync_MutexGuard<'T> = class end"
00:18:09 verbose #22220 > >         $'' : $'std_sync_MutexGuard<`t>'
00:18:09 verbose #22221 > >     )
00:18:09 verbose #22222 > >
00:18:09 verbose #22223 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:09 verbose #22224 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:09 verbose #22225 > > │ ### rw_lock_read_guard                                                       │
00:18:09 verbose #22226 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:09 verbose #22227 > >
00:18:09 verbose #22228 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:09 verbose #22229 > > nominal rw_lock_read_guard t =
00:18:09 verbose #22230 > >     `(
00:18:09 verbose #22231 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:18:09 verbose #22232 > > Fable.Core.Emit(\"std::sync::RwLockReadGuard<$0>\")>]]\n#endif\ntype
00:18:09 verbose #22233 > > std_sync_RwLockReadGuard<'T> = class end"
00:18:09 verbose #22234 > >         $'' : $'std_sync_RwLockReadGuard<`t>'
00:18:09 verbose #22235 > >     )
00:18:09 verbose #22236 > >
00:18:09 verbose #22237 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:09 verbose #22238 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:09 verbose #22239 > > │ ### rw_lock_write_guard                                                      │
00:18:09 verbose #22240 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:09 verbose #22241 > >
00:18:09 verbose #22242 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:09 verbose #22243 > > nominal rw_lock_write_guard t =
00:18:09 verbose #22244 > >     `(
00:18:09 verbose #22245 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:18:09 verbose #22246 > > Fable.Core.Emit(\"std::sync::RwLockWriteGuard<$0>\")>]]\n#endif\ntype
00:18:09 verbose #22247 > > std_sync_RwLockWriteGuard<'T> = class end"
00:18:09 verbose #22248 > >         $'' : $'std_sync_RwLockWriteGuard<`t>'
00:18:09 verbose #22249 > >     )
00:18:10 verbose #22250 > >
00:18:10 verbose #22251 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:10 verbose #22252 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:10 verbose #22253 > > │ ### poison_error                                                             │
00:18:10 verbose #22254 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:10 verbose #22255 > >
00:18:10 verbose #22256 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:10 verbose #22257 > > nominal poison_error t =
00:18:10 verbose #22258 > >     `(
00:18:10 verbose #22259 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:18:10 verbose #22260 > > Fable.Core.Emit(\"std::sync::PoisonError<$0>\")>]]\n#endif\ntype
00:18:10 verbose #22261 > > std_sync_PoisonError<'T> = class end"
00:18:10 verbose #22262 > >         $'' : $'std_sync_PoisonError<`t>'
00:18:10 verbose #22263 > >     )
00:18:10 verbose #22264 > >
00:18:10 verbose #22265 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:10 verbose #22266 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:10 verbose #22267 > > │ ### try_lock_error                                                           │
00:18:10 verbose #22268 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:10 verbose #22269 > >
00:18:10 verbose #22270 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:10 verbose #22271 > > nominal try_lock_error t =
00:18:10 verbose #22272 > >     `(
00:18:10 verbose #22273 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:18:10 verbose #22274 > > Fable.Core.Emit(\"std::sync::TryLockError<$0>\")>]]\n#endif\ntype
00:18:10 verbose #22275 > > std_sync_TryLockError<'T> = class end"
00:18:10 verbose #22276 > >         $'' : $'std_sync_TryLockError<`t>'
00:18:10 verbose #22277 > >     )
00:18:10 verbose #22278 > >
00:18:10 verbose #22279 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:10 verbose #22280 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:10 verbose #22281 > > │ ### arc_mutex_lock                                                           │
00:18:10 verbose #22282 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:10 verbose #22283 > >
00:18:10 verbose #22284 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:10 verbose #22285 > > inl arc_mutex_lock forall t. (x : arc (mutex t)) : resultm.result' (mutex_guard
00:18:10 verbose #22286 > > t) (poison_error (mutex_guard t)) =
00:18:10 verbose #22287 > >     inl x = x |> rust.emit
00:18:10 verbose #22288 > >     !\($'"!x.lock()"')
00:18:10 verbose #22289 > >
00:18:10 verbose #22290 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:10 verbose #22291 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:10 verbose #22292 > > │ ### arc_rw_lock_read                                                         │
00:18:10 verbose #22293 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:10 verbose #22294 > >
00:18:10 verbose #22295 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:10 verbose #22296 > > inl arc_rw_lock_read forall t. (x : arc (rw_lock t)) : resultm.result'
00:18:10 verbose #22297 > > (rw_lock_read_guard t) (poison_error (rw_lock_read_guard t)) =
00:18:10 verbose #22298 > >     inl x = x |> rust.emit
00:18:10 verbose #22299 > >     !\($'"!x.read()"')
00:18:10 verbose #22300 > >
00:18:10 verbose #22301 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:10 verbose #22302 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:10 verbose #22303 > > │ ### arc_rw_lock_write                                                        │
00:18:10 verbose #22304 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:10 verbose #22305 > >
00:18:10 verbose #22306 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:10 verbose #22307 > > inl arc_rw_lock_write forall t. (x : arc (rw_lock t)) : resultm.result'
00:18:10 verbose #22308 > > (rw_lock_write_guard t) (poison_error (rw_lock_write_guard t)) =
00:18:10 verbose #22309 > >     inl x = x |> rust.emit
00:18:10 verbose #22310 > >     !\($'"!x.write()"')
00:18:10 verbose #22311 > >
00:18:10 verbose #22312 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:10 verbose #22313 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:10 verbose #22314 > > │ ### arc_rw_lock_try_read                                                     │
00:18:10 verbose #22315 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:10 verbose #22316 > >
00:18:10 verbose #22317 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:10 verbose #22318 > > inl arc_rw_lock_try_read forall t. (x : arc (rw_lock t)) : resultm.result'
00:18:10 verbose #22319 > > (rw_lock_read_guard t) (try_lock_error (rw_lock_read_guard t)) =
00:18:10 verbose #22320 > >     inl x = x |> rust.emit
00:18:10 verbose #22321 > >     !\($'"!x.try_read()"')
00:18:10 verbose #22322 > >
00:18:10 verbose #22323 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:10 verbose #22324 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:10 verbose #22325 > > │ ### arc_rw_lock_try_write                                                    │
00:18:10 verbose #22326 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:10 verbose #22327 > >
00:18:10 verbose #22328 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:10 verbose #22329 > > inl arc_rw_lock_try_write forall t. (x : arc (rw_lock t)) : resultm.result'
00:18:10 verbose #22330 > > (rw_lock_write_guard t) (try_lock_error (rw_lock_write_guard t)) =
00:18:10 verbose #22331 > >     inl x = x |> rust.emit
00:18:10 verbose #22332 > >     !\($'"!x.try_write()"')
00:18:10 verbose #22333 > >
00:18:10 verbose #22334 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:10 verbose #22335 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:10 verbose #22336 > > │ ### mutex_guard_ref                                                          │
00:18:10 verbose #22337 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:10 verbose #22338 > >
00:18:10 verbose #22339 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:10 verbose #22340 > > inl mutex_guard_ref forall t. (x : mutex_guard t) : rust.ref t =
00:18:10 verbose #22341 > >     !\\(x, $'"&$0"')
00:18:10 verbose #22342 > >
00:18:10 verbose #22343 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:10 verbose #22344 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:10 verbose #22345 > > │ ### rw_lock_read_guard_ref                                                   │
00:18:10 verbose #22346 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:10 verbose #22347 > >
00:18:10 verbose #22348 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:10 verbose #22349 > > inl rw_lock_read_guard_ref forall t. (x : rw_lock_read_guard t) : rust.ref t =
00:18:10 verbose #22350 > >     !\\(x, $'"&$0"')
00:18:10 verbose #22351 > >
00:18:10 verbose #22352 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:10 verbose #22353 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:10 verbose #22354 > > │ ### rw_lock_write_guard_ref                                                  │
00:18:10 verbose #22355 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:10 verbose #22356 > >
00:18:10 verbose #22357 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:11 verbose #22358 > > inl rw_lock_write_guard_ref forall t. (x : rw_lock_write_guard t) : rust.ref t =
00:18:11 verbose #22359 > >     !\\(x, $'"&$0"')
00:18:11 verbose #22360 > >
00:18:11 verbose #22361 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:11 verbose #22362 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:11 verbose #22363 > > │ ### mutex_guard_ref_mut                                                      │
00:18:11 verbose #22364 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:11 verbose #22365 > >
00:18:11 verbose #22366 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:11 verbose #22367 > > inl mutex_guard_ref_mut forall t. (x : mutex_guard t) : rust.ref (rust.mut' t) =
00:18:11 verbose #22368 > >     (!\($'"true; let mut !x = !x"') : bool) |> ignore
00:18:11 verbose #22369 > >     !\\(x, $'"&mut $0"')
00:18:11 verbose #22370 > >
00:18:11 verbose #22371 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:11 verbose #22372 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:11 verbose #22373 > > │ ### mutex_guard_as_mut                                                       │
00:18:11 verbose #22374 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:11 verbose #22375 > >
00:18:11 verbose #22376 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:11 verbose #22377 > > inl mutex_guard_as_mut forall (t : * -> *) u. (x : mutex_guard (t u)) : t
00:18:11 verbose #22378 > > (rust.ref (rust.mut' u)) =
00:18:11 verbose #22379 > >     (!\($'"true; let mut !x = !x"') : bool) |> ignore
00:18:11 verbose #22380 > >     !\\(x, $'"$0.as_mut()"')
00:18:11 verbose #22381 > >
00:18:11 verbose #22382 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:11 verbose #22383 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:11 verbose #22384 > > │ ### channel_receiver                                                         │
00:18:11 verbose #22385 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:11 verbose #22386 > >
00:18:11 verbose #22387 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:11 verbose #22388 > > nominal channel_receiver t =
00:18:11 verbose #22389 > >     `(
00:18:11 verbose #22390 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:18:11 verbose #22391 > > Fable.Core.Emit(\"std::sync::mpsc::Receiver<$0>\")>]]\n#endif\ntype
00:18:11 verbose #22392 > > std_sync_mpsc_Receiver<'T> = class end"
00:18:11 verbose #22393 > >         $'' : $'std_sync_mpsc_Receiver<`t>'
00:18:11 verbose #22394 > >     )
00:18:11 verbose #22395 > >
00:18:11 verbose #22396 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:11 verbose #22397 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:11 verbose #22398 > > │ ### channel_sender                                                           │
00:18:11 verbose #22399 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:11 verbose #22400 > >
00:18:11 verbose #22401 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:11 verbose #22402 > > nominal channel_sender t =
00:18:11 verbose #22403 > >     `(
00:18:11 verbose #22404 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:18:11 verbose #22405 > > Fable.Core.Emit(\"std::sync::mpsc::Sender<$0>\")>]]\n#endif\ntype
00:18:11 verbose #22406 > > std_sync_mpsc_Sender<'T> = class end"
00:18:11 verbose #22407 > >         $'' : $'std_sync_mpsc_Sender<`t>'
00:18:11 verbose #22408 > >     )
00:18:11 verbose #22409 > >
00:18:11 verbose #22410 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:11 verbose #22411 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:11 verbose #22412 > > │ ### new_channel                                                              │
00:18:11 verbose #22413 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:11 verbose #22414 > >
00:18:11 verbose #22415 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:11 verbose #22416 > > inl new_channel () : channel_sender sm'.std_string * arc (channel_receiver
00:18:11 verbose #22417 > > sm'.std_string) =
00:18:11 verbose #22418 > >     !\($'"{ let (sender, receiver) = std::sync::mpsc::channel(); (sender,
00:18:11 verbose #22419 > > std::sync::Arc::new(receiver)) }"')
00:18:11 verbose #22420 > >
00:18:11 verbose #22421 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:11 verbose #22422 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:11 verbose #22423 > > │ ### send_error                                                               │
00:18:11 verbose #22424 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:11 verbose #22425 > >
00:18:11 verbose #22426 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:11 verbose #22427 > > nominal send_error t =
00:18:11 verbose #22428 > >     `(
00:18:11 verbose #22429 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:18:11 verbose #22430 > > Fable.Core.Emit(\"std::sync::mpsc::SendError<$0>\")>]]\n#endif\ntype
00:18:11 verbose #22431 > > std_sync_mpsc_SendError<'T> = class end"
00:18:11 verbose #22432 > >         $'' : $'std_sync_mpsc_SendError<`t>'
00:18:11 verbose #22433 > >     )
00:18:11 verbose #22434 > >
00:18:11 verbose #22435 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:11 verbose #22436 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:11 verbose #22437 > > │ ### channel_send                                                             │
00:18:11 verbose #22438 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:11 verbose #22439 > >
00:18:11 verbose #22440 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:11 verbose #22441 > > inl channel_send forall t. (line : t) (sender : rust.ref (channel_sender t)) :
00:18:11 verbose #22442 > > resultm.result' () (send_error sm'.std_string) =
00:18:11 verbose #22443 > >     !\\((sender, line), $'"$0.send($1)"')
00:18:11 verbose #22444 > >
00:18:11 verbose #22445 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:11 verbose #22446 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:11 verbose #22447 > > │ ## fsharp                                                                    │
00:18:11 verbose #22448 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:11 verbose #22449 > >
00:18:11 verbose #22450 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:11 verbose #22451 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:11 verbose #22452 > > │ ### sleep'                                                                   │
00:18:11 verbose #22453 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:11 verbose #22454 > >
00:18:11 verbose #22455 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:11 verbose #22456 > > inl sleep' (n : i32) : () =
00:18:11 verbose #22457 > >     run_target function
00:18:11 verbose #22458 > >         | Fsharp (Native) => fun () => $'System.Threading.Thread.Sleep' n
00:18:11 verbose #22459 > >         | _ => fun () => ()
00:18:11 verbose #22460 > >
00:18:11 verbose #22461 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:11 verbose #22462 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:11 verbose #22463 > > │ ### thread                                                                   │
00:18:11 verbose #22464 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:11 verbose #22465 > >
00:18:11 verbose #22466 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:11 verbose #22467 > > nominal thread = $'System.Threading.Thread'
00:18:11 verbose #22468 > >
00:18:11 verbose #22469 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:11 verbose #22470 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:11 verbose #22471 > > │ ### cancellation_token                                                       │
00:18:11 verbose #22472 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:11 verbose #22473 > >
00:18:11 verbose #22474 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:11 verbose #22475 > > nominal cancellation_token = $'System.Threading.CancellationToken'
00:18:11 verbose #22476 > >
00:18:11 verbose #22477 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:11 verbose #22478 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:11 verbose #22479 > > │ ### cancellation_token_source                                                │
00:18:11 verbose #22480 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:11 verbose #22481 > >
00:18:11 verbose #22482 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:11 verbose #22483 > > nominal cancellation_token_source = $'System.Threading.CancellationTokenSource'
00:18:12 verbose #22484 > >
00:18:12 verbose #22485 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:12 verbose #22486 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:12 verbose #22487 > > │ ### cancellation_token_registration                                          │
00:18:12 verbose #22488 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:12 verbose #22489 > >
00:18:12 verbose #22490 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:12 verbose #22491 > > nominal cancellation_token_registration =
00:18:12 verbose #22492 > > $'System.Threading.CancellationTokenRegistration'
00:18:12 verbose #22493 > >
00:18:12 verbose #22494 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:12 verbose #22495 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:12 verbose #22496 > > │ ### cancellation_source_token                                                │
00:18:12 verbose #22497 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:12 verbose #22498 > >
00:18:12 verbose #22499 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:12 verbose #22500 > > inl cancellation_source_token (x : cancellation_token_source) :
00:18:12 verbose #22501 > > cancellation_token =
00:18:12 verbose #22502 > >     $'!x.Token'
00:18:12 verbose #22503 > >
00:18:12 verbose #22504 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:12 verbose #22505 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:12 verbose #22506 > > │ ### cancellation_source_cancel                                               │
00:18:12 verbose #22507 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:12 verbose #22508 > >
00:18:12 verbose #22509 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:12 verbose #22510 > > inl cancellation_source_cancel (x : cancellation_token_source) : () =
00:18:12 verbose #22511 > >     run_target function
00:18:12 verbose #22512 > >         | Fsharp (Native) => fun () =>
00:18:12 verbose #22513 > >             $'!x.Cancel' ()
00:18:12 verbose #22514 > >         | _ => fun () => null ()
00:18:12 verbose #22515 > >
00:18:12 verbose #22516 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:12 verbose #22517 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:12 verbose #22518 > > │ ### create_linked_token_source                                               │
00:18:12 verbose #22519 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:12 verbose #22520 > >
00:18:12 verbose #22521 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:12 verbose #22522 > > inl create_linked_token_source (x : array_base cancellation_token) :
00:18:12 verbose #22523 > > cancellation_token_source =
00:18:12 verbose #22524 > >     x |> $'System.Threading.CancellationTokenSource.CreateLinkedTokenSource'
00:18:12 verbose #22525 > >
00:18:12 verbose #22526 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:12 verbose #22527 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:12 verbose #22528 > > │ ### concurrent_stack                                                         │
00:18:12 verbose #22529 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:12 verbose #22530 > >
00:18:12 verbose #22531 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:12 verbose #22532 > > nominal concurrent_stack t =
00:18:12 verbose #22533 > > $'System.Collections.Concurrent.ConcurrentStack<`t>'
00:18:12 verbose #22534 > >
00:18:12 verbose #22535 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:12 verbose #22536 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:12 verbose #22537 > > │ ### concurrent_stack_push                                                    │
00:18:12 verbose #22538 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:12 verbose #22539 > >
00:18:12 verbose #22540 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:12 verbose #22541 > > inl concurrent_stack_push forall t. (item : t) (stack : concurrent_stack t) : ()
00:18:12 verbose #22542 > > =
00:18:12 verbose #22543 > >     $'!stack.Push' item
00:18:12 verbose #22544 > >
00:18:12 verbose #22545 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:12 verbose #22546 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:12 verbose #22547 > > │ ### token_none                                                               │
00:18:12 verbose #22548 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:12 verbose #22549 > >
00:18:12 verbose #22550 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:12 verbose #22551 > > inl token_none () : cancellation_token =
00:18:12 verbose #22552 > >     $'`cancellation_token.None'
00:18:12 verbose #22553 > >
00:18:12 verbose #22554 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:12 verbose #22555 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:12 verbose #22556 > > │ ### new_concurrent_stack                                                     │
00:18:12 verbose #22557 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:12 verbose #22558 > >
00:18:12 verbose #22559 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:12 verbose #22560 > > inl new_concurrent_stack forall t. () : concurrent_stack t =
00:18:12 verbose #22561 > >     $'System.Collections.Concurrent.ConcurrentStack<`t>' ()
00:18:12 verbose #22562 > >
00:18:12 verbose #22563 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:12 verbose #22564 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:12 verbose #22565 > > │ ### token_register                                                           │
00:18:12 verbose #22566 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:12 verbose #22567 > >
00:18:12 verbose #22568 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:12 verbose #22569 > > inl token_register (fn : () -> ()) (ct : cancellation_token) :
00:18:12 verbose #22570 > > cancellation_token_registration =
00:18:12 verbose #22571 > >     fn |> $'!ct.Register'
00:18:12 verbose #22572 > >
00:18:12 verbose #22573 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:12 verbose #22574 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:12 verbose #22575 > > │ ### new_cancellation_token_source                                            │
00:18:12 verbose #22576 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:12 verbose #22577 > >
00:18:12 verbose #22578 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:12 verbose #22579 > > inl new_cancellation_token_source () : cancellation_token_source =
00:18:12 verbose #22580 > >     $'new `cancellation_token_source ()'
00:18:13 verbose #22581 > >
00:18:13 verbose #22582 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:13 verbose #22583 > > inl token_cancellation_requested (ct : cancellation_token) : bool =
00:18:13 verbose #22584 > >     $'!ct.IsCancellationRequested'
00:18:13 verbose #22585 > >
00:18:13 verbose #22586 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:13 verbose #22587 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:13 verbose #22588 > > │ ### new_disposable_token                                                     │
00:18:13 verbose #22589 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:13 verbose #22590 > >
00:18:13 verbose #22591 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:13 verbose #22592 > > inl new_disposable_token (merge_token : optionm'.option' cancellation_token) =
00:18:13 verbose #22593 > >     run_target function
00:18:13 verbose #22594 > >         | Fsharp (Native) => fun () =>
00:18:13 verbose #22595 > >             inl cts = new_cancellation_token_source ()
00:18:13 verbose #22596 > >             inl cts =
00:18:13 verbose #22597 > >                 match merge_token |> optionm'.unbox with
00:18:13 verbose #22598 > >                 | None => cts
00:18:13 verbose #22599 > >                 | Some merge_token =>
00:18:13 verbose #22600 > >                     create_linked_token_source ;[[ cts |>
00:18:13 verbose #22601 > > cancellation_source_token; merge_token ]]
00:18:13 verbose #22602 > >             inl disposable : _ () = new_disposable fun () =>
00:18:13 verbose #22603 > >                 cts |> cancellation_source_cancel
00:18:13 verbose #22604 > >             cts |> cancellation_source_token, disposable
00:18:13 verbose #22605 > >         | _ => fun () => null ()
00:18:13 verbose #22606 > >
00:18:13 verbose #22607 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:13 verbose #22608 > > //// test
00:18:13 verbose #22609 > >
00:18:13 verbose #22610 > > inl run fn =
00:18:13 verbose #22611 > >     inl token, disposable = new_disposable_token (None |> optionm'.box)
00:18:13 verbose #22612 > >     disposable |> use |> ignore
00:18:13 verbose #22613 > >     fn token
00:18:13 verbose #22614 > >     fun () =>
00:18:13 verbose #22615 > >         fn token
00:18:13 verbose #22616 > >     |> async.new_async
00:18:13 verbose #22617 > >     |> async.start
00:18:13 verbose #22618 > >
00:18:13 verbose #22619 > > fun () =>
00:18:13 verbose #22620 > >     inl counter = mut 0i32
00:18:13 verbose #22621 > >
00:18:13 verbose #22622 > >     inl fn (token : cancellation_token) =
00:18:13 verbose #22623 > >         counter <- *counter + (if token |> token_cancellation_requested then 10
00:18:13 verbose #22624 > > else 1)
00:18:13 verbose #22625 > >
00:18:13 verbose #22626 > >     join run fn
00:18:13 verbose #22627 > >     async.sleep 10 |> async.do
00:18:13 verbose #22628 > >     return *counter
00:18:13 verbose #22629 > > |> async.new_async_unit
00:18:13 verbose #22630 > > |> async.run_synchronously
00:18:13 verbose #22631 > > |> _assert_eq 11i32
00:18:14 verbose #22632 > >
00:18:14 verbose #22633 > > ╭─[ 1.25s - stdout ]───────────────────────────────────────────────────────────╮
00:18:14 verbose #22634 > > │ __assert_eq / actual: 11 / expected: 11                                      │
00:18:14 verbose #22635 > > │                                                                              │
00:18:14 verbose #22636 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:14 verbose #22637 > >
00:18:14 verbose #22638 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:14 verbose #22639 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:14 verbose #22640 > > │ ## main                                                                      │
00:18:14 verbose #22641 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:14 verbose #22642 > >
00:18:14 verbose #22643 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:14 verbose #22644 > > inl main () =
00:18:14 verbose #22645 > >     $'let new_disposable_token x = !new_disposable_token x' : ()
00:18:14 verbose #22646 > 00:00:11 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 39560 }
00:18:14 verbose #22647 > 00:00:11   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:18:14 verbose #22648 >     "nbconvert",
00:18:14 verbose #22649 >     "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb",
00:18:14 verbose #22650 >     "--to",
00:18:14 verbose #22651 >     "html",
00:18:14 verbose #22652 >     "--HTMLExporter.theme=dark",
00:18:14 verbose #22653 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:15 verbose #22654 > 00:00:12 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb to html
00:18:15 verbose #22655 > 00:00:12 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:18:15 verbose #22656 > 00:00:12 verbose #7 !   validate(nb)
00:18:15 verbose #22657 > 00:00:12 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:18:15 verbose #22658 > 00:00:12 verbose #9 !   return _pygments_highlight(
00:18:16 verbose #22659 > 00:00:12 verbose #10 ! [NbConvertApp] Writing 378156 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.html
00:18:16 verbose #22660 > 00:00:12 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 }
00:18:16 verbose #22661 > 00:00:12   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 }
00:18:16 verbose #22662 > 00:00:12   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:18:16 verbose #22663 >     "-c",
00:18:16 verbose #22664 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:18:16 verbose #22665 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:16 verbose #22666 > 00:00:13 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:18:16 verbose #22667 > 00:00:13   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:18:16 verbose #22668 > 00:00:13   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 40521 }
00:18:16   debug #22669 runtime.execute_with_options_async / { exit_code = 0; output_length = 44768 }
00:18:16   debug #29 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path threading.dib --retries 3
00:18:16   debug #22670 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path benchmark.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:16 verbose #22671 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "benchmark.dib", "--retries", "3"])) }
00:18:16 verbose #22672 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:18:16 verbose #22673 >     "repl",
00:18:16 verbose #22674 >     "--exit-after-run",
00:18:16 verbose #22675 >     "--run",
00:18:16 verbose #22676 >     "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib",
00:18:16 verbose #22677 >     "--output-path",
00:18:16 verbose #22678 >     "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb",
00:18:16 verbose #22679 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:18:17 verbose #22680 > >
00:18:17 verbose #22681 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:18 verbose #22682 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:18 verbose #22683 > > │ ## benchmark                                                                 │
00:18:18 verbose #22684 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:20 verbose #22685 > >
00:18:20 verbose #22686 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:20 verbose #22687 > > //// test
00:18:20 verbose #22688 > >
00:18:20 verbose #22689 > > open testing
00:18:20 verbose #22690 > >
00:18:20 verbose #22691 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:20 verbose #22692 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:20 verbose #22693 > > │ ## fsharp                                                                    │
00:18:20 verbose #22694 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:20 verbose #22695 > >
00:18:20 verbose #22696 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:20 verbose #22697 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:20 verbose #22698 > > │ ### test_case_result                                                         │
00:18:20 verbose #22699 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:20 verbose #22700 > >
00:18:20 verbose #22701 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:20 verbose #22702 > > type test_case_result =
00:18:20 verbose #22703 > >     {
00:18:20 verbose #22704 > >         input : string
00:18:20 verbose #22705 > >         expected : string
00:18:20 verbose #22706 > >         result : string
00:18:20 verbose #22707 > >         time_list : array_base i64
00:18:20 verbose #22708 > >     }
00:18:21 verbose #22709 > >
00:18:21 verbose #22710 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:21 verbose #22711 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:21 verbose #22712 > > │ ### run'                                                                     │
00:18:21 verbose #22713 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:21 verbose #22714 > >
00:18:21 verbose #22715 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:21 verbose #22716 > > inl run' forall t. count (fn : () -> t) =
00:18:21 verbose #22717 > >     runtime.gc_collect ()
00:18:21 verbose #22718 > >     inl stopwatch = date_time.stopwatch ()
00:18:21 verbose #22719 > >     stopwatch |> date_time.stopwatch_start
00:18:21 verbose #22720 > >     inl time1 = stopwatch |> date_time.stopwatch_elapsed_milliseconds
00:18:21 verbose #22721 > >     inl result : t =
00:18:21 verbose #22722 > >         am'.init_series 0 count 1i32
00:18:21 verbose #22723 > >         |> fun x => a x : _ int _
00:18:21 verbose #22724 > >         |> am'.parallel_map fun _n => fn ()
00:18:21 verbose #22725 > >         |> am'.last
00:18:21 verbose #22726 > >     inl time2 = (stopwatch |> date_time.stopwatch_elapsed_milliseconds) - time1
00:18:21 verbose #22727 > >     result, time2
00:18:21 verbose #22728 > >
00:18:21 verbose #22729 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:21 verbose #22730 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:21 verbose #22731 > > │ ### run                                                                      │
00:18:21 verbose #22732 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:21 verbose #22733 > >
00:18:21 verbose #22734 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:21 verbose #22735 > > inl run forall input expected.
00:18:21 verbose #22736 > >     count
00:18:21 verbose #22737 > >     (solutions : list (string * (input -> expected)))
00:18:21 verbose #22738 > >     ((input, expected) : (input * expected))
00:18:21 verbose #22739 > >     : test_case_result
00:18:21 verbose #22740 > >     =
00:18:21 verbose #22741 > >     inl input_str = input |> sm'.format_debug
00:18:21 verbose #22742 > >
00:18:21 verbose #22743 > >     console.write_line ""
00:18:21 verbose #22744 > >     trace Verbose
00:18:21 verbose #22745 > >         fun () => $'$"benchmark.run"'
00:18:21 verbose #22746 > >         fun () => { input_str = input_str |> sm'.ellipsis_end 40 }
00:18:21 verbose #22747 > >
00:18:21 verbose #22748 > >     inl results_with_time : array_base _ =
00:18:21 verbose #22749 > >         solutions
00:18:21 verbose #22750 > >         |> listm'.indexed
00:18:21 verbose #22751 > >         |> listm'.box
00:18:21 verbose #22752 > >         |> listm'.to_array'
00:18:21 verbose #22753 > >         |> am'.map_base fun ((i : int), (test_name, solution)) =>
00:18:21 verbose #22754 > >             inl result, time =
00:18:21 verbose #22755 > >                 fun () => solution input
00:18:21 verbose #22756 > >                 |> run' count
00:18:21 verbose #22757 > >             trace Verbose
00:18:21 verbose #22758 > >                 fun () => $'$"benchmark.run / solutions.map"'
00:18:21 verbose #22759 > >                 fun () => { i = i + 1; test_name time }
00:18:21 verbose #22760 > >             result, time
00:18:21 verbose #22761 > >
00:18:21 verbose #22762 > >     match results_with_time |> am'.map_base fst with
00:18:21 verbose #22763 > >     | array when (array |> (fun x => a x : _ int _) |> am'.length) <= 1 => ()
00:18:21 verbose #22764 > >     | array when array |> (fun x => a x : _ int _) |> am.forall' ((=) (array |>
00:18:21 verbose #22765 > > (fun x => a x : _ int _) |> am'.index 0)) => ()
00:18:21 verbose #22766 > >     | results => failwith ($'$"benchmark.run / error / results: {!results}"' :
00:18:21 verbose #22767 > > string)
00:18:21 verbose #22768 > >
00:18:21 verbose #22769 > >     {
00:18:21 verbose #22770 > >         input = input_str
00:18:21 verbose #22771 > >         expected = expected |> sm'.format_debug
00:18:21 verbose #22772 > >         result = results_with_time |> am'.map_base fst |> (fun x => a x : _ int
00:18:21 verbose #22773 > > _) |> am'.index 0 |> sm'.format_debug
00:18:21 verbose #22774 > >         time_list = results_with_time |> am'.map_base snd
00:18:21 verbose #22775 > >     }
00:18:21 verbose #22776 > >
00:18:21 verbose #22777 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:21 verbose #22778 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:21 verbose #22779 > > │ ### run_all                                                                  │
00:18:21 verbose #22780 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:21 verbose #22781 > >
00:18:21 verbose #22782 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:21 verbose #22783 > > inl run_all forall input expected.
00:18:21 verbose #22784 > >     test_name
00:18:21 verbose #22785 > >     count
00:18:21 verbose #22786 > >     (solutions : list (string * (input -> expected)))
00:18:21 verbose #22787 > >     test_cases
00:18:21 verbose #22788 > >     =
00:18:21 verbose #22789 > >     console.write_line ""
00:18:21 verbose #22790 > >     console.write_line "```"
00:18:21 verbose #22791 > >     trace Verbose
00:18:21 verbose #22792 > >         fun () => $'$"benchmark.run_all"'
00:18:21 verbose #22793 > >         fun () => { test_name count }
00:18:21 verbose #22794 > >     test_cases
00:18:21 verbose #22795 > >     |> listm'.box
00:18:21 verbose #22796 > >     |> listm'.to_array'
00:18:21 verbose #22797 > >     |> am'.map_base (run count solutions)
00:18:21 verbose #22798 > >
00:18:21 verbose #22799 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:21 verbose #22800 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:21 verbose #22801 > > │ ### sort_result_list                                                         │
00:18:21 verbose #22802 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:21 verbose #22803 > >
00:18:21 verbose #22804 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:21 verbose #22805 > > inl sort_result_list results =
00:18:21 verbose #22806 > >     inl table =
00:18:21 verbose #22807 > >         inl rows =
00:18:21 verbose #22808 > >             results
00:18:21 verbose #22809 > >             |> am'.map_base fun (result : test_case_result) =>
00:18:21 verbose #22810 > >                 inl best =
00:18:21 verbose #22811 > >                     result.time_list
00:18:21 verbose #22812 > >                     |> am'.indexed
00:18:21 verbose #22813 > >                     |> am'.map_base fun (i, time) =>
00:18:21 verbose #22814 > >                         i + 1i32, time
00:18:21 verbose #22815 > >                     |> fun x => a x : _ int _
00:18:21 verbose #22816 > >                     |> am'.sort_by snd
00:18:21 verbose #22817 > >                     |> am'.index 0i32
00:18:21 verbose #22818 > >                     |> sm'.format
00:18:21 verbose #22819 > >                 inl row =
00:18:21 verbose #22820 > >                     [[
00:18:21 verbose #22821 > >                         result.input |> sm'.ellipsis_end 40 |> sm'.replace "|"
00:18:21 verbose #22822 > > ""
00:18:21 verbose #22823 > >                         result.expected
00:18:21 verbose #22824 > >                         result.result
00:18:21 verbose #22825 > >                         best
00:18:21 verbose #22826 > >                     ]]
00:18:21 verbose #22827 > >                 inl color : option console.console_color =
00:18:21 verbose #22828 > >                     open console
00:18:21 verbose #22829 > >                     match result.expected = result.result with
00:18:21 verbose #22830 > >                     | true => Some $'`console_color.DarkGreen'
00:18:21 verbose #22831 > >                     | false => Some $'`console_color.DarkRed'
00:18:21 verbose #22832 > >                 row, color
00:18:21 verbose #22833 > >
00:18:21 verbose #22834 > >         inl header =
00:18:21 verbose #22835 > >             [[
00:18:21 verbose #22836 > >                 [[
00:18:21 verbose #22837 > >                     "input"
00:18:21 verbose #22838 > >                     "expected"
00:18:21 verbose #22839 > >                     "result"
00:18:21 verbose #22840 > >                     "best"
00:18:21 verbose #22841 > >                 ]]
00:18:21 verbose #22842 > >                 [[
00:18:21 verbose #22843 > >                     "---"
00:18:21 verbose #22844 > >                     "---"
00:18:21 verbose #22845 > >                     "---"
00:18:21 verbose #22846 > >                     "---"
00:18:21 verbose #22847 > >                 ]]
00:18:21 verbose #22848 > >             ]]
00:18:21 verbose #22849 > >             |> listm.map fun row => row, None
00:18:21 verbose #22850 > >             |> listm'.box
00:18:21 verbose #22851 > >             |> listm'.to_array'
00:18:21 verbose #22852 > >             |> fun x => a x : _ int _
00:18:21 verbose #22853 > >         a rows
00:18:21 verbose #22854 > >         |> am.append header
00:18:21 verbose #22855 > >         |> fun (a x) => x
00:18:21 verbose #22856 > >
00:18:21 verbose #22857 > >     inl formatted_table =
00:18:21 verbose #22858 > >         inl length_map : mapm.map i32 i64 =
00:18:21 verbose #22859 > >             table
00:18:21 verbose #22860 > >             |> am'.map_base (fst >> listm'.box >> listm'.to_array')
00:18:21 verbose #22861 > >             |> am'.transpose
00:18:21 verbose #22862 > >             |> am'.map_base fun column =>
00:18:21 verbose #22863 > >                 column
00:18:21 verbose #22864 > >                 |> am'.map_base sm.length
00:18:21 verbose #22865 > >                 |> fun x => a x : _ int _
00:18:21 verbose #22866 > >                 |> am'.sort_descending
00:18:21 verbose #22867 > >                 |> am'.try_item 0i32
00:18:21 verbose #22868 > >                 |> optionm'.default_value 0i64
00:18:21 verbose #22869 > >             |> am'.indexed
00:18:21 verbose #22870 > >             |> fun x => a x : _ int _
00:18:21 verbose #22871 > >             |> mapm.of_array
00:18:21 verbose #22872 > >         table
00:18:21 verbose #22873 > >         |> am'.map_base fun (row, color) =>
00:18:21 verbose #22874 > >             inl new_row =
00:18:21 verbose #22875 > >                 row
00:18:21 verbose #22876 > >                 |> listm'.indexed
00:18:21 verbose #22877 > >                 |> listm.map fun (i, cell) =>
00:18:21 verbose #22878 > >                     cell |> sm'.pad_right (length_map |> mapm.item i |> conv) '
00:18:21 verbose #22879 > > '
00:18:21 verbose #22880 > >                 |> listm'.box
00:18:21 verbose #22881 > >                 |> listm'.to_array'
00:18:21 verbose #22882 > >             new_row, color
00:18:21 verbose #22883 > >
00:18:21 verbose #22884 > >     console.write_line "```"
00:18:21 verbose #22885 > >     formatted_table
00:18:21 verbose #22886 > >     |> fun x => a x : _ int _
00:18:21 verbose #22887 > >     |> am'.to_list'
00:18:21 verbose #22888 > >     |> listm'.unbox
00:18:21 verbose #22889 > >     |> listm.iter fun (row, color) =>
00:18:21 verbose #22890 > >         match color with
00:18:21 verbose #22891 > >         | Some color => color |> console.set_foreground_color
00:18:21 verbose #22892 > >         | None => console.reset_color ()
00:18:21 verbose #22893 > >
00:18:21 verbose #22894 > >         a row |> sm'.join' "\t| " |> console.write_line
00:18:21 verbose #22895 > >
00:18:21 verbose #22896 > >         console.reset_color ()
00:18:21 verbose #22897 > >
00:18:21 verbose #22898 > >     inl averages =
00:18:21 verbose #22899 > >         results
00:18:21 verbose #22900 > >         |> am'.map_base fun result =>
00:18:21 verbose #22901 > >             result.time_list
00:18:21 verbose #22902 > >             |> am'.map_base ($'float' : i64 -> f64)
00:18:21 verbose #22903 > >         |> am'.transpose
00:18:21 verbose #22904 > >         |> am'.map_base ((fun x => a x : _ int _) >> am'.average)
00:18:21 verbose #22905 > >         |> am'.map_base ($'int64' : f64 -> i64)
00:18:21 verbose #22906 > >         |> am'.indexed
00:18:21 verbose #22907 > >         |> fun x => a x : _ u64 _
00:18:21 verbose #22908 > >
00:18:21 verbose #22909 > >     console.write_line "```"
00:18:21 verbose #22910 > >     averages
00:18:21 verbose #22911 > >     |> am'.sort_by snd
00:18:21 verbose #22912 > >     |> am'.to_list'
00:18:21 verbose #22913 > >     |> listm'.unbox
00:18:21 verbose #22914 > >     |> listm.iter fun ((i : i32), avg) =>
00:18:21 verbose #22915 > >         trace Verbose
00:18:21 verbose #22916 > >             fun () => $'$"benchmark.sort_result_list / averages.iter"'
00:18:21 verbose #22917 > >             fun () => { i = i + 1; avg }
00:18:21 verbose #22918 > >     console.write_line "```"
00:18:21 verbose #22919 > >
00:18:21 verbose #22920 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:21 verbose #22921 > > //// test
00:18:21 verbose #22922 > >
00:18:21 verbose #22923 > > inl is_fast () =
00:18:21 verbose #22924 > >     false
00:18:21 verbose #22925 > >
00:18:21 verbose #22926 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:21 verbose #22927 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:21 verbose #22928 > > │ ### empty2Tests                                                              │
00:18:21 verbose #22929 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:21 verbose #22930 > >
00:18:21 verbose #22931 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:21 verbose #22932 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:21 verbose #22933 > > │ Test: Empty2                                                                 │
00:18:21 verbose #22934 > > │                                                                              │
00:18:21 verbose #22935 > > │ Solution: (a, a)                                                             │
00:18:21 verbose #22936 > > │ Test case 1. A. Time: 59L                                                    │
00:18:21 verbose #22937 > > │                                                                              │
00:18:21 verbose #22938 > > │ Solution: (a, a)                                                             │
00:18:21 verbose #22939 > > │ Test case 1. A. Time: 53L                                                    │
00:18:21 verbose #22940 > > │                                                                              │
00:18:21 verbose #22941 > > │ Input   | Expected        | Result  | Best                                   │
00:18:21 verbose #22942 > > │ ---     | ---             | ---     | ---                                    │
00:18:21 verbose #22943 > > │ (a, a)  | a               | a       | (1, 59)                                │
00:18:21 verbose #22944 > > │ (a, a)  | a               | a       | (1, 53)                                │
00:18:21 verbose #22945 > > │                                                                              │
00:18:21 verbose #22946 > > │ Averages                                                                     │
00:18:21 verbose #22947 > > │ Test case 1. Average Time: 56L                                               │
00:18:21 verbose #22948 > > │                                                                              │
00:18:21 verbose #22949 > > │ Ranking                                                                      │
00:18:21 verbose #22950 > > │ Test case 1. Average Time: 56L                                               │
00:18:21 verbose #22951 > > │                                                                              │
00:18:21 verbose #22952 > > │ ---                                                                          │
00:18:21 verbose #22953 > > │                                                                              │
00:18:21 verbose #22954 > > │                                                                              │
00:18:21 verbose #22955 > > │ ```                                                                          │
00:18:21 verbose #22956 > > │ 01:12:03 verbose #1 benchmark.run_all / {count = 2000000; test_name =   │
00:18:21 verbose #22957 > > │ empty_2_tests}                                                               │
00:18:21 verbose #22958 > > │ 01:12:03 verbose #2 benchmark.run / {count = 2000000; expected = a;     │
00:18:21 verbose #22959 > > │ input = a, a; input_str = struct ("a", "a")}                                 │
00:18:21 verbose #22960 > > │ 01:12:03 verbose #3 benchmark.run / solutions.map / {count = 2000000;   │
00:18:21 verbose #22961 > > │ expected = a; i = 0; input = a, a; input_str = struct ("a", "a"); test_name  │
00:18:21 verbose #22962 > > │ = A; time = 119}                                                             │
00:18:21 verbose #22963 > > │ 01:12:04 verbose #4 benchmark.run / solutions.map / {count = 2000000;   │
00:18:21 verbose #22964 > > │ expected = a; i = 1; input = a, a; input_str = struct ("a", "a"); test_name  │
00:18:21 verbose #22965 > > │ = B; time = 122}                                                             │
00:18:21 verbose #22966 > > │ 01:12:04 verbose #5 benchmark.run / {count = 2000000; expected = b;     │
00:18:21 verbose #22967 > > │ input = b, b; input_str = struct ("b", "b")}                                 │
00:18:21 verbose #22968 > > │ 01:12:04 verbose #6 benchmark.run / solutions.map / {count = 2000000;   │
00:18:21 verbose #22969 > > │ expected = b; i = 0; input = b, b; input_str = struct ("b", "b"); test_name  │
00:18:21 verbose #22970 > > │ = A; time = 110}                                                             │
00:18:21 verbose #22971 > > │ 01:12:04 verbose #7 benchmark.run / solutions.map / {count = 2000000;   │
00:18:21 verbose #22972 > > │ expected = b; i = 1; input = b, b; input_str = struct ("b", "b"); test_name  │
00:18:21 verbose #22973 > > │ = B; time = 120}                                                             │
00:18:21 verbose #22974 > > │ ```                                                                          │
00:18:21 verbose #22975 > > │ Input            	| Expected	| Result	| Best                                       │
00:18:21 verbose #22976 > > │ ---              	| ---     	| ---   	| ---                                        │
00:18:21 verbose #22977 > > │ struct ("a", "a")	| "a"     	| "a"   	| struct (1L, 119L)                          │
00:18:21 verbose #22978 > > │ struct ("b", "b")	| "b"     	| "b"   	| struct (1L, 110L)                          │
00:18:21 verbose #22979 > > │ ```                                                                          │
00:18:21 verbose #22980 > > │ 01:12:04 verbose #8 benchmark.sort_result_list / averages.iter / {avg = │
00:18:21 verbose #22981 > > │ 114; i = 0}                                                                  │
00:18:21 verbose #22982 > > │ 01:12:04 verbose #9 benchmark.sort_result_list / averages.iter / {avg = │
00:18:21 verbose #22983 > > │ 121; i = 1}                                                                  │
00:18:21 verbose #22984 > > │ ```                                                                          │
00:18:21 verbose #22985 > > │ `                                                                            │
00:18:21 verbose #22986 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:21 verbose #22987 > >
00:18:21 verbose #22988 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:21 verbose #22989 > > //// test
00:18:21 verbose #22990 > >
00:18:21 verbose #22991 > > inl get_solutions () =
00:18:21 verbose #22992 > >     [[
00:18:21 verbose #22993 > >         "A",
00:18:21 verbose #22994 > >         fun (a, _b) =>
00:18:21 verbose #22995 > >             a
00:18:21 verbose #22996 > >
00:18:21 verbose #22997 > >         "B",
00:18:21 verbose #22998 > >         fun (_a, b) =>
00:18:21 verbose #22999 > >             b
00:18:21 verbose #23000 > >     ]]
00:18:21 verbose #23001 > >
00:18:21 verbose #23002 > > inl rec empty_2_tests () =
00:18:21 verbose #23003 > >     inl test_cases = [[
00:18:21 verbose #23004 > >         ("a", "a"), "a"
00:18:21 verbose #23005 > >         ("b", "b"), "b"
00:18:21 verbose #23006 > >     ]]
00:18:21 verbose #23007 > >
00:18:21 verbose #23008 > >     inl solutions = get_solutions ()
00:18:21 verbose #23009 > >
00:18:21 verbose #23010 > >     // inl is_fast () = true
00:18:21 verbose #23011 > >
00:18:21 verbose #23012 > >     inl count =
00:18:21 verbose #23013 > >         if is_fast ()
00:18:21 verbose #23014 > >         then 1000i32
00:18:21 verbose #23015 > >         else 2000000i32
00:18:21 verbose #23016 > >
00:18:21 verbose #23017 > >     run_all (reflection.nameof { empty_2_tests }) count solutions test_cases
00:18:21 verbose #23018 > >     |> sort_result_list
00:18:21 verbose #23019 > >
00:18:21 verbose #23020 > > empty_2_tests ()
00:18:24 verbose #23021 > >
00:18:24 verbose #23022 > > ╭─[ 3.16s - stdout ]───────────────────────────────────────────────────────────╮
00:18:24 verbose #23023 > > │                                                                              │
00:18:24 verbose #23024 > > │ ```                                                                          │
00:18:24 verbose #23025 > > │ 00:00:00 verbose #1 benchmark.run_all / { test_name = empty_2_tests;    │
00:18:24 verbose #23026 > > │ count = 2000000 }                                                            │
00:18:24 verbose #23027 > > │                                                                              │
00:18:24 verbose #23028 > > │ 00:00:00 verbose #2 benchmark.run / { input_str = struct ("a", "a") }   │
00:18:24 verbose #23029 > > │ 00:00:00 verbose #3 benchmark.run / solutions.map / { i = 1; test_name  │
00:18:24 verbose #23030 > > │ = A; time = 30 }                                                             │
00:18:24 verbose #23031 > > │ 00:00:00 verbose #4 benchmark.run / solutions.map / { i = 2; test_name  │
00:18:24 verbose #23032 > > │ = B; time = 20 }                                                             │
00:18:24 verbose #23033 > > │                                                                              │
00:18:24 verbose #23034 > > │ 00:00:00 verbose #5 benchmark.run / { input_str = struct ("b", "b") }   │
00:18:24 verbose #23035 > > │ 00:00:00 verbose #6 benchmark.run / solutions.map / { i = 1; test_name  │
00:18:24 verbose #23036 > > │ = A; time = 19 }                                                             │
00:18:24 verbose #23037 > > │ 00:00:00 verbose #7 benchmark.run / solutions.map / { i = 2; test_name  │
00:18:24 verbose #23038 > > │ = B; time = 21 }                                                             │
00:18:24 verbose #23039 > > │ ```                                                                          │
00:18:24 verbose #23040 > > │ input            	| expected	| result	| best                                       │
00:18:24 verbose #23041 > > │ ---              	| ---     	| ---   	| ---                                        │
00:18:24 verbose #23042 > > │ struct ("a", "a")	| "a"     	| "a"   	| 2, 20                                      │
00:18:24 verbose #23043 > > │ struct ("b", "b")	| "b"     	| "b"   	| 1, 19                                      │
00:18:24 verbose #23044 > > │ ```                                                                          │
00:18:24 verbose #23045 > > │ 00:00:00 verbose #8 benchmark.sort_result_list / averages.iter / { i =  │
00:18:24 verbose #23046 > > │ 2; avg = 20 }                                                                │
00:18:24 verbose #23047 > > │ 00:00:00 verbose #9 benchmark.sort_result_list / averages.iter / { i =  │
00:18:24 verbose #23048 > > │ 1; avg = 24 }                                                                │
00:18:24 verbose #23049 > > │ ```                                                                          │
00:18:24 verbose #23050 > > │                                                                              │
00:18:24 verbose #23051 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:24 verbose #23052 > >
00:18:24 verbose #23053 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:24 verbose #23054 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:24 verbose #23055 > > │ ### emptyTests                                                               │
00:18:24 verbose #23056 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:24 verbose #23057 > >
00:18:24 verbose #23058 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:24 verbose #23059 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:24 verbose #23060 > > │ Test: Empty                                                                  │
00:18:24 verbose #23061 > > │                                                                              │
00:18:24 verbose #23062 > > │ Solution: 0                                                                  │
00:18:24 verbose #23063 > > │ Test case 1. A. Time: 61L                                                    │
00:18:24 verbose #23064 > > │                                                                              │
00:18:24 verbose #23065 > > │ Solution: 2                                                                  │
00:18:24 verbose #23066 > > │ Test case 1. A. Time: 62L                                                    │
00:18:24 verbose #23067 > > │                                                                              │
00:18:24 verbose #23068 > > │ Solution: 5                                                                  │
00:18:24 verbose #23069 > > │ Test case 1. A. Time: 70L                                                    │
00:18:24 verbose #23070 > > │                                                                              │
00:18:24 verbose #23071 > > │ Input   | Expected        | Result  | Best                                   │
00:18:24 verbose #23072 > > │ ---     | ---             | ---     | ---                                    │
00:18:24 verbose #23073 > > │ 0       | 0               | 0       | (1, 61)                                │
00:18:24 verbose #23074 > > │ 2       | 2               | 2       | (1, 62)                                │
00:18:24 verbose #23075 > > │ 5       | 5               | 5       | (1, 70)                                │
00:18:24 verbose #23076 > > │                                                                              │
00:18:24 verbose #23077 > > │ Averages                                                                     │
00:18:24 verbose #23078 > > │ Test case 1. Average Time: 64L                                               │
00:18:24 verbose #23079 > > │                                                                              │
00:18:24 verbose #23080 > > │ Ranking                                                                      │
00:18:24 verbose #23081 > > │ Test case 1. Average Time: 64L                                               │
00:18:24 verbose #23082 > > │                                                                              │
00:18:24 verbose #23083 > > │ ---                                                                          │
00:18:24 verbose #23084 > > │                                                                              │
00:18:24 verbose #23085 > > │ ```                                                                          │
00:18:24 verbose #23086 > > │ 01:21:25 verbose #1 benchmark.run_all / {count = 2000000; test_name =   │
00:18:24 verbose #23087 > > │ empty_1_tests}                                                               │
00:18:24 verbose #23088 > > │ 01:21:25 verbose #2 benchmark.run / {count = 2000000; expected =        │
00:18:24 verbose #23089 > > │ +1.000000; input = +0.000000; input_str = 0.0}                               │
00:18:24 verbose #23090 > > │ 01:21:25 verbose #3 benchmark.run / solutions.map / {count = 2000000;   │
00:18:24 verbose #23091 > > │ expected = +1.000000; i = 0; input = +0.000000; input_str = 0.0; test_name = │
00:18:24 verbose #23092 > > │ A; time = 36}                                                                │
00:18:24 verbose #23093 > > │ 01:21:25 verbose #4 benchmark.run / {count = 2000000; expected =        │
00:18:24 verbose #23094 > > │ +3.000000; input = +2.000000; input_str = 2.0}                               │
00:18:24 verbose #23095 > > │ 01:21:25 verbose #5 benchmark.run / solutions.map / {count = 2000000;   │
00:18:24 verbose #23096 > > │ expected = +3.000000; i = 0; input = +2.000000; input_str = 2.0; test_name = │
00:18:24 verbose #23097 > > │ A; time = 20}                                                                │
00:18:24 verbose #23098 > > │ 01:21:25 verbose #6 benchmark.run / {count = 2000000; expected =        │
00:18:24 verbose #23099 > > │ +6.000000; input = +5.000000; input_str = 5.0}                               │
00:18:24 verbose #23100 > > │ 01:21:25 verbose #7 benchmark.run / solutions.map / {count = 2000000;   │
00:18:24 verbose #23101 > > │ expected = +6.000000; i = 0; input = +5.000000; input_str = 5.0; test_name = │
00:18:24 verbose #23102 > > │ A; time = 22}                                                                │
00:18:24 verbose #23103 > > │ ```                                                                          │
00:18:24 verbose #23104 > > │ Input	| Expected	| Result	| Best                                                   │
00:18:24 verbose #23105 > > │ ---  	| ---     	| ---   	| ---                                                    │
00:18:24 verbose #23106 > > │ 0.0  	| 1.0     	| 1.0   	| struct (1L, 36L)                                       │
00:18:24 verbose #23107 > > │ 2.0  	| 3.0     	| 3.0   	| struct (1L, 20L)                                       │
00:18:24 verbose #23108 > > │ 5.0  	| 6.0     	| 6.0   	| struct (1L, 22L)                                       │
00:18:24 verbose #23109 > > │ ```                                                                          │
00:18:24 verbose #23110 > > │ 01:21:25 verbose #8 benchmark.sort_result_list / averages.iter / {avg = │
00:18:24 verbose #23111 > > │ 26; i = 0}                                                                   │
00:18:24 verbose #23112 > > │ ```                                                                          │
00:18:24 verbose #23113 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:24 verbose #23114 > >
00:18:24 verbose #23115 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:24 verbose #23116 > > //// test
00:18:24 verbose #23117 > >
00:18:24 verbose #23118 > > inl get_solutions () =
00:18:24 verbose #23119 > >     [[
00:18:24 verbose #23120 > >         "A",
00:18:24 verbose #23121 > >         fun n =>
00:18:24 verbose #23122 > >             n + 1f64
00:18:24 verbose #23123 > >     ]]
00:18:24 verbose #23124 > >
00:18:24 verbose #23125 > > inl rec empty_1_tests () =
00:18:24 verbose #23126 > >     inl test_cases = [[
00:18:24 verbose #23127 > >         0, 1
00:18:24 verbose #23128 > >         2, 3
00:18:24 verbose #23129 > >         5, 6
00:18:24 verbose #23130 > >     ]]
00:18:24 verbose #23131 > >
00:18:24 verbose #23132 > >     inl solutions = get_solutions ()
00:18:24 verbose #23133 > >
00:18:24 verbose #23134 > >     // inl is_fast () = true
00:18:24 verbose #23135 > >
00:18:24 verbose #23136 > >     inl count =
00:18:24 verbose #23137 > >         if is_fast ()
00:18:24 verbose #23138 > >         then 1000i32
00:18:24 verbose #23139 > >         else 2000000i32
00:18:24 verbose #23140 > >
00:18:24 verbose #23141 > >     run_all (reflection.nameof { empty_1_tests }) count solutions test_cases
00:18:24 verbose #23142 > >     |> sort_result_list
00:18:24 verbose #23143 > >
00:18:24 verbose #23144 > > empty_1_tests ()
00:18:27 verbose #23145 > >
00:18:27 verbose #23146 > > ╭─[ 2.10s - stdout ]───────────────────────────────────────────────────────────╮
00:18:27 verbose #23147 > > │                                                                              │
00:18:27 verbose #23148 > > │ ```                                                                          │
00:18:27 verbose #23149 > > │ 00:00:00 verbose #1 benchmark.run_all / { test_name = empty_1_tests;    │
00:18:27 verbose #23150 > > │ count = 2000000 }                                                            │
00:18:27 verbose #23151 > > │                                                                              │
00:18:27 verbose #23152 > > │ 00:00:00 verbose #2 benchmark.run / { input_str = 0.0 }                 │
00:18:27 verbose #23153 > > │ 00:00:00 verbose #3 benchmark.run / solutions.map / { i = 1; test_name  │
00:18:27 verbose #23154 > > │ = A; time = 22 }                                                             │
00:18:27 verbose #23155 > > │                                                                              │
00:18:27 verbose #23156 > > │ 00:00:00 verbose #4 benchmark.run / { input_str = 2.0 }                 │
00:18:27 verbose #23157 > > │ 00:00:00 verbose #5 benchmark.run / solutions.map / { i = 1; test_name  │
00:18:27 verbose #23158 > > │ = A; time = 14 }                                                             │
00:18:27 verbose #23159 > > │                                                                              │
00:18:27 verbose #23160 > > │ 00:00:00 verbose #6 benchmark.run / { input_str = 5.0 }                 │
00:18:27 verbose #23161 > > │ 00:00:00 verbose #7 benchmark.run / solutions.map / { i = 1; test_name  │
00:18:27 verbose #23162 > > │ = A; time = 17 }                                                             │
00:18:27 verbose #23163 > > │ ```                                                                          │
00:18:27 verbose #23164 > > │ input	| expected	| result	| best                                                   │
00:18:27 verbose #23165 > > │ ---  	| ---     	| ---   	| ---                                                    │
00:18:27 verbose #23166 > > │ 0.0  	| 1.0     	| 1.0   	| 1, 22                                                  │
00:18:27 verbose #23167 > > │ 2.0  	| 3.0     	| 3.0   	| 1, 14                                                  │
00:18:27 verbose #23168 > > │ 5.0  	| 6.0     	| 6.0   	| 1, 17                                                  │
00:18:27 verbose #23169 > > │ ```                                                                          │
00:18:27 verbose #23170 > > │ 00:00:00 verbose #8 benchmark.sort_result_list / averages.iter / { i =  │
00:18:27 verbose #23171 > > │ 1; avg = 17 }                                                                │
00:18:27 verbose #23172 > > │ ```                                                                          │
00:18:27 verbose #23173 > > │                                                                              │
00:18:27 verbose #23174 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:27 verbose #23175 > 00:00:10 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 30416 }
00:18:27 verbose #23176 > 00:00:10   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:18:27 verbose #23177 >     "nbconvert",
00:18:27 verbose #23178 >     "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb",
00:18:27 verbose #23179 >     "--to",
00:18:27 verbose #23180 >     "html",
00:18:27 verbose #23181 >     "--HTMLExporter.theme=dark",
00:18:27 verbose #23182 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:27 verbose #23183 > 00:00:11 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb to html
00:18:27 verbose #23184 > 00:00:11 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:18:27 verbose #23185 > 00:00:11 verbose #7 !   validate(nb)
00:18:28 verbose #23186 > 00:00:11 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:18:28 verbose #23187 > 00:00:11 verbose #9 !   return _pygments_highlight(
00:18:28 verbose #23188 > 00:00:11 verbose #10 ! [NbConvertApp] Writing 316703 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.html
00:18:28 verbose #23189 > 00:00:11 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 }
00:18:28 verbose #23190 > 00:00:11   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 }
00:18:28 verbose #23191 > 00:00:11   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:18:28 verbose #23192 >     "-c",
00:18:28 verbose #23193 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:18:28 verbose #23194 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:28 verbose #23195 > 00:00:12 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:18:28 verbose #23196 > 00:00:12   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:18:28 verbose #23197 > 00:00:12   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 31377 }
00:18:28   debug #23198 runtime.execute_with_options_async / { exit_code = 0; output_length = 35238 }
00:18:28   debug #30 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path benchmark.dib --retries 3
00:18:28   debug #23199 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path physics.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:18:28 verbose #23200 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "physics.dib", "--retries", "3"])) }
00:18:28 verbose #23201 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:18:28 verbose #23202 >     "repl",
00:18:28 verbose #23203 >     "--exit-after-run",
00:18:28 verbose #23204 >     "--run",
00:18:28 verbose #23205 >     "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib",
00:18:28 verbose #23206 >     "--output-path",
00:18:28 verbose #23207 >     "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb",
00:18:28 verbose #23208 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:18:30 verbose #23209 > >
00:18:30 verbose #23210 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:30 verbose #23211 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:30 verbose #23212 > > │ # physics                                                                    │
00:18:30 verbose #23213 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:44 verbose #23214 > >
00:18:44 verbose #23215 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:44 verbose #23216 > > //// test
00:18:44 verbose #23217 > >
00:18:44 verbose #23218 > > open testing
00:18:44 verbose #23219 > >
00:18:44 verbose #23220 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:44 verbose #23221 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:44 verbose #23222 > > │ ### init_series                                                              │
00:18:44 verbose #23223 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:44 verbose #23224 > >
00:18:44 verbose #23225 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:44 verbose #23226 > > //// test
00:18:44 verbose #23227 > >
00:18:44 verbose #23228 > > inl x = am'.init_series -3f64 3 0.01
00:18:44 verbose #23229 > > inl y = x |> am'.map_base math.square
00:18:44 verbose #23230 > > "square", "x", "y", ;[[ "square", x, y ]]
00:18:44 verbose #23231 > >
00:18:45 verbose #23232 > > ╭─[ 210.56ms - return value ]──────────────────────────────────────────────────╮
00:18:45 verbose #23233 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:18:45 verbose #23234 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:18:45 verbose #23235 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:18:45 verbose #23236 > > │ stroke="none"/>                                                              │
00:18:45 verbose #23237 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:18:45 verbose #23238 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:45 verbose #23239 > > │ fill="#FFFFFF">                                                              │
00:18:45 verbose #23240 > > │ square                                                                       │
00:18:45 verbose #23241 > > │ </text>                                                                      │
00:18:45 verbose #23242 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │
00:18:45 verbose #23243 > > │ y2="75"/>                                                                    │
00:18:45 verbose #23244 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:18:45 verbose #23245 > > │ y2="75"/>                                                                    │
00:18:45 verbose #23246 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │
00:18:45 verbose #23247 > > │ y2="75"/>                                                                    │
00:18:45 verbose #23248 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │
00:18:45 verbose #23249 > > │ y2="75"/>                                                                    │
00:18:45 verbose #23250 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │
00:18:45 verbose #23251 > > │ y2="75"/>                                                                    │
00:18:45 verbose #23252 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" y1="424"        │
00:18:45 verbose #23253 > > │ x2="103" y2="75"/>                                                           │
00:18:45 verbose #23254 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" y1="424"        │
00:18:45 verbose #23255 > > │ x2="111" y2="75"/>                                                           │
00:18:45 verbose #23256 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:18:45 verbose #23257 > > │ x2="119" y2="75"/>                                                           │
00:18:45 verbose #23258 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" y1="424"        │
00:18:45 verbose #23259 > > │ x2="128" y2="75"/>                                                           │
00:18:45 verbose #23260 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" y1="424"        │
00:18:45 verbose #23261 > > │ x2="136" y2="75"/>                                                           │
00:18:45 verbose #23262 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424"        │
00:18:45 verbose #23263 > > │ x2="144" y2="75"/>                                                           │
00:18:45 verbose #23264 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424"        │
00:18:45 verbose #23265 > > │ x2="153" y2="75"/>                                                           │
00:18:45 verbose #23266 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" y1="424"        │
00:18:45 verbose #23267 > > │ x2="161" y2="75"/>                                                           │
00:18:45 verbose #23268 > > │ <line opacity="1" stroke="#... 449,326 450,324 450,323 451,322 452,321       │
00:18:45 verbose #23269 > > │ 453,320 454,319 455,317 455,316 456,315 457,314 458,313 459,311 460,310      │
00:18:45 verbose #23270 > > │ 460,309 461,308 462,306 463,305 464,304 465,303 465,301 466,300 467,299      │
00:18:45 verbose #23271 > > │ 468,297 469,296 470,295 470,293 471,292 472,291 473,289 474,288 475,287      │
00:18:45 verbose #23272 > > │ 475,285 476,284 477,283 478,281 479,280 480,278 480,277 481,276 482,274      │
00:18:45 verbose #23273 > > │ 483,273 484,271 485,270 485,268 486,267 487,265 488,264 489,262 490,261      │
00:18:45 verbose #23274 > > │ 490,259 491,258 492,256 493,255 494,253 495,252 495,250 496,249 497,247      │
00:18:45 verbose #23275 > > │ 498,246 499,244 499,242 500,241 501,239 502,238 503,236 504,234 504,233      │
00:18:45 verbose #23276 > > │ 505,231 506,229 507,228 508,226 509,224 509,223 510,221 511,219 512,218      │
00:18:45 verbose #23277 > > │ 513,216 514,214 514,213 515,211 516,209 517,207 518,206 519,204 519,202      │
00:18:45 verbose #23278 > > │ 520,200 521,199 522,197 523,195 524,193 524,191 525,190 526,188 527,186      │
00:18:45 verbose #23279 > > │ 528,184 529,182 529,180 530,179 531,177 532,175 533,173 534,171 534,169      │
00:18:45 verbose #23280 > > │ 535,167 536,165 537,164 538,162 539,160 539,158 540,156 541,154 542,152      │
00:18:45 verbose #23281 > > │ 543,150 544,148 544,146 545,144 546,142 547,140 548,138 549,136 549,134      │
00:18:45 verbose #23282 > > │ 550,132 551,130 552,128 553,126 554,124 554,122 555,120 556,117 557,115      │
00:18:45 verbose #23283 > > │ 558,113 559,111 559,109 560,107 561,105 562,103 563,101 564,98 564,96 565,94 │
00:18:45 verbose #23284 > > │ 566,92 567,90 568,88 569,85 "/>                                              │
00:18:45 verbose #23285 > > │ <rect x="497" y="235" width="83" height="30" opacity="1" fill="none"         │
00:18:45 verbose #23286 > > │ stroke="#FFFFFF"/>                                                           │
00:18:45 verbose #23287 > > │ <text x="537" y="245" dy="0.76em" text-anchor="start"                        │
00:18:45 verbose #23288 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:45 verbose #23289 > > │ fill="#FFFFFF">                                                              │
00:18:45 verbose #23290 > > │ square                                                                       │
00:18:45 verbose #23291 > > │ </text>                                                                      │
00:18:45 verbose #23292 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:45 verbose #23293 > > │ points="507,250 527,250 "/>                                                  │
00:18:45 verbose #23294 > > │ </svg>                                                                       │
00:18:45 verbose #23295 > > │                                                                              │
00:18:45 verbose #23296 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:45 verbose #23297 > >
00:18:45 verbose #23298 > > ╭─[ 217.49ms - stdout ]────────────────────────────────────────────────────────╮
00:18:45 verbose #23299 > > │ 00:00:05   debug #1 runtime.execute_with_options_async / { options = {  │
00:18:45 verbose #23300 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:18:45 verbose #23301 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:18:45 verbose #23302 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:18:45 verbose #23303 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:18:45 verbose #23304 > > │ 00:00:05 verbose #2 > Creating                                          │
00:18:45 verbose #23305 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/7b7fc4c35397bb203cd │
00:18:45 verbose #23306 > > │ 73e71999e798459034face642d83ec40fb90a61bec926.svg                            │
00:18:45 verbose #23307 > > │ 00:00:05   debug #3 runtime.execute_with_options_async / { exit_code =  │
00:18:45 verbose #23308 > > │ 0; output_length = 134 }                                                     │
00:18:45 verbose #23309 > > │                                                                              │
00:18:45 verbose #23310 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:45 verbose #23311 > >
00:18:45 verbose #23312 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:45 verbose #23313 > > //// test
00:18:45 verbose #23314 > >
00:18:45 verbose #23315 > > inl x = am'.init_series -10f64 10 0.1
00:18:45 verbose #23316 > > inl y_sin = x |> am'.map_base sin
00:18:45 verbose #23317 > > inl y_cos = x |> am'.map_base cos
00:18:45 verbose #23318 > > "sin cos", "x", "y", ;[[ "sin", x, y_sin; "cos", x, y_cos ]]
00:18:45 verbose #23319 > >
00:18:45 verbose #23320 > > ╭─[ 109.72ms - return value ]──────────────────────────────────────────────────╮
00:18:45 verbose #23321 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:18:45 verbose #23322 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:18:45 verbose #23323 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:18:45 verbose #23324 > > │ stroke="none"/>                                                              │
00:18:45 verbose #23325 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:18:45 verbose #23326 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:45 verbose #23327 > > │ fill="#FFFFFF">                                                              │
00:18:45 verbose #23328 > > │ sin cos                                                                      │
00:18:45 verbose #23329 > > │ </text>                                                                      │
00:18:45 verbose #23330 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="57" y1="424" x2="57" │
00:18:45 verbose #23331 > > │ y2="75"/>                                                                    │
00:18:45 verbose #23332 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:18:45 verbose #23333 > > │ y2="75"/>                                                                    │
00:18:45 verbose #23334 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="82" y1="424" x2="82" │
00:18:45 verbose #23335 > > │ y2="75"/>                                                                    │
00:18:45 verbose #23336 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │
00:18:45 verbose #23337 > > │ y2="75"/>                                                                    │
00:18:45 verbose #23338 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="107" y1="424"        │
00:18:45 verbose #23339 > > │ x2="107" y2="75"/>                                                           │
00:18:45 verbose #23340 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:18:45 verbose #23341 > > │ x2="119" y2="75"/>                                                           │
00:18:45 verbose #23342 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="132" y1="424"        │
00:18:45 verbose #23343 > > │ x2="132" y2="75"/>                                                           │
00:18:45 verbose #23344 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424"        │
00:18:45 verbose #23345 > > │ x2="144" y2="75"/>                                                           │
00:18:45 verbose #23346 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="157" y1="424"        │
00:18:45 verbose #23347 > > │ x2="157" y2="75"/>                                                           │
00:18:45 verbose #23348 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424"        │
00:18:45 verbose #23349 > > │ x2="169" y2="75"/>                                                           │
00:18:45 verbose #23350 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="182" y1="424"        │
00:18:45 verbose #23351 > > │ x2="182" y2="75"/>                                                           │
00:18:45 verbose #23352 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="194" y1="424"        │
00:18:45 verbose #23353 > > │ x2="194" y2="75"/>                                                           │
00:18:45 verbose #23354 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="207" y1="424"        │
00:18:45 verbose #23355 > > │ x2="207" y2="75"/>                                                           │
00:18:45 verbose #23356 > > │ <line opacity="1" stroke...55 282,238 284,222 287,206 289,190 292,175        │
00:18:45 verbose #23357 > > │ 294,161 297,148 299,135 302,124 304,114 307,106 309,98 312,93 314,89 317,86  │
00:18:45 verbose #23358 > > │ 319,85 321,86 324,89 326,93 329,98 331,106 334,114 336,124 339,135 341,148   │
00:18:45 verbose #23359 > > │ 344,161 346,175 349,190 351,206 354,222 356,238 359,255 361,271 364,287      │
00:18:45 verbose #23360 > > │ 366,303 369,319 371,333 374,347 376,360 379,371 381,382 384,391 386,399      │
00:18:45 verbose #23361 > > │ 389,405 391,410 394,413 396,414 399,414 401,413 404,409 406,404 409,398      │
00:18:45 verbose #23362 > > │ 411,390 414,380 416,370 419,358 421,345 424,331 426,316 429,301 431,285      │
00:18:45 verbose #23363 > > │ 434,268 436,252 439,236 441,219 444,203 446,188 449,173 451,159 454,146      │
00:18:45 verbose #23364 > > │ 456,133 459,122 461,113 464,104 466,97 469,92 471,88 474,86 476,85 479,86    │
00:18:45 verbose #23365 > > │ 481,89 484,94 486,99 489,107 491,116 494,126 496,137 499,150 501,163 504,178 │
00:18:45 verbose #23366 > > │ 506,193 509,209 511,225 514,241 516,258 519,274 521,290 524,306 526,321      │
00:18:45 verbose #23367 > > │ 529,335 531,349 534,362 536,373 539,384 541,392 544,400 546,406 549,410      │
00:18:45 verbose #23368 > > │ 551,413 554,415 556,414 559,412 561,408 564,403 566,396 569,388 "/>          │
00:18:45 verbose #23369 > > │ <rect x="514" y="227" width="66" height="45" opacity="1" fill="none"         │
00:18:45 verbose #23370 > > │ stroke="#FFFFFF"/>                                                           │
00:18:45 verbose #23371 > > │ <text x="554" y="237" dy="0.76em" text-anchor="start"                        │
00:18:45 verbose #23372 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:45 verbose #23373 > > │ fill="#FFFFFF">                                                              │
00:18:45 verbose #23374 > > │ sin                                                                          │
00:18:45 verbose #23375 > > │ </text>                                                                      │
00:18:45 verbose #23376 > > │ <text x="554" y="252" dy="0.76em" text-anchor="start"                        │
00:18:45 verbose #23377 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:45 verbose #23378 > > │ fill="#FFFFFF">                                                              │
00:18:45 verbose #23379 > > │ cos                                                                          │
00:18:45 verbose #23380 > > │ </text>                                                                      │
00:18:45 verbose #23381 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:45 verbose #23382 > > │ points="524,242 544,242 "/>                                                  │
00:18:45 verbose #23383 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1"          │
00:18:45 verbose #23384 > > │ points="524,257 544,257 "/>                                                  │
00:18:45 verbose #23385 > > │ </svg>                                                                       │
00:18:45 verbose #23386 > > │                                                                              │
00:18:45 verbose #23387 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:45 verbose #23388 > >
00:18:45 verbose #23389 > > ╭─[ 114.35ms - stdout ]────────────────────────────────────────────────────────╮
00:18:45 verbose #23390 > > │ 00:00:05   debug #4 runtime.execute_with_options_async / { options = {  │
00:18:45 verbose #23391 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:18:45 verbose #23392 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:18:45 verbose #23393 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:18:45 verbose #23394 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:18:45 verbose #23395 > > │ 00:00:05 verbose #5 > Creating                                          │
00:18:45 verbose #23396 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/92923048c2357a58925 │
00:18:45 verbose #23397 > > │ 5fc3a1ba8375e45c2d4a0a29d12fd266f7c935f7a46fa.svg                            │
00:18:45 verbose #23398 > > │ 00:00:05   debug #6 runtime.execute_with_options_async / { exit_code =  │
00:18:45 verbose #23399 > > │ 0; output_length = 134 }                                                     │
00:18:45 verbose #23400 > > │                                                                              │
00:18:45 verbose #23401 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:45 verbose #23402 > >
00:18:45 verbose #23403 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:45 verbose #23404 > > //// test
00:18:45 verbose #23405 > >
00:18:45 verbose #23406 > > inl y_pos y0 vy0 ay t =
00:18:45 verbose #23407 > >     y0 + vy0 * t + ay * (t |> math.square) / 2
00:18:45 verbose #23408 > >
00:18:45 verbose #23409 > > inl x = am'.init_series 0f64 5 0.01
00:18:45 verbose #23410 > > inl y = x |> am'.map_base (y_pos 0 20 -9.8)
00:18:45 verbose #23411 > > "projectile motion", "time (s)", "", ;[[ "height of projectile (m)", x, y ]]
00:18:45 verbose #23412 > >
00:18:45 verbose #23413 > > ╭─[ 106.81ms - return value ]──────────────────────────────────────────────────╮
00:18:45 verbose #23414 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:18:45 verbose #23415 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:18:45 verbose #23416 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:18:45 verbose #23417 > > │ stroke="none"/>                                                              │
00:18:45 verbose #23418 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:18:45 verbose #23419 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:45 verbose #23420 > > │ fill="#FFFFFF">                                                              │
00:18:45 verbose #23421 > > │ projectile motion                                                            │
00:18:45 verbose #23422 > > │ </text>                                                                      │
00:18:45 verbose #23423 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:18:45 verbose #23424 > > │ y2="75"/>                                                                    │
00:18:45 verbose #23425 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:18:45 verbose #23426 > > │ y2="75"/>                                                                    │
00:18:45 verbose #23427 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:18:45 verbose #23428 > > │ y2="75"/>                                                                    │
00:18:45 verbose #23429 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:18:45 verbose #23430 > > │ y2="75"/>                                                                    │
00:18:45 verbose #23431 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │
00:18:45 verbose #23432 > > │ y2="75"/>                                                                    │
00:18:45 verbose #23433 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424"        │
00:18:45 verbose #23434 > > │ x2="109" y2="75"/>                                                           │
00:18:45 verbose #23435 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:18:45 verbose #23436 > > │ x2="119" y2="75"/>                                                           │
00:18:45 verbose #23437 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424"        │
00:18:45 verbose #23438 > > │ x2="129" y2="75"/>                                                           │
00:18:45 verbose #23439 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424"        │
00:18:45 verbose #23440 > > │ x2="139" y2="75"/>                                                           │
00:18:45 verbose #23441 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424"        │
00:18:45 verbose #23442 > > │ x2="149" y2="75"/>                                                           │
00:18:45 verbose #23443 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424"        │
00:18:45 verbose #23444 > > │ x2="159" y2="75"/>                                                           │
00:18:45 verbose #23445 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424"        │
00:18:45 verbose #23446 > > │ x2="169" y2="75"/>                                                           │
00:18:45 verbose #23447 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424"        │
00:18:45 verbose #23448 > > │ x2="179" y2="75"/>                                                           │
00:18:45 verbose #23449 > > │ <line opacity="1...28,176 429,177 430,178 431,179 432,180 433,182 434,183    │
00:18:45 verbose #23450 > > │ 435,184 436,185 437,186 438,188 439,189 440,190 441,191 442,193 443,194      │
00:18:45 verbose #23451 > > │ 444,195 445,197 446,198 447,199 448,200 449,202 450,203 451,204 452,206      │
00:18:45 verbose #23452 > > │ 453,207 454,208 455,210 456,211 457,213 458,214 459,215 460,217 461,218      │
00:18:45 verbose #23453 > > │ 462,220 463,221 464,222 465,224 466,225 467,227 468,228 469,230 470,231      │
00:18:45 verbose #23454 > > │ 471,233 472,234 473,236 474,237 475,239 476,240 477,242 478,243 479,245      │
00:18:45 verbose #23455 > > │ 480,246 481,248 482,249 483,251 484,253 485,254 486,256 487,257 488,259      │
00:18:45 verbose #23456 > > │ 489,261 490,262 491,264 492,266 493,267 494,269 495,271 496,272 497,274      │
00:18:45 verbose #23457 > > │ 498,276 499,277 500,279 501,281 502,282 503,284 504,286 505,288 506,289      │
00:18:45 verbose #23458 > > │ 507,291 508,293 509,295 510,296 511,298 512,300 513,302 514,304 515,305      │
00:18:45 verbose #23459 > > │ 516,307 517,309 518,311 519,313 520,315 521,316 522,318 523,320 524,322      │
00:18:45 verbose #23460 > > │ 525,324 526,326 527,328 528,330 529,332 530,334 531,335 532,337 533,339      │
00:18:45 verbose #23461 > > │ 534,341 535,343 536,345 537,347 538,349 539,351 540,353 541,355 542,357      │
00:18:45 verbose #23462 > > │ 543,359 544,361 545,363 546,365 547,367 548,370 549,372 550,374 551,376      │
00:18:45 verbose #23463 > > │ 552,378 553,380 554,382 555,384 556,386 557,388 558,391 559,393 560,395      │
00:18:45 verbose #23464 > > │ 561,397 562,399 563,401 564,404 565,406 566,408 567,410 568,412 569,415 "/>  │
00:18:45 verbose #23465 > > │ <rect x="399" y="235" width="181" height="30" opacity="1" fill="none"        │
00:18:45 verbose #23466 > > │ stroke="#FFFFFF"/>                                                           │
00:18:45 verbose #23467 > > │ <text x="439" y="245" dy="0.76em" text-anchor="start"                        │
00:18:45 verbose #23468 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:45 verbose #23469 > > │ fill="#FFFFFF">                                                              │
00:18:45 verbose #23470 > > │ height of projectile (m)                                                     │
00:18:45 verbose #23471 > > │ </text>                                                                      │
00:18:45 verbose #23472 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:45 verbose #23473 > > │ points="409,250 429,250 "/>                                                  │
00:18:45 verbose #23474 > > │ </svg>                                                                       │
00:18:45 verbose #23475 > > │                                                                              │
00:18:45 verbose #23476 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:45 verbose #23477 > >
00:18:45 verbose #23478 > > ╭─[ 111.30ms - stdout ]────────────────────────────────────────────────────────╮
00:18:45 verbose #23479 > > │ 00:00:05   debug #7 runtime.execute_with_options_async / { options = {  │
00:18:45 verbose #23480 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:18:45 verbose #23481 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:18:45 verbose #23482 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:18:45 verbose #23483 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:18:45 verbose #23484 > > │ 00:00:05 verbose #8 > Creating                                          │
00:18:45 verbose #23485 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/9ba10ae80d4645862b9 │
00:18:45 verbose #23486 > > │ 25ee46c6c11acaddaeeaef0ca08c6bf4f906b08df5b19.svg                            │
00:18:45 verbose #23487 > > │ 00:00:05   debug #9 runtime.execute_with_options_async / { exit_code =  │
00:18:45 verbose #23488 > > │ 0; output_length = 134 }                                                     │
00:18:45 verbose #23489 > > │                                                                              │
00:18:45 verbose #23490 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:45 verbose #23491 > >
00:18:45 verbose #23492 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:45 verbose #23493 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:45 verbose #23494 > > │ ### velocity_cf                                                              │
00:18:45 verbose #23495 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:45 verbose #23496 > >
00:18:45 verbose #23497 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:45 verbose #23498 > > type mass = f64
00:18:45 verbose #23499 > > type time = f64
00:18:45 verbose #23500 > > type position = f64
00:18:45 verbose #23501 > > type velocity = f64
00:18:45 verbose #23502 > > type force = f64
00:18:45 verbose #23503 > >
00:18:45 verbose #23504 > > type velocity_cf = mass -> velocity -> list force -> (time -> velocity)
00:18:45 verbose #23505 > >
00:18:45 verbose #23506 > > inl velocity_cf m v0 fs =
00:18:45 verbose #23507 > >     inl f_net = fs |> listm'.sum
00:18:45 verbose #23508 > >     inl a0 = f_net / m
00:18:45 verbose #23509 > >     inl v t = v0 + a0 * t
00:18:45 verbose #23510 > >     v
00:18:45 verbose #23511 > >
00:18:45 verbose #23512 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:45 verbose #23513 > > //// test
00:18:45 verbose #23514 > >
00:18:45 verbose #23515 > > velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]] 0
00:18:45 verbose #23516 > > |> _assert_eq 0.6
00:18:45 verbose #23517 > >
00:18:45 verbose #23518 > > velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]] 1
00:18:45 verbose #23519 > > |> _assert_eq 0.2
00:18:45 verbose #23520 > >
00:18:45 verbose #23521 > > ╭─[ 94.77ms - stdout ]─────────────────────────────────────────────────────────╮
00:18:45 verbose #23522 > > │ __assert_eq / actual: 0.6 / expected: 0.6                                    │
00:18:45 verbose #23523 > > │ __assert_eq / actual: 0.2 / expected: 0.2                                    │
00:18:45 verbose #23524 > > │                                                                              │
00:18:45 verbose #23525 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:45 verbose #23526 > >
00:18:45 verbose #23527 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:45 verbose #23528 > > //// test
00:18:45 verbose #23529 > >
00:18:45 verbose #23530 > > inl x = am'.init_series 0f64 4 0.1
00:18:45 verbose #23531 > > inl y = x |> am'.map_base (velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]])
00:18:45 verbose #23532 > > "car on an air track", "time (s)", "", ;[[ "velocity of car (m/s)", x, y ]]
00:18:46 verbose #23533 > >
00:18:46 verbose #23534 > > ╭─[ 105.02ms - return value ]──────────────────────────────────────────────────╮
00:18:46 verbose #23535 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:18:46 verbose #23536 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:18:46 verbose #23537 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:18:46 verbose #23538 > > │ stroke="none"/>                                                              │
00:18:46 verbose #23539 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:18:46 verbose #23540 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:46 verbose #23541 > > │ fill="#FFFFFF">                                                              │
00:18:46 verbose #23542 > > │ car on an air track                                                          │
00:18:46 verbose #23543 > > │ </text>                                                                      │
00:18:46 verbose #23544 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="57" y1="424" x2="57" │
00:18:46 verbose #23545 > > │ y2="75"/>                                                                    │
00:18:46 verbose #23546 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:18:46 verbose #23547 > > │ y2="75"/>                                                                    │
00:18:46 verbose #23548 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="82" y1="424" x2="82" │
00:18:46 verbose #23549 > > │ y2="75"/>                                                                    │
00:18:46 verbose #23550 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │
00:18:46 verbose #23551 > > │ y2="75"/>                                                                    │
00:18:46 verbose #23552 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="107" y1="424"        │
00:18:46 verbose #23553 > > │ x2="107" y2="75"/>                                                           │
00:18:46 verbose #23554 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:18:46 verbose #23555 > > │ x2="119" y2="75"/>                                                           │
00:18:46 verbose #23556 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="132" y1="424"        │
00:18:46 verbose #23557 > > │ x2="132" y2="75"/>                                                           │
00:18:46 verbose #23558 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424"        │
00:18:46 verbose #23559 > > │ x2="144" y2="75"/>                                                           │
00:18:46 verbose #23560 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="157" y1="424"        │
00:18:46 verbose #23561 > > │ x2="157" y2="75"/>                                                           │
00:18:46 verbose #23562 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424"        │
00:18:46 verbose #23563 > > │ x2="169" y2="75"/>                                                           │
00:18:46 verbose #23564 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="182" y1="424"        │
00:18:46 verbose #23565 > > │ x2="182" y2="75"/>                                                           │
00:18:46 verbose #23566 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="194" y1="424"        │
00:18:46 verbose #23567 > > │ x2="194" y2="75"/>                                                           │
00:18:46 verbose #23568 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="207" y1="424"        │
00:18:46 verbose #23569 > > │ x2="207" y2="75"/>                                                           │
00:18:46 verbose #23570 > > │ <line opacit...85,209 590,209 "/>                                            │
00:18:46 verbose #23571 > > │ <text x="617" y="168" dy="0.5ex" text-anchor="end" font-family="sans-serif"  │
00:18:46 verbose #23572 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF">                     │
00:18:46 verbose #23573 > > │ 0.2                                                                          │
00:18:46 verbose #23574 > > │ </text>                                                                      │
00:18:46 verbose #23575 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:18:46 verbose #23576 > > │ points="585,168 590,168 "/>                                                  │
00:18:46 verbose #23577 > > │ <text x="617" y="127" dy="0.5ex" text-anchor="end" font-family="sans-serif"  │
00:18:46 verbose #23578 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF">                     │
00:18:46 verbose #23579 > > │ 0.4                                                                          │
00:18:46 verbose #23580 > > │ </text>                                                                      │
00:18:46 verbose #23581 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:18:46 verbose #23582 > > │ points="585,127 590,127 "/>                                                  │
00:18:46 verbose #23583 > > │ <text x="617" y="85" dy="0.5ex" text-anchor="end" font-family="sans-serif"   │
00:18:46 verbose #23584 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF">                     │
00:18:46 verbose #23585 > > │ 0.6                                                                          │
00:18:46 verbose #23586 > > │ </text>                                                                      │
00:18:46 verbose #23587 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:18:46 verbose #23588 > > │ points="585,85 590,85 "/>                                                    │
00:18:46 verbose #23589 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:46 verbose #23590 > > │ points="69,85 82,94 94,102 107,110 119,118 132,127 144,135 157,143 169,151   │
00:18:46 verbose #23591 > > │ 182,159 194,168 207,176 219,184 232,192 244,201 257,209 269,217 282,225      │
00:18:46 verbose #23592 > > │ 294,234 307,242 319,250 331,258 344,266 356,275 369,283 381,291 394,299      │
00:18:46 verbose #23593 > > │ 406,308 419,316 431,324 444,332 456,341 469,349 481,357 494,365 506,373      │
00:18:46 verbose #23594 > > │ 519,382 531,390 544,398 556,406 569,415 "/>                                  │
00:18:46 verbose #23595 > > │ <rect x="415" y="235" width="165" height="30" opacity="1" fill="none"        │
00:18:46 verbose #23596 > > │ stroke="#FFFFFF"/>                                                           │
00:18:46 verbose #23597 > > │ <text x="455" y="245" dy="0.76em" text-anchor="start"                        │
00:18:46 verbose #23598 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:46 verbose #23599 > > │ fill="#FFFFFF">                                                              │
00:18:46 verbose #23600 > > │ velocity of car (m/s)                                                        │
00:18:46 verbose #23601 > > │ </text>                                                                      │
00:18:46 verbose #23602 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:46 verbose #23603 > > │ points="425,250 445,250 "/>                                                  │
00:18:46 verbose #23604 > > │ </svg>                                                                       │
00:18:46 verbose #23605 > > │                                                                              │
00:18:46 verbose #23606 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:46 verbose #23607 > >
00:18:46 verbose #23608 > > ╭─[ 108.99ms - stdout ]────────────────────────────────────────────────────────╮
00:18:46 verbose #23609 > > │ 00:00:06   debug #10 runtime.execute_with_options_async / { options = { │
00:18:46 verbose #23610 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:18:46 verbose #23611 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:18:46 verbose #23612 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:18:46 verbose #23613 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:18:46 verbose #23614 > > │ 00:00:06 verbose #11 > Creating                                         │
00:18:46 verbose #23615 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/ca28324d0914f6213d0 │
00:18:46 verbose #23616 > > │ 165ae9c1e93d26d3b9e674acc73e0947a72dfaf617897.svg                            │
00:18:46 verbose #23617 > > │ 00:00:06   debug #12 runtime.execute_with_options_async / { exit_code = │
00:18:46 verbose #23618 > > │ 0; output_length = 134 }                                                     │
00:18:46 verbose #23619 > > │                                                                              │
00:18:46 verbose #23620 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:46 verbose #23621 > >
00:18:46 verbose #23622 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:46 verbose #23623 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:46 verbose #23624 > > │ ### derivative                                                               │
00:18:46 verbose #23625 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:46 verbose #23626 > >
00:18:46 verbose #23627 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:46 verbose #23628 > > type derivative = (f64 -> f64) -> f64 -> f64
00:18:46 verbose #23629 > >
00:18:46 verbose #23630 > > inl derivative dt : derivative =
00:18:46 verbose #23631 > >     fun x t =>
00:18:46 verbose #23632 > >         (x (t + dt / 2) - x (t - dt / 2)) / dt
00:18:46 verbose #23633 > >
00:18:46 verbose #23634 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:46 verbose #23635 > > //// test
00:18:46 verbose #23636 > >
00:18:46 verbose #23637 > > derivative 1 (fun x => x ** 4 / 4) 1 - 1
00:18:46 verbose #23638 > > |> _assert_approx_eq None 0.25
00:18:46 verbose #23639 > >
00:18:46 verbose #23640 > > derivative 0.001 (fun x => x ** 4 / 4) 1 - 1
00:18:46 verbose #23641 > > |> _assert_approx_eq None 0.0000002499998827953931
00:18:46 verbose #23642 > >
00:18:46 verbose #23643 > > derivative 0.000001 (fun x => x ** 4 / 4) 1 - 1
00:18:46 verbose #23644 > > |> _assert_approx_eq None 0.000000000001000088900582341
00:18:46 verbose #23645 > >
00:18:46 verbose #23646 > > derivative 0.000000001 (fun x => x ** 4 / 4) 1 - 1
00:18:46 verbose #23647 > > |> _assert_approx_eq None 0.00000008274037099909037
00:18:46 verbose #23648 > >
00:18:46 verbose #23649 > > derivative 0.000000000001 (fun x => x ** 4 / 4) 1 - 1
00:18:46 verbose #23650 > > |> _assert_approx_eq None 0.00008890058234101161
00:18:46 verbose #23651 > >
00:18:46 verbose #23652 > > derivative 0.000000000000001 (fun x => x ** 4 / 4) 1 - 1
00:18:46 verbose #23653 > > |> _assert_approx_eq None -0.0007992778373592246
00:18:46 verbose #23654 > >
00:18:46 verbose #23655 > > derivative 0.000000000000000001 (fun x => x ** 4 / 4) 1 - 1
00:18:46 verbose #23656 > > |> _assert_approx_eq None -1
00:18:46 verbose #23657 > >
00:18:46 verbose #23658 > > ╭─[ 107.70ms - stdout ]────────────────────────────────────────────────────────╮
00:18:46 verbose #23659 > > │ __assert_approx_eq / actual: 0.25 / expected: 0.25                           │
00:18:46 verbose #23660 > > │ __assert_approx_eq / actual: 2.499998828e-07 / expected: 2.499998828e-07     │
00:18:46 verbose #23661 > > │ __assert_approx_eq / actual: 1.000088901e-12 / expected: 1.000088901e-12     │
00:18:46 verbose #23662 > > │ __assert_approx_eq / actual: 8.2740371e-08 / expected: 8.2740371e-08         │
00:18:46 verbose #23663 > > │ __assert_approx_eq / actual: 8.890058234e-05 / expected: 8.890058234e-05     │
00:18:46 verbose #23664 > > │ __assert_approx_eq / actual: -0.0007992778374 / expected: -0.0007992778374   │
00:18:46 verbose #23665 > > │ __assert_approx_eq / actual: -1.0 / expected: -1.0                           │
00:18:46 verbose #23666 > > │                                                                              │
00:18:46 verbose #23667 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:46 verbose #23668 > >
00:18:46 verbose #23669 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:46 verbose #23670 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:46 verbose #23671 > > │ ### integration                                                              │
00:18:46 verbose #23672 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:46 verbose #23673 > >
00:18:46 verbose #23674 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:46 verbose #23675 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64
00:18:46 verbose #23676 > >
00:18:46 verbose #23677 > > inl integral dt : integration =
00:18:46 verbose #23678 > >     fun f a b =>
00:18:46 verbose #23679 > >         inl rec loop t y =
00:18:46 verbose #23680 > >             if t < b
00:18:46 verbose #23681 > >             then loop (t + dt) (y + f t * dt)
00:18:46 verbose #23682 > >             else t, y
00:18:46 verbose #23683 > >         loop (a + dt / 2) 0
00:18:46 verbose #23684 > >         |> snd
00:18:46 verbose #23685 > >
00:18:46 verbose #23686 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:46 verbose #23687 > > //// test
00:18:46 verbose #23688 > >
00:18:46 verbose #23689 > > integral 0.01 math.square 0 1
00:18:46 verbose #23690 > > |> _assert_approx_eq None 0.33332500000000004
00:18:46 verbose #23691 > >
00:18:46 verbose #23692 > > ╭─[ 96.49ms - stdout ]─────────────────────────────────────────────────────────╮
00:18:46 verbose #23693 > > │ __assert_approx_eq / actual: 0.333325 / expected: 0.333325                   │
00:18:46 verbose #23694 > > │                                                                              │
00:18:46 verbose #23695 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:46 verbose #23696 > >
00:18:46 verbose #23697 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:46 verbose #23698 > > inl integral' dt : integration =
00:18:46 verbose #23699 > >     fun f a b =>
00:18:46 verbose #23700 > >         listm'.init_series (a + dt / 2) (b - dt / 2) dt
00:18:46 verbose #23701 > >         |> listm.map (f >> (*) dt)
00:18:46 verbose #23702 > >         |> listm'.sum
00:18:46 verbose #23703 > >
00:18:46 verbose #23704 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:46 verbose #23705 > > //// test
00:18:46 verbose #23706 > >
00:18:46 verbose #23707 > > integral' 0.1 math.square 0 1
00:18:46 verbose #23708 > > |> _assert_approx_eq None (integral 0.1 math.square 0 1)
00:18:46 verbose #23709 > >
00:18:46 verbose #23710 > > ╭─[ 93.99ms - stdout ]─────────────────────────────────────────────────────────╮
00:18:46 verbose #23711 > > │ __assert_approx_eq / actual: 0.3325 / expected: 0.3325                       │
00:18:46 verbose #23712 > > │                                                                              │
00:18:46 verbose #23713 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:46 verbose #23714 > >
00:18:46 verbose #23715 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:46 verbose #23716 > > inl integral'' dt : integration =
00:18:46 verbose #23717 > >     fun f x y =>
00:18:46 verbose #23718 > >         am'.init_series (x + dt / 2) (y - dt / 2) dt
00:18:46 verbose #23719 > >         |> fun x => a x : _ int _
00:18:46 verbose #23720 > >         |> am.map (f >> (*) dt)
00:18:46 verbose #23721 > >         |> am'.sum
00:18:46 verbose #23722 > >
00:18:46 verbose #23723 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:46 verbose #23724 > > //// test
00:18:46 verbose #23725 > >
00:18:46 verbose #23726 > > integral'' 0.01 math.square 0 1
00:18:46 verbose #23727 > > |> _assert_approx_eq None (integral 0.01 math.square 0 1)
00:18:46 verbose #23728 > >
00:18:46 verbose #23729 > > ╭─[ 201.46ms - stdout ]────────────────────────────────────────────────────────╮
00:18:46 verbose #23730 > > │ __assert_approx_eq / actual: 0.333325 / expected: 0.333325                   │
00:18:46 verbose #23731 > > │                                                                              │
00:18:46 verbose #23732 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:46 verbose #23733 > >
00:18:46 verbose #23734 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:46 verbose #23735 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:46 verbose #23736 > > │ ### anti_derivative                                                          │
00:18:46 verbose #23737 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:46 verbose #23738 > >
00:18:46 verbose #23739 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:46 verbose #23740 > > inl anti_derivative dt v0 a t =
00:18:46 verbose #23741 > >     v0 + integral' dt a 0 t
00:18:47 verbose #23742 > >
00:18:47 verbose #23743 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:47 verbose #23744 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:47 verbose #23745 > > │ ### velocity_ft                                                              │
00:18:47 verbose #23746 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:47 verbose #23747 > >
00:18:47 verbose #23748 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:47 verbose #23749 > > type velocity_ft = mass -> velocity -> list (time -> force) -> (time ->
00:18:47 verbose #23750 > > velocity)
00:18:47 verbose #23751 > >
00:18:47 verbose #23752 > > inl velocity_ft dt : velocity_ft =
00:18:47 verbose #23753 > >     fun m v0 fs =>
00:18:47 verbose #23754 > >         inl f_net t = fs |> listm.map (fun f => f t) |> listm'.sum
00:18:47 verbose #23755 > >         inl a t = f_net t / m
00:18:47 verbose #23756 > >         anti_derivative dt v0 a
00:18:47 verbose #23757 > >
00:18:47 verbose #23758 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:47 verbose #23759 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:47 verbose #23760 > > │ ### position_ft                                                              │
00:18:47 verbose #23761 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:47 verbose #23762 > >
00:18:47 verbose #23763 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:47 verbose #23764 > > type position_ft = mass -> position -> velocity -> list (time -> force) -> (time
00:18:47 verbose #23765 > > -> position)
00:18:47 verbose #23766 > >
00:18:47 verbose #23767 > > inl position_ft dt : position_ft =
00:18:47 verbose #23768 > >     fun m x0 v0 fs =>
00:18:47 verbose #23769 > >         velocity_ft dt m v0 fs
00:18:47 verbose #23770 > >         |> anti_derivative dt x0
00:18:47 verbose #23771 > >
00:18:47 verbose #23772 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:47 verbose #23773 > > //// test
00:18:47 verbose #23774 > >
00:18:47 verbose #23775 > > inl pedal_coast (t : time) : force =
00:18:47 verbose #23776 > >     inl t_cycle = 20
00:18:47 verbose #23777 > >     inl n_complete : i32 = t / t_cycle |> conv
00:18:47 verbose #23778 > >     inl remainder = t - conv n_complete * t_cycle
00:18:47 verbose #23779 > >     if remainder > 0 && remainder < 10
00:18:47 verbose #23780 > >     then 10
00:18:47 verbose #23781 > >     else 0
00:18:47 verbose #23782 > >
00:18:47 verbose #23783 > > inl x = am'.init_series -5f64 45 0.1
00:18:47 verbose #23784 > > inl y = x |> am'.map_base pedal_coast
00:18:47 verbose #23785 > > "child pedaling then coasting", "time (s)", "", ;[[ "force on bike (N)", x, y ]]
00:18:47 verbose #23786 > >
00:18:47 verbose #23787 > > ╭─[ 115.90ms - return value ]──────────────────────────────────────────────────╮
00:18:47 verbose #23788 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:18:47 verbose #23789 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:18:47 verbose #23790 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:18:47 verbose #23791 > > │ stroke="none"/>                                                              │
00:18:47 verbose #23792 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:18:47 verbose #23793 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:47 verbose #23794 > > │ fill="#FFFFFF">                                                              │
00:18:47 verbose #23795 > > │ child pedaling then coasting                                                 │
00:18:47 verbose #23796 > > │ </text>                                                                      │
00:18:47 verbose #23797 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:18:47 verbose #23798 > > │ y2="75"/>                                                                    │
00:18:47 verbose #23799 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:18:47 verbose #23800 > > │ y2="75"/>                                                                    │
00:18:47 verbose #23801 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:18:47 verbose #23802 > > │ y2="75"/>                                                                    │
00:18:47 verbose #23803 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:18:47 verbose #23804 > > │ y2="75"/>                                                                    │
00:18:47 verbose #23805 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │
00:18:47 verbose #23806 > > │ y2="75"/>                                                                    │
00:18:47 verbose #23807 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424"        │
00:18:47 verbose #23808 > > │ x2="109" y2="75"/>                                                           │
00:18:47 verbose #23809 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:18:47 verbose #23810 > > │ x2="119" y2="75"/>                                                           │
00:18:47 verbose #23811 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424"        │
00:18:47 verbose #23812 > > │ x2="129" y2="75"/>                                                           │
00:18:47 verbose #23813 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424"        │
00:18:47 verbose #23814 > > │ x2="139" y2="75"/>                                                           │
00:18:47 verbose #23815 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424"        │
00:18:47 verbose #23816 > > │ x2="149" y2="75"/>                                                           │
00:18:47 verbose #23817 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424"        │
00:18:47 verbose #23818 > > │ x2="159" y2="75"/>                                                           │
00:18:47 verbose #23819 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424"        │
00:18:47 verbose #23820 > > │ x2="169" y2="75"/>                                                           │
00:18:47 verbose #23821 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424"        │
00:18:47 verbose #23822 > > │ x2="179" y2="75"/>                                                           │
00:18:47 verbose #23823 > > │ <line...421,415 422,415 423,415 424,415 425,415 426,415 427,415 428,415      │
00:18:47 verbose #23824 > > │ 429,415 430,415 431,415 432,415 433,415 434,415 435,415 436,415 437,415      │
00:18:47 verbose #23825 > > │ 438,415 439,415 440,415 441,415 442,415 443,415 444,415 445,415 446,415      │
00:18:47 verbose #23826 > > │ 447,415 448,415 449,415 450,415 451,415 452,415 453,415 454,415 455,415      │
00:18:47 verbose #23827 > > │ 456,415 457,415 458,415 459,415 460,415 461,415 462,415 463,415 464,415      │
00:18:47 verbose #23828 > > │ 465,415 466,415 467,415 468,415 469,415 470,415 471,415 472,415 473,415      │
00:18:47 verbose #23829 > > │ 474,415 475,415 476,415 477,415 478,415 479,415 480,415 481,415 482,415      │
00:18:47 verbose #23830 > > │ 483,415 484,415 485,415 486,415 487,415 488,415 489,415 490,415 491,415      │
00:18:47 verbose #23831 > > │ 492,415 493,415 494,415 495,415 496,415 497,415 498,415 499,415 500,415      │
00:18:47 verbose #23832 > > │ 501,415 502,415 503,415 504,415 505,415 506,415 507,415 508,415 509,415      │
00:18:47 verbose #23833 > > │ 510,415 511,415 512,415 513,415 514,415 515,415 516,415 517,415 518,415      │
00:18:47 verbose #23834 > > │ 519,415 520,85 521,85 522,85 523,85 524,85 525,85 526,85 527,85 528,85       │
00:18:47 verbose #23835 > > │ 529,85 530,85 531,85 532,85 533,85 534,85 535,85 536,85 537,85 538,85 539,85 │
00:18:47 verbose #23836 > > │ 540,85 541,85 542,85 543,85 544,85 545,85 546,85 547,85 548,85 549,85 550,85 │
00:18:47 verbose #23837 > > │ 551,85 552,85 553,85 554,85 555,85 556,85 557,85 558,85 559,85 560,85 561,85 │
00:18:47 verbose #23838 > > │ 562,85 563,85 564,85 565,85 566,85 567,85 568,85 569,85 "/>                  │
00:18:47 verbose #23839 > > │ <rect x="437" y="235" width="143" height="30" opacity="1" fill="none"        │
00:18:47 verbose #23840 > > │ stroke="#FFFFFF"/>                                                           │
00:18:47 verbose #23841 > > │ <text x="477" y="245" dy="0.76em" text-anchor="start"                        │
00:18:47 verbose #23842 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:47 verbose #23843 > > │ fill="#FFFFFF">                                                              │
00:18:47 verbose #23844 > > │ force on bike (N)                                                            │
00:18:47 verbose #23845 > > │ </text>                                                                      │
00:18:47 verbose #23846 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:47 verbose #23847 > > │ points="447,250 467,250 "/>                                                  │
00:18:47 verbose #23848 > > │ </svg>                                                                       │
00:18:47 verbose #23849 > > │                                                                              │
00:18:47 verbose #23850 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:47 verbose #23851 > >
00:18:47 verbose #23852 > > ╭─[ 120.31ms - stdout ]────────────────────────────────────────────────────────╮
00:18:47 verbose #23853 > > │ 00:00:07   debug #13 runtime.execute_with_options_async / { options = { │
00:18:47 verbose #23854 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:18:47 verbose #23855 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:18:47 verbose #23856 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:18:47 verbose #23857 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:18:47 verbose #23858 > > │ 00:00:07 verbose #14 > Creating                                         │
00:18:47 verbose #23859 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/0ac10ed4fc31e5733d3 │
00:18:47 verbose #23860 > > │ eadbbffbf047568e7cb8eed5922ef2828dbad94721326.svg                            │
00:18:47 verbose #23861 > > │ 00:00:07   debug #15 runtime.execute_with_options_async / { exit_code = │
00:18:47 verbose #23862 > > │ 0; output_length = 134 }                                                     │
00:18:47 verbose #23863 > > │                                                                              │
00:18:47 verbose #23864 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:47 verbose #23865 > >
00:18:47 verbose #23866 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:47 verbose #23867 > > //// test
00:18:47 verbose #23868 > >
00:18:47 verbose #23869 > > inl x = am'.init_series -5 45 1
00:18:47 verbose #23870 > > inl y = x |> am'.map_base (position_ft 0.1f64 20 0 0 [[ pedal_coast ]])
00:18:47 verbose #23871 > > "child pedaling then coasting", "time (s)", "", ;[[ "position of bike (m)", x, y
00:18:47 verbose #23872 > > ]]
00:18:47 verbose #23873 > >
00:18:47 verbose #23874 > > ╭─[ 297.09ms - return value ]──────────────────────────────────────────────────╮
00:18:47 verbose #23875 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:18:47 verbose #23876 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:18:47 verbose #23877 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:18:47 verbose #23878 > > │ stroke="none"/>                                                              │
00:18:47 verbose #23879 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:18:47 verbose #23880 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:47 verbose #23881 > > │ fill="#FFFFFF">                                                              │
00:18:47 verbose #23882 > > │ child pedaling then coasting                                                 │
00:18:47 verbose #23883 > > │ </text>                                                                      │
00:18:47 verbose #23884 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:18:47 verbose #23885 > > │ y2="75"/>                                                                    │
00:18:47 verbose #23886 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:18:47 verbose #23887 > > │ y2="75"/>                                                                    │
00:18:47 verbose #23888 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:18:47 verbose #23889 > > │ y2="75"/>                                                                    │
00:18:47 verbose #23890 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:18:47 verbose #23891 > > │ y2="75"/>                                                                    │
00:18:47 verbose #23892 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │
00:18:47 verbose #23893 > > │ y2="75"/>                                                                    │
00:18:47 verbose #23894 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424"        │
00:18:47 verbose #23895 > > │ x2="109" y2="75"/>                                                           │
00:18:47 verbose #23896 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:18:47 verbose #23897 > > │ x2="119" y2="75"/>                                                           │
00:18:47 verbose #23898 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424"        │
00:18:47 verbose #23899 > > │ x2="129" y2="75"/>                                                           │
00:18:47 verbose #23900 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424"        │
00:18:47 verbose #23901 > > │ x2="139" y2="75"/>                                                           │
00:18:47 verbose #23902 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424"        │
00:18:47 verbose #23903 > > │ x2="149" y2="75"/>                                                           │
00:18:47 verbose #23904 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424"        │
00:18:47 verbose #23905 > > │ x2="159" y2="75"/>                                                           │
00:18:47 verbose #23906 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424"        │
00:18:47 verbose #23907 > > │ x2="169" y2="75"/>                                                           │
00:18:47 verbose #23908 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424"        │
00:18:47 verbose #23909 > > │ x2="179" y2="75"/>                                                           │
00:18:47 verbose #23910 > > │ <line...serif" font-size="9.67741935483871" opacity="1" fill="#FFFFFF">      │
00:18:47 verbose #23911 > > │ 200.0                                                                        │
00:18:47 verbose #23912 > > │ </text>                                                                      │
00:18:47 verbose #23913 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:18:47 verbose #23914 > > │ points="585,201 590,201 "/>                                                  │
00:18:47 verbose #23915 > > │ <text x="595" y="147" dy="0.5ex" text-anchor="start"                         │
00:18:47 verbose #23916 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:47 verbose #23917 > > │ fill="#FFFFFF">                                                              │
00:18:47 verbose #23918 > > │ 250.0                                                                        │
00:18:47 verbose #23919 > > │ </text>                                                                      │
00:18:47 verbose #23920 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:18:47 verbose #23921 > > │ points="585,147 590,147 "/>                                                  │
00:18:47 verbose #23922 > > │ <text x="595" y="94" dy="0.5ex" text-anchor="start" font-family="sans-serif" │
00:18:47 verbose #23923 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF">                     │
00:18:47 verbose #23924 > > │ 300.0                                                                        │
00:18:47 verbose #23925 > > │ </text>                                                                      │
00:18:47 verbose #23926 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:18:47 verbose #23927 > > │ points="585,94 590,94 "/>                                                    │
00:18:47 verbose #23928 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:47 verbose #23929 > > │ points="69,415 79,415 89,415 99,415 109,415 119,415 129,414 139,413 149,412  │
00:18:47 verbose #23930 > > │ 159,410 169,408 179,405 189,401 199,397 209,393 219,388 229,382 239,377      │
00:18:47 verbose #23931 > > │ 249,372 259,366 269,361 279,356 289,350 299,345 309,340 319,334 329,329      │
00:18:47 verbose #23932 > > │ 339,322 349,316 359,308 369,301 379,292 389,284 399,274 409,264 419,254      │
00:18:47 verbose #23933 > > │ 429,243 439,232 449,221 459,210 469,199 479,189 489,178 499,167 509,157      │
00:18:47 verbose #23934 > > │ 519,146 529,135 539,123 549,111 559,99 569,85 "/>                            │
00:18:47 verbose #23935 > > │ <rect x="421" y="235" width="159" height="30" opacity="1" fill="none"        │
00:18:47 verbose #23936 > > │ stroke="#FFFFFF"/>                                                           │
00:18:47 verbose #23937 > > │ <text x="461" y="245" dy="0.76em" text-anchor="start"                        │
00:18:47 verbose #23938 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:47 verbose #23939 > > │ fill="#FFFFFF">                                                              │
00:18:47 verbose #23940 > > │ position of bike (m)                                                         │
00:18:47 verbose #23941 > > │ </text>                                                                      │
00:18:47 verbose #23942 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:47 verbose #23943 > > │ points="431,250 451,250 "/>                                                  │
00:18:47 verbose #23944 > > │ </svg>                                                                       │
00:18:47 verbose #23945 > > │                                                                              │
00:18:47 verbose #23946 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:47 verbose #23947 > >
00:18:47 verbose #23948 > > ╭─[ 301.59ms - stdout ]────────────────────────────────────────────────────────╮
00:18:47 verbose #23949 > > │ 00:00:07   debug #16 runtime.execute_with_options_async / { options = { │
00:18:47 verbose #23950 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:18:47 verbose #23951 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:18:47 verbose #23952 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:18:47 verbose #23953 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:18:47 verbose #23954 > > │ 00:00:07 verbose #17 > Creating                                         │
00:18:47 verbose #23955 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/111e334258a3fc6398b │
00:18:47 verbose #23956 > > │ 55a8d561905d49cd0648a39dd06c1856b1cb0e8a9546c.svg                            │
00:18:47 verbose #23957 > > │ 00:00:07   debug #18 runtime.execute_with_options_async / { exit_code = │
00:18:47 verbose #23958 > > │ 0; output_length = 134 }                                                     │
00:18:47 verbose #23959 > > │                                                                              │
00:18:47 verbose #23960 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:47 verbose #23961 > >
00:18:47 verbose #23962 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:47 verbose #23963 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:47 verbose #23964 > > │ ### velocity_fv                                                              │
00:18:47 verbose #23965 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:47 verbose #23966 > >
00:18:47 verbose #23967 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:47 verbose #23968 > > inl newton_second_v m fs v0 =
00:18:47 verbose #23969 > >     fs |> listm.map (fun f => f v0) |> listm'.sum |> fun x => x / m
00:18:47 verbose #23970 > >
00:18:47 verbose #23971 > > inl update_velocity dt m fs v0 =
00:18:47 verbose #23972 > >     v0 + newton_second_v m fs v0 * dt
00:18:47 verbose #23973 > >
00:18:47 verbose #23974 > > inl velocity_fv dt m v0 fs t =
00:18:47 verbose #23975 > >     stream.iterate (update_velocity dt m fs) v0
00:18:47 verbose #23976 > >     |> stream.try_item (t / dt |> math.round |> abs)
00:18:47 verbose #23977 > >     |> optionm'.default_value 0
00:18:47 verbose #23978 > >
00:18:47 verbose #23979 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:47 verbose #23980 > > inl f_air drag rho area v =
00:18:47 verbose #23981 > >     -drag * rho * area * abs v * v / 2
00:18:47 verbose #23982 > >
00:18:47 verbose #23983 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:47 verbose #23984 > > //// test
00:18:47 verbose #23985 > >
00:18:47 verbose #23986 > > inl x = am'.init_series 0 60 0.5
00:18:47 verbose #23987 > > inl y = x |> am'.map_base (velocity_fv 1 70 0f64 [[ fun _ => 100; f_air 2 1.225
00:18:47 verbose #23988 > > 0.6 ]])
00:18:47 verbose #23989 > > "bike velocity", "time (s)", "", ;[[ "velocity of bike (m/s)", x, y ]]
00:18:48 verbose #23990 > >
00:18:48 verbose #23991 > > ╭─[ 318.82ms - return value ]──────────────────────────────────────────────────╮
00:18:48 verbose #23992 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:18:48 verbose #23993 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:18:48 verbose #23994 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:18:48 verbose #23995 > > │ stroke="none"/>                                                              │
00:18:48 verbose #23996 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:18:48 verbose #23997 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:48 verbose #23998 > > │ fill="#FFFFFF">                                                              │
00:18:48 verbose #23999 > > │ bike velocity                                                                │
00:18:48 verbose #24000 > > │ </text>                                                                      │
00:18:48 verbose #24001 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │
00:18:48 verbose #24002 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24003 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:18:48 verbose #24004 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24005 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │
00:18:48 verbose #24006 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24007 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │
00:18:48 verbose #24008 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24009 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │
00:18:48 verbose #24010 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24011 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" y1="424"        │
00:18:48 verbose #24012 > > │ x2="103" y2="75"/>                                                           │
00:18:48 verbose #24013 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" y1="424"        │
00:18:48 verbose #24014 > > │ x2="111" y2="75"/>                                                           │
00:18:48 verbose #24015 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:18:48 verbose #24016 > > │ x2="119" y2="75"/>                                                           │
00:18:48 verbose #24017 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" y1="424"        │
00:18:48 verbose #24018 > > │ x2="128" y2="75"/>                                                           │
00:18:48 verbose #24019 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" y1="424"        │
00:18:48 verbose #24020 > > │ x2="136" y2="75"/>                                                           │
00:18:48 verbose #24021 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424"        │
00:18:48 verbose #24022 > > │ x2="144" y2="75"/>                                                           │
00:18:48 verbose #24023 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424"        │
00:18:48 verbose #24024 > > │ x2="153" y2="75"/>                                                           │
00:18:48 verbose #24025 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" y1="424"        │
00:18:48 verbose #24026 > > │ x2="161" y2="75"/>                                                           │
00:18:48 verbose #24027 > > │ <line opacity="1" st...t" font-family="sans-serif"                           │
00:18:48 verbose #24028 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF">                     │
00:18:48 verbose #24029 > > │ 12.0                                                                         │
00:18:48 verbose #24030 > > │ </text>                                                                      │
00:18:48 verbose #24031 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:18:48 verbose #24032 > > │ points="585,76 590,76 "/>                                                    │
00:18:48 verbose #24033 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:48 verbose #24034 > > │ points="69,415 74,415 78,374 82,335 86,335 90,335 94,297 99,261 103,261      │
00:18:48 verbose #24035 > > │ 107,261 111,230 115,202 119,202 124,202 128,179 132,159 136,159 140,159      │
00:18:48 verbose #24036 > > │ 144,143 148,130 153,130 157,130 161,120 165,112 169,112 173,112 178,106      │
00:18:48 verbose #24037 > > │ 182,101 186,101 190,101 194,97 198,94 203,94 207,94 211,92 215,91 219,91     │
00:18:48 verbose #24038 > > │ 223,91 228,89 232,88 236,88 240,88 244,88 248,87 252,87 257,87 261,87 265,86 │
00:18:48 verbose #24039 > > │ 269,86 273,86 277,86 282,86 286,86 290,86 294,86 298,86 302,86 307,86 311,86 │
00:18:48 verbose #24040 > > │ 315,86 319,86 323,86 327,86 331,85 336,85 340,85 344,85 348,85 352,85 356,85 │
00:18:48 verbose #24041 > > │ 361,85 365,85 369,85 373,85 377,85 381,85 386,85 390,85 394,85 398,85 402,85 │
00:18:48 verbose #24042 > > │ 406,85 410,85 415,85 419,85 423,85 427,85 431,85 435,85 440,85 444,85 448,85 │
00:18:48 verbose #24043 > > │ 452,85 456,85 460,85 465,85 469,85 473,85 477,85 481,85 485,85 490,85 494,85 │
00:18:48 verbose #24044 > > │ 498,85 502,85 506,85 510,85 514,85 519,85 523,85 527,85 531,85 535,85 539,85 │
00:18:48 verbose #24045 > > │ 544,85 548,85 552,85 556,85 560,85 564,85 569,85 "/>                         │
00:18:48 verbose #24046 > > │ <rect x="410" y="235" width="170" height="30" opacity="1" fill="none"        │
00:18:48 verbose #24047 > > │ stroke="#FFFFFF"/>                                                           │
00:18:48 verbose #24048 > > │ <text x="450" y="245" dy="0.76em" text-anchor="start"                        │
00:18:48 verbose #24049 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:48 verbose #24050 > > │ fill="#FFFFFF">                                                              │
00:18:48 verbose #24051 > > │ velocity of bike (m/s)                                                       │
00:18:48 verbose #24052 > > │ </text>                                                                      │
00:18:48 verbose #24053 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:48 verbose #24054 > > │ points="420,250 440,250 "/>                                                  │
00:18:48 verbose #24055 > > │ </svg>                                                                       │
00:18:48 verbose #24056 > > │                                                                              │
00:18:48 verbose #24057 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:48 verbose #24058 > >
00:18:48 verbose #24059 > > ╭─[ 323.07ms - stdout ]────────────────────────────────────────────────────────╮
00:18:48 verbose #24060 > > │ 00:00:08   debug #19 runtime.execute_with_options_async / { options = { │
00:18:48 verbose #24061 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:18:48 verbose #24062 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:18:48 verbose #24063 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:18:48 verbose #24064 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:18:48 verbose #24065 > > │ 00:00:08 verbose #20 > Creating                                         │
00:18:48 verbose #24066 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/b1c46a76c7d24517390 │
00:18:48 verbose #24067 > > │ 9491beb9557fd28414b9dde459da20a63459014535a90.svg                            │
00:18:48 verbose #24068 > > │ 00:00:08   debug #21 runtime.execute_with_options_async / { exit_code = │
00:18:48 verbose #24069 > > │ 0; output_length = 134 }                                                     │
00:18:48 verbose #24070 > > │                                                                              │
00:18:48 verbose #24071 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:48 verbose #24072 > >
00:18:48 verbose #24073 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:48 verbose #24074 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:48 verbose #24075 > > │ ### velocity_ftv                                                             │
00:18:48 verbose #24076 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:48 verbose #24077 > >
00:18:48 verbose #24078 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:48 verbose #24079 > > inl newton_second_tv m fs (t, v0) =
00:18:48 verbose #24080 > >     inl f_net = fs |> listm.map (fun f => f (t, v0)) |> listm'.sum
00:18:48 verbose #24081 > >     inl acc = f_net / m
00:18:48 verbose #24082 > >     1, acc
00:18:48 verbose #24083 > >
00:18:48 verbose #24084 > > inl update_tv dt m fs (t, v0) =
00:18:48 verbose #24085 > >     inl dtdt, dvdt = newton_second_tv m fs (t, v0)
00:18:48 verbose #24086 > >     t + dtdt * dt, v0 + dvdt * dt
00:18:48 verbose #24087 > >
00:18:48 verbose #24088 > > inl velocity_ftv dt m tv0 fs t =
00:18:48 verbose #24089 > >     stream.iterate (join update_tv dt m fs) tv0
00:18:48 verbose #24090 > >     |> stream.try_item (t / dt |> math.round |> abs)
00:18:48 verbose #24091 > >     |> optionm.map snd
00:18:48 verbose #24092 > >     |> optionm'.default_value 0
00:18:48 verbose #24093 > >
00:18:48 verbose #24094 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:48 verbose #24095 > > //// test
00:18:48 verbose #24096 > >
00:18:48 verbose #24097 > > inl x = am'.init_series 0 100 0.1
00:18:48 verbose #24098 > > inl y =
00:18:48 verbose #24099 > >     x
00:18:48 verbose #24100 > >     |> am'.map_base (
00:18:48 verbose #24101 > >         velocity_ftv 0.1 20 (dyn (0, 0)) [[ fun (t, _) => pedal_coast t; fun (_,
00:18:48 verbose #24102 > > v) => f_air 2 1.225 0.5 v ]]
00:18:48 verbose #24103 > >     )
00:18:48 verbose #24104 > > "pedaling and coasting with air", "time (s)", "", ;[[ "velocity of bike (m/s)",
00:18:48 verbose #24105 > > x, y ]]
00:18:48 verbose #24106 > >
00:18:48 verbose #24107 > > ╭─[ 248.30ms - return value ]──────────────────────────────────────────────────╮
00:18:48 verbose #24108 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:18:48 verbose #24109 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:18:48 verbose #24110 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:18:48 verbose #24111 > > │ stroke="none"/>                                                              │
00:18:48 verbose #24112 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:18:48 verbose #24113 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:48 verbose #24114 > > │ fill="#FFFFFF">                                                              │
00:18:48 verbose #24115 > > │ pedaling and coasting with air                                               │
00:18:48 verbose #24116 > > │ </text>                                                                      │
00:18:48 verbose #24117 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:18:48 verbose #24118 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24119 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:18:48 verbose #24120 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24121 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:18:48 verbose #24122 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24123 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:18:48 verbose #24124 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24125 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │
00:18:48 verbose #24126 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24127 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424"        │
00:18:48 verbose #24128 > > │ x2="109" y2="75"/>                                                           │
00:18:48 verbose #24129 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:18:48 verbose #24130 > > │ x2="119" y2="75"/>                                                           │
00:18:48 verbose #24131 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424"        │
00:18:48 verbose #24132 > > │ x2="129" y2="75"/>                                                           │
00:18:48 verbose #24133 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424"        │
00:18:48 verbose #24134 > > │ x2="139" y2="75"/>                                                           │
00:18:48 verbose #24135 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424"        │
00:18:48 verbose #24136 > > │ x2="149" y2="75"/>                                                           │
00:18:48 verbose #24137 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424"        │
00:18:48 verbose #24138 > > │ x2="159" y2="75"/>                                                           │
00:18:48 verbose #24139 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424"        │
00:18:48 verbose #24140 > > │ x2="169" y2="75"/>                                                           │
00:18:48 verbose #24141 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424"        │
00:18:48 verbose #24142 > > │ x2="179" y2="75"/>                                                           │
00:18:48 verbose #24143 > > │ <li... 497,128 497,126 498,125 498,123 499,122 499,121 500,119 500,118       │
00:18:48 verbose #24144 > > │ 501,117 501,116 502,114 502,113 503,112 503,111 504,110 504,109 505,108      │
00:18:48 verbose #24145 > > │ 505,107 506,106 506,105 507,104 507,103 508,102 508,101 509,100 509,99       │
00:18:48 verbose #24146 > > │ 510,98 510,98 511,97 511,96 512,95 512,94 513,94 513,93 514,92 514,92 515,91 │
00:18:48 verbose #24147 > > │ 515,90 516,90 516,89 517,88 517,88 518,87 518,87 519,86 519,85 520,89 520,93 │
00:18:48 verbose #24148 > > │ 521,97 521,100 522,104 522,107 523,110 523,114 524,117 524,120 525,123       │
00:18:48 verbose #24149 > > │ 525,126 526,129 526,132 527,135 527,137 528,140 528,143 529,145 529,148      │
00:18:48 verbose #24150 > > │ 530,150 530,153 531,155 531,158 532,160 532,162 533,165 533,167 534,169      │
00:18:48 verbose #24151 > > │ 534,171 535,173 535,175 536,177 536,179 537,181 537,183 538,185 538,187      │
00:18:48 verbose #24152 > > │ 539,189 539,190 540,192 540,194 541,196 541,197 542,199 542,201 543,202      │
00:18:48 verbose #24153 > > │ 543,204 544,205 544,207 545,208 545,210 546,211 546,213 547,214 547,216      │
00:18:48 verbose #24154 > > │ 548,217 548,219 549,220 549,221 550,223 550,224 551,225 551,226 552,228      │
00:18:48 verbose #24155 > > │ 552,229 553,230 553,231 554,232 554,234 555,235 555,236 556,237 556,238      │
00:18:48 verbose #24156 > > │ 557,239 557,240 558,241 558,242 559,243 559,245 560,246 560,247 561,248      │
00:18:48 verbose #24157 > > │ 561,249 562,249 562,250 563,251 563,252 564,253 564,254 565,255 565,256      │
00:18:48 verbose #24158 > > │ 566,257 566,258 567,259 567,259 568,260 568,261 569,262 "/>                  │
00:18:48 verbose #24159 > > │ <rect x="410" y="235" width="170" height="30" opacity="1" fill="none"        │
00:18:48 verbose #24160 > > │ stroke="#FFFFFF"/>                                                           │
00:18:48 verbose #24161 > > │ <text x="450" y="245" dy="0.76em" text-anchor="start"                        │
00:18:48 verbose #24162 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:48 verbose #24163 > > │ fill="#FFFFFF">                                                              │
00:18:48 verbose #24164 > > │ velocity of bike (m/s)                                                       │
00:18:48 verbose #24165 > > │ </text>                                                                      │
00:18:48 verbose #24166 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:48 verbose #24167 > > │ points="420,250 440,250 "/>                                                  │
00:18:48 verbose #24168 > > │ </svg>                                                                       │
00:18:48 verbose #24169 > > │                                                                              │
00:18:48 verbose #24170 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:48 verbose #24171 > >
00:18:48 verbose #24172 > > ╭─[ 252.56ms - stdout ]────────────────────────────────────────────────────────╮
00:18:48 verbose #24173 > > │ 00:00:08   debug #22 runtime.execute_with_options_async / { options = { │
00:18:48 verbose #24174 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:18:48 verbose #24175 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:18:48 verbose #24176 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:18:48 verbose #24177 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:18:48 verbose #24178 > > │ 00:00:08 verbose #23 > Creating                                         │
00:18:48 verbose #24179 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/7ce179a0676b6aeb087 │
00:18:48 verbose #24180 > > │ 3f38a984563540676d6a701ce833dc3c5e65d8ab7def7.svg                            │
00:18:48 verbose #24181 > > │ 00:00:08   debug #24 runtime.execute_with_options_async / { exit_code = │
00:18:48 verbose #24182 > > │ 0; output_length = 134 }                                                     │
00:18:48 verbose #24183 > > │                                                                              │
00:18:48 verbose #24184 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:48 verbose #24185 > >
00:18:48 verbose #24186 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:48 verbose #24187 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:48 verbose #24188 > > │ ### velocity_ftxv                                                            │
00:18:48 verbose #24189 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:48 verbose #24190 > >
00:18:48 verbose #24191 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:48 verbose #24192 > > nominal state_1d = time * position * velocity
00:18:48 verbose #24193 > > nominal rrr = f64 * f64 * f64
00:18:48 verbose #24194 > >
00:18:48 verbose #24195 > > inl newton_second_1d m fs (state_1d (t, x0, v0)) =
00:18:48 verbose #24196 > >     inl f_net = fs |> listm.map (fun f => f (state_1d (t, x0, v0))) |>
00:18:48 verbose #24197 > > listm'.sum
00:18:48 verbose #24198 > >     inl acc = f_net / m
00:18:48 verbose #24199 > >     rrr (1f64, v0, acc)
00:18:48 verbose #24200 > >
00:18:48 verbose #24201 > > inl euler_1d dt deriv (state_1d (t0, x0, v0) as t) =
00:18:48 verbose #24202 > >     inl (rrr (_, _, dvdt)) = deriv t
00:18:48 verbose #24203 > >     inl t1 = t0 + dt
00:18:48 verbose #24204 > >     inl x1 = x0 + v0 * dt
00:18:48 verbose #24205 > >     inl v1 = v0 + dvdt * dt
00:18:48 verbose #24206 > >     state_1d (t1, x1, v1)
00:18:48 verbose #24207 > >
00:18:48 verbose #24208 > > inl update_txv dt m fs =
00:18:48 verbose #24209 > >     newton_second_1d m fs |> euler_1d dt
00:18:48 verbose #24210 > >
00:18:48 verbose #24211 > > inl states_txv dt m txv0 fs =
00:18:48 verbose #24212 > >     seq.iterate_ (update_txv dt m fs) txv0
00:18:48 verbose #24213 > >
00:18:48 verbose #24214 > > inl velocity_1d sts t =
00:18:48 verbose #24215 > >     inl (state_1d (t0, _, _)) = sts 0
00:18:48 verbose #24216 > >     inl (state_1d (t1, _, _)) = sts 1
00:18:48 verbose #24217 > >     inl dt = t1 - t0
00:18:48 verbose #24218 > >     inl num_steps = t / dt |> math.round |> abs
00:18:48 verbose #24219 > >     inl (state_1d (_, _, v0)) = sts num_steps
00:18:48 verbose #24220 > >     v0
00:18:48 verbose #24221 > >
00:18:48 verbose #24222 > > inl velocity_ftxv dt m txv0 fs =
00:18:48 verbose #24223 > >     states_txv dt m txv0 fs |> velocity_1d
00:18:48 verbose #24224 > >
00:18:48 verbose #24225 > > inl position_1d sts t =
00:18:48 verbose #24226 > >     inl (state_1d (t0, _, _)) = sts 0
00:18:48 verbose #24227 > >     inl (state_1d (t1, _, _)) = sts 1
00:18:48 verbose #24228 > >     inl dt = t1 - t0
00:18:48 verbose #24229 > >     inl num_steps = t / dt |> math.round |> abs
00:18:48 verbose #24230 > >     inl (state_1d (_, x0, _)) = sts num_steps
00:18:48 verbose #24231 > >     x0
00:18:48 verbose #24232 > >
00:18:48 verbose #24233 > > inl position_ftxv dt m txv0 fs =
00:18:48 verbose #24234 > >     states_txv dt m txv0 fs |> position_1d
00:18:48 verbose #24235 > >
00:18:48 verbose #24236 > > inl spring_force k (state_1d (_, x0, _)) =
00:18:48 verbose #24237 > >     -k * x0
00:18:48 verbose #24238 > >
00:18:48 verbose #24239 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:48 verbose #24240 > > //// test
00:18:48 verbose #24241 > >
00:18:48 verbose #24242 > > inl damped_ho_forces () =
00:18:48 verbose #24243 > >     [[
00:18:48 verbose #24244 > >         spring_force 0.8
00:18:48 verbose #24245 > >         fun (state_1d (_, _, v0)) => f_air 2 1.225 (pi * math.square 0.02) v0
00:18:48 verbose #24246 > >         fun _ => -0.0027 * 9.80665
00:18:48 verbose #24247 > >     ]]
00:18:48 verbose #24248 > >
00:18:48 verbose #24249 > > inl damped_ho_states () =
00:18:48 verbose #24250 > >     states_txv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ())
00:18:48 verbose #24251 > >
00:18:48 verbose #24252 > > inl pingpong_position t =
00:18:48 verbose #24253 > >     position_ftxv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) t
00:18:48 verbose #24254 > >
00:18:48 verbose #24255 > > inl x = am'.init_series 0 3 0.01
00:18:48 verbose #24256 > > inl y = x |> am'.map_base pingpong_position
00:18:48 verbose #24257 > > "ping pong ball on a slinky", "time (s)", "", ;[[ "position (m)", x, y ]]
00:18:48 verbose #24258 > >
00:18:48 verbose #24259 > > ╭─[ 137.37ms - return value ]──────────────────────────────────────────────────╮
00:18:48 verbose #24260 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:18:48 verbose #24261 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:18:48 verbose #24262 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:18:48 verbose #24263 > > │ stroke="none"/>                                                              │
00:18:48 verbose #24264 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:18:48 verbose #24265 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:48 verbose #24266 > > │ fill="#FFFFFF">                                                              │
00:18:48 verbose #24267 > > │ ping pong ball on a slinky                                                   │
00:18:48 verbose #24268 > > │ </text>                                                                      │
00:18:48 verbose #24269 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │
00:18:48 verbose #24270 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24271 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:18:48 verbose #24272 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24273 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │
00:18:48 verbose #24274 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24275 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │
00:18:48 verbose #24276 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24277 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │
00:18:48 verbose #24278 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24279 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" y1="424"        │
00:18:48 verbose #24280 > > │ x2="103" y2="75"/>                                                           │
00:18:48 verbose #24281 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" y1="424"        │
00:18:48 verbose #24282 > > │ x2="111" y2="75"/>                                                           │
00:18:48 verbose #24283 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:18:48 verbose #24284 > > │ x2="119" y2="75"/>                                                           │
00:18:48 verbose #24285 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" y1="424"        │
00:18:48 verbose #24286 > > │ x2="128" y2="75"/>                                                           │
00:18:48 verbose #24287 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" y1="424"        │
00:18:48 verbose #24288 > > │ x2="136" y2="75"/>                                                           │
00:18:48 verbose #24289 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424"        │
00:18:48 verbose #24290 > > │ x2="144" y2="75"/>                                                           │
00:18:48 verbose #24291 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424"        │
00:18:48 verbose #24292 > > │ x2="153" y2="75"/>                                                           │
00:18:48 verbose #24293 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" y1="424"        │
00:18:48 verbose #24294 > > │ x2="161" y2="75"/>                                                           │
00:18:48 verbose #24295 > > │ <line o...88 332,305 334,321 336,334 337,346 339,354 341,360 342,363 344,362 │
00:18:48 verbose #24296 > > │ 346,359 347,352 349,342 351,330 352,316 354,300 356,283 357,265 359,247      │
00:18:48 verbose #24297 > > │ 361,229 362,212 364,197 366,183 367,172 369,163 371,156 372,153 374,153      │
00:18:48 verbose #24298 > > │ 376,156 377,161 379,170 381,181 382,194 384,209 386,226 387,243 389,260      │
00:18:48 verbose #24299 > > │ 391,277 392,294 394,309 396,323 397,335 399,344 401,351 402,355 404,356      │
00:18:48 verbose #24300 > > │ 406,354 407,349 409,341 410,331 412,319 414,305 415,289 417,273 419,256      │
00:18:48 verbose #24301 > > │ 420,239 422,223 424,208 425,194 427,182 429,172 430,165 432,161 434,159      │
00:18:48 verbose #24302 > > │ 435,160 437,164 439,171 440,180 442,192 444,205 445,220 447,235 449,252      │
00:18:48 verbose #24303 > > │ 450,268 452,284 454,299 455,313 457,325 459,335 460,342 462,347 464,350      │
00:18:48 verbose #24304 > > │ 465,349 467,346 469,340 470,332 472,321 474,309 475,295 477,280 479,264      │
00:18:48 verbose #24305 > > │ 480,248 482,232 484,217 485,204 487,192 489,181 490,173 492,168 494,165      │
00:18:48 verbose #24306 > > │ 495,165 497,167 499,172 500,180 502,189 504,201 505,215 507,229 509,244      │
00:18:48 verbose #24307 > > │ 510,260 512,275 514,290 515,303 517,316 519,326 520,335 522,341 524,344      │
00:18:48 verbose #24308 > > │ 525,345 527,343 529,339 530,332 532,323 534,312 535,300 537,286 539,271      │
00:18:48 verbose #24309 > > │ 540,256 542,241 544,226 545,213 547,200 549,190 550,181 552,175 554,171      │
00:18:48 verbose #24310 > > │ 555,169 557,170 559,174 560,180 562,188 564,198 565,210 567,223 569,238 "/>  │
00:18:48 verbose #24311 > > │ <rect x="464" y="235" width="116" height="30" opacity="1" fill="none"        │
00:18:48 verbose #24312 > > │ stroke="#FFFFFF"/>                                                           │
00:18:48 verbose #24313 > > │ <text x="504" y="245" dy="0.76em" text-anchor="start"                        │
00:18:48 verbose #24314 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:48 verbose #24315 > > │ fill="#FFFFFF">                                                              │
00:18:48 verbose #24316 > > │ position (m)                                                                 │
00:18:48 verbose #24317 > > │ </text>                                                                      │
00:18:48 verbose #24318 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:48 verbose #24319 > > │ points="474,250 494,250 "/>                                                  │
00:18:48 verbose #24320 > > │ </svg>                                                                       │
00:18:48 verbose #24321 > > │                                                                              │
00:18:48 verbose #24322 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:48 verbose #24323 > >
00:18:48 verbose #24324 > > ╭─[ 141.72ms - stdout ]────────────────────────────────────────────────────────╮
00:18:48 verbose #24325 > > │ 00:00:08   debug #25 runtime.execute_with_options_async / { options = { │
00:18:48 verbose #24326 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:18:48 verbose #24327 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:18:48 verbose #24328 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:18:48 verbose #24329 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:18:48 verbose #24330 > > │ 00:00:08 verbose #26 > Creating                                         │
00:18:48 verbose #24331 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/105ea7be2f329a89809 │
00:18:48 verbose #24332 > > │ 543cbc25878ca2117d619b4ff6fdec5ae9a8079ac700b.svg                            │
00:18:48 verbose #24333 > > │ 00:00:08   debug #27 runtime.execute_with_options_async / { exit_code = │
00:18:48 verbose #24334 > > │ 0; output_length = 134 }                                                     │
00:18:48 verbose #24335 > > │                                                                              │
00:18:48 verbose #24336 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:48 verbose #24337 > >
00:18:48 verbose #24338 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:48 verbose #24339 > > //// test
00:18:48 verbose #24340 > >
00:18:48 verbose #24341 > > inl pingpong_velocity t =
00:18:48 verbose #24342 > >     velocity_ftxv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) t
00:18:48 verbose #24343 > >
00:18:48 verbose #24344 > > inl x = am'.init_series 0 3 0.01
00:18:48 verbose #24345 > > inl y = x |> am'.map_base pingpong_velocity
00:18:48 verbose #24346 > > "ping pong ball on a slinky", "time (s)", "", ;[[ "velocity (m/s)", x, y ]]
00:18:48 verbose #24347 > >
00:18:48 verbose #24348 > > ╭─[ 147.88ms - return value ]──────────────────────────────────────────────────╮
00:18:48 verbose #24349 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:18:48 verbose #24350 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:18:48 verbose #24351 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:18:48 verbose #24352 > > │ stroke="none"/>                                                              │
00:18:48 verbose #24353 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:18:48 verbose #24354 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:48 verbose #24355 > > │ fill="#FFFFFF">                                                              │
00:18:48 verbose #24356 > > │ ping pong ball on a slinky                                                   │
00:18:48 verbose #24357 > > │ </text>                                                                      │
00:18:48 verbose #24358 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │
00:18:48 verbose #24359 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24360 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:18:48 verbose #24361 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24362 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │
00:18:48 verbose #24363 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24364 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │
00:18:48 verbose #24365 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24366 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │
00:18:48 verbose #24367 > > │ y2="75"/>                                                                    │
00:18:48 verbose #24368 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" y1="424"        │
00:18:48 verbose #24369 > > │ x2="103" y2="75"/>                                                           │
00:18:48 verbose #24370 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" y1="424"        │
00:18:48 verbose #24371 > > │ x2="111" y2="75"/>                                                           │
00:18:48 verbose #24372 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:18:48 verbose #24373 > > │ x2="119" y2="75"/>                                                           │
00:18:48 verbose #24374 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" y1="424"        │
00:18:48 verbose #24375 > > │ x2="128" y2="75"/>                                                           │
00:18:48 verbose #24376 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" y1="424"        │
00:18:48 verbose #24377 > > │ x2="136" y2="75"/>                                                           │
00:18:48 verbose #24378 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424"        │
00:18:48 verbose #24379 > > │ x2="144" y2="75"/>                                                           │
00:18:48 verbose #24380 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424"        │
00:18:48 verbose #24381 > > │ x2="153" y2="75"/>                                                           │
00:18:48 verbose #24382 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" y1="424"        │
00:18:48 verbose #24383 > > │ x2="161" y2="75"/>                                                           │
00:18:48 verbose #24384 > > │ <line o... 332,343 334,332 336,319 337,304 339,287 341,269 342,250 344,231   │
00:18:48 verbose #24385 > > │ 346,212 347,195 349,178 351,164 352,153 354,144 356,138 357,136 359,136      │
00:18:48 verbose #24386 > > │ 361,140 362,147 364,157 366,169 367,183 369,199 371,216 372,234 374,253      │
00:18:48 verbose #24387 > > │ 376,271 377,288 379,304 381,318 382,330 384,339 386,346 387,349 389,349      │
00:18:48 verbose #24388 > > │ 391,346 392,340 394,332 396,321 397,307 399,292 401,276 402,258 404,241      │
00:18:48 verbose #24389 > > │ 406,223 407,206 409,190 410,176 412,164 414,154 415,148 417,144 419,143      │
00:18:48 verbose #24390 > > │ 420,145 422,150 424,158 425,168 427,180 429,194 430,210 432,227 434,244      │
00:18:48 verbose #24391 > > │ 435,261 437,278 439,293 440,307 442,320 444,330 445,337 447,341 449,343      │
00:18:48 verbose #24392 > > │ 450,342 452,338 454,331 455,322 457,310 459,297 460,282 462,266 464,249      │
00:18:48 verbose #24393 > > │ 465,233 467,216 469,201 470,187 472,174 474,164 475,156 477,151 479,149      │
00:18:48 verbose #24394 > > │ 480,149 482,153 484,159 485,167 487,178 489,190 490,204 492,220 494,236      │
00:18:48 verbose #24395 > > │ 495,252 497,268 499,283 500,297 502,310 504,320 505,329 507,334 509,337      │
00:18:48 verbose #24396 > > │ 510,337 512,335 514,330 515,322 517,312 519,300 520,287 522,272 524,257      │
00:18:48 verbose #24397 > > │ 525,241 527,226 529,210 530,196 532,184 534,173 535,164 537,158 539,154      │
00:18:48 verbose #24398 > > │ 540,154 542,155 544,160 545,167 547,176 549,187 550,199 552,213 554,228      │
00:18:48 verbose #24399 > > │ 555,244 557,259 559,274 560,288 562,301 564,312 565,321 567,327 569,332 "/>  │
00:18:48 verbose #24400 > > │ <rect x="454" y="235" width="126" height="30" opacity="1" fill="none"        │
00:18:48 verbose #24401 > > │ stroke="#FFFFFF"/>                                                           │
00:18:48 verbose #24402 > > │ <text x="494" y="245" dy="0.76em" text-anchor="start"                        │
00:18:48 verbose #24403 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:48 verbose #24404 > > │ fill="#FFFFFF">                                                              │
00:18:48 verbose #24405 > > │ velocity (m/s)                                                               │
00:18:48 verbose #24406 > > │ </text>                                                                      │
00:18:48 verbose #24407 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:48 verbose #24408 > > │ points="464,250 484,250 "/>                                                  │
00:18:48 verbose #24409 > > │ </svg>                                                                       │
00:18:48 verbose #24410 > > │                                                                              │
00:18:48 verbose #24411 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:48 verbose #24412 > >
00:18:48 verbose #24413 > > ╭─[ 156.40ms - stdout ]────────────────────────────────────────────────────────╮
00:18:48 verbose #24414 > > │ 00:00:09   debug #28 runtime.execute_with_options_async / { options = { │
00:18:48 verbose #24415 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:18:48 verbose #24416 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:18:48 verbose #24417 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:18:48 verbose #24418 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:18:48 verbose #24419 > > │ 00:00:09 verbose #29 > Creating                                         │
00:18:48 verbose #24420 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/6e1af89de9d77d91499 │
00:18:48 verbose #24421 > > │ 1731dc22cdee69efe252557400e2aeaa7feb3756058da.svg                            │
00:18:48 verbose #24422 > > │ 00:00:09   debug #30 runtime.execute_with_options_async / { exit_code = │
00:18:48 verbose #24423 > > │ 0; output_length = 134 }                                                     │
00:18:48 verbose #24424 > > │                                                                              │
00:18:48 verbose #24425 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:48 verbose #24426 > >
00:18:48 verbose #24427 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:48 verbose #24428 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:48 verbose #24429 > > │ ### shift                                                                    │
00:18:48 verbose #24430 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:48 verbose #24431 > >
00:18:48 verbose #24432 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:48 verbose #24433 > > type update_function s = s -> s
00:18:48 verbose #24434 > >
00:18:48 verbose #24435 > > type differential_equation s ds = s -> ds
00:18:48 verbose #24436 > >
00:18:48 verbose #24437 > > type numerical_method s ds = differential_equation s ds -> update_function s
00:18:48 verbose #24438 > >
00:18:48 verbose #24439 > >
00:18:48 verbose #24440 > > inl solver method =
00:18:48 verbose #24441 > >     method >> seq.iterate
00:18:48 verbose #24442 > > inl solver' method =
00:18:48 verbose #24443 > >     method >> seq.iterate'
00:18:48 verbose #24444 > > inl solver_ method =
00:18:48 verbose #24445 > >     method >> seq.iterate_
00:18:48 verbose #24446 > >
00:18:48 verbose #24447 > >
00:18:48 verbose #24448 > > inl euler_cromer_1d dt deriv (state_1d (t0, x0, v0) as t) =
00:18:48 verbose #24449 > >     inl (rrr (_, _, dvdt)) = deriv t
00:18:48 verbose #24450 > >     inl t1 = t0 + dt
00:18:48 verbose #24451 > >     inl v1 = v0 + dvdt * dt
00:18:48 verbose #24452 > >     inl x1 = x0 + v1 * dt
00:18:48 verbose #24453 > >     state_1d (t1, x1, v1)
00:18:48 verbose #24454 > >
00:18:48 verbose #24455 > > inl update_txv_ec dt m fs =
00:18:48 verbose #24456 > >     euler_cromer_1d dt (newton_second_1d m fs)
00:18:48 verbose #24457 > >
00:18:48 verbose #24458 > > prototype (+++) ds : ds -> ds -> ds
00:18:48 verbose #24459 > > prototype scale ds : f64 -> ds -> ds
00:18:48 verbose #24460 > >
00:18:48 verbose #24461 > > instance (+++) rrr = fun (rrr (dtdt0, dxdt0, dvdt0)) (rrr (dtdt1, dxdt1, dvdt1))
00:18:48 verbose #24462 > > =>
00:18:48 verbose #24463 > >     rrr (dtdt0 + dtdt1, dxdt0 + dxdt1, dvdt0 + dvdt1)
00:18:48 verbose #24464 > >
00:18:48 verbose #24465 > > instance scale rrr = fun w (rrr (dtdt0, dxdt0, dvdt0)) =>
00:18:48 verbose #24466 > >     rrr (w * dtdt0, w * dxdt0, w * dvdt0)
00:18:48 verbose #24467 > >
00:18:48 verbose #24468 > > prototype shift s : forall ds. f64 -> ds -> s -> s
00:18:48 verbose #24469 > >
00:18:48 verbose #24470 > > instance shift state_1d = fun dt ds (state_1d (t, x, v)) =>
00:18:48 verbose #24471 > >     inl dtdt, dxdt, dvdt =
00:18:48 verbose #24472 > >         real
00:18:48 verbose #24473 > >             match ds with
00:18:48 verbose #24474 > >             | rrr x => x
00:18:48 verbose #24475 > >             | state_1d x => x
00:18:48 verbose #24476 > >     state_1d (t + dtdt * dt, x + dxdt * dt, v + dvdt * dt)
00:18:48 verbose #24477 > >
00:18:48 verbose #24478 > > inl euler dt deriv st0 =
00:18:48 verbose #24479 > >     shift dt (deriv st0) st0
00:18:48 verbose #24480 > >
00:18:48 verbose #24481 > > inl runge_kutta_4 dt deriv st0 =
00:18:48 verbose #24482 > >     inl m0 = deriv st0
00:18:48 verbose #24483 > >     inl m1 = deriv (shift (dt / 2) m0 st0)
00:18:48 verbose #24484 > >     inl m2 = deriv (shift (dt / 2) m1 st0)
00:18:48 verbose #24485 > >     inl m3 = deriv (shift dt m2 st0)
00:18:48 verbose #24486 > >     shift (dt / 6) (m0 +++ m1 +++ m1 +++ m2 +++ m2 +++ m3) st0
00:18:48 verbose #24487 > >
00:18:48 verbose #24488 > > inl exponential (_, x0, v0) =
00:18:48 verbose #24489 > >     1f64, v0, x0
00:18:48 verbose #24490 > >
00:18:48 verbose #24491 > > inl of_state_1d (state_1d (t, x, v)) =
00:18:48 verbose #24492 > >     t, x, v
00:18:49 verbose #24493 > >
00:18:49 verbose #24494 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:49 verbose #24495 > > //// test
00:18:49 verbose #24496 > >
00:18:49 verbose #24497 > > solver (euler 0.01) (of_state_1d >> exponential >> state_1d) (state_1d (0, 1,
00:18:49 verbose #24498 > > 1)) 800i32
00:18:49 verbose #24499 > > |> _assert_eq (state_1d (7.999999999999874, 2864.8311229272326,
00:18:49 verbose #24500 > > 2864.8311229272326))
00:18:49 verbose #24501 > >
00:18:49 verbose #24502 > > solver (euler_cromer_1d 0.1) (of_state_1d >> exponential >> rrr) (state_1d (0,
00:18:49 verbose #24503 > > 1, 1)) 80i32
00:18:49 verbose #24504 > > |> _assert_eq (state_1d (7.999999999999988, 3043.379244966009,
00:18:49 verbose #24505 > > 2895.0121485099035))
00:18:49 verbose #24506 > >
00:18:49 verbose #24507 > > solver (runge_kutta_4 1) (of_state_1d >> exponential >> rrr) (state_1d (0, 1,
00:18:49 verbose #24508 > > 1)) 8i32
00:18:49 verbose #24509 > > |> _assert_eq (state_1d (8.0, 2894.789038540849, 2894.789038540849))
00:18:49 verbose #24510 > >
00:18:49 verbose #24511 > > ╭─[ 222.95ms - stdout ]────────────────────────────────────────────────────────╮
00:18:49 verbose #24512 > > │ __assert_eq / actual: struct (8.0, 2864.831123, 2864.831123) / expected:     │
00:18:49 verbose #24513 > > │ struct (8.0, 2864.831123, 2864.831123)                                       │
00:18:49 verbose #24514 > > │ __assert_eq / actual: struct (8.0, 3043.379245, 2895.012149) / expected:     │
00:18:49 verbose #24515 > > │ struct (8.0, 3043.379245, 2895.012149)                                       │
00:18:49 verbose #24516 > > │ __assert_eq / actual: struct (8.0, 2894.789039, 2894.789039) / expected:     │
00:18:49 verbose #24517 > > │ struct (8.0, 2894.789039, 2894.789039)                                       │
00:18:49 verbose #24518 > > │                                                                              │
00:18:49 verbose #24519 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:49 verbose #24520 > >
00:18:49 verbose #24521 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:49 verbose #24522 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:49 verbose #24523 > > │ ### vec                                                                      │
00:18:49 verbose #24524 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:49 verbose #24525 > >
00:18:49 verbose #24526 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:49 verbose #24527 > > type vec =
00:18:49 verbose #24528 > >     {
00:18:49 verbose #24529 > >         x : f64
00:18:49 verbose #24530 > >         y : f64
00:18:49 verbose #24531 > >         z : f64
00:18:49 verbose #24532 > >     }
00:18:49 verbose #24533 > >
00:18:49 verbose #24534 > > inl vec x y z : vec =
00:18:49 verbose #24535 > >     { x y z }
00:18:49 verbose #24536 > >
00:18:49 verbose #24537 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:49 verbose #24538 > > //// test
00:18:49 verbose #24539 > >
00:18:49 verbose #24540 > > vec 1 2 3 .z
00:18:49 verbose #24541 > > |> _assert_eq 3
00:18:49 verbose #24542 > >
00:18:49 verbose #24543 > > ╭─[ 102.04ms - stdout ]────────────────────────────────────────────────────────╮
00:18:49 verbose #24544 > > │ __assert_eq / actual: 3.0 / expected: 3.0                                    │
00:18:49 verbose #24545 > > │                                                                              │
00:18:49 verbose #24546 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:49 verbose #24547 > >
00:18:49 verbose #24548 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:49 verbose #24549 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:49 verbose #24550 > > │ #### consts                                                                  │
00:18:49 verbose #24551 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:49 verbose #24552 > >
00:18:49 verbose #24553 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:49 verbose #24554 > > inl i_hat () = vec 1 0 0
00:18:49 verbose #24555 > > inl j_hat () = vec 0 1 0
00:18:49 verbose #24556 > > inl k_hat () = vec 0 0 1
00:18:49 verbose #24557 > > inl zero_vec () = vec 0 0 0
00:18:49 verbose #24558 > >
00:18:49 verbose #24559 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:49 verbose #24560 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:49 verbose #24561 > > │ #### ^+^                                                                     │
00:18:49 verbose #24562 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:49 verbose #24563 > >
00:18:49 verbose #24564 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:49 verbose #24565 > > inl (^+^) (a : vec) (b : vec) =
00:18:49 verbose #24566 > >     vec (a.x + b.x) (a.y + b.y) (a.z + b.z)
00:18:49 verbose #24567 > >
00:18:49 verbose #24568 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:49 verbose #24569 > > //// test
00:18:49 verbose #24570 > >
00:18:49 verbose #24571 > > vec 1 2 3 ^+^ vec 4 5 6
00:18:49 verbose #24572 > > |> _assert_eq (vec 5 7 9)
00:18:49 verbose #24573 > >
00:18:49 verbose #24574 > > ╭─[ 107.43ms - stdout ]────────────────────────────────────────────────────────╮
00:18:49 verbose #24575 > > │ __assert_eq / actual: struct (5.0, 7.0, 9.0) / expected: struct (5.0, 7.0,   │
00:18:49 verbose #24576 > > │ 9.0)                                                                         │
00:18:49 verbose #24577 > > │                                                                              │
00:18:49 verbose #24578 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:49 verbose #24579 > >
00:18:49 verbose #24580 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:49 verbose #24581 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:49 verbose #24582 > > │ #### sum_vec                                                                 │
00:18:49 verbose #24583 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:49 verbose #24584 > >
00:18:49 verbose #24585 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:49 verbose #24586 > > inl sum_vec vs =
00:18:49 verbose #24587 > >     vs |> listm.fold (^+^) (zero_vec ())
00:18:49 verbose #24588 > >
00:18:49 verbose #24589 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:49 verbose #24590 > > //// test
00:18:49 verbose #24591 > >
00:18:49 verbose #24592 > > [[ vec 1 2 3; vec 4 5 6 ]]
00:18:49 verbose #24593 > > |> sum_vec
00:18:49 verbose #24594 > > |> _assert_eq (vec 5 7 9)
00:18:49 verbose #24595 > >
00:18:49 verbose #24596 > > ╭─[ 109.92ms - stdout ]────────────────────────────────────────────────────────╮
00:18:49 verbose #24597 > > │ __assert_eq / actual: struct (5.0, 7.0, 9.0) / expected: struct (5.0, 7.0,   │
00:18:49 verbose #24598 > > │ 9.0)                                                                         │
00:18:49 verbose #24599 > > │                                                                              │
00:18:49 verbose #24600 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:49 verbose #24601 > >
00:18:49 verbose #24602 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:49 verbose #24603 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:49 verbose #24604 > > │ #### *^                                                                      │
00:18:49 verbose #24605 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:49 verbose #24606 > >
00:18:49 verbose #24607 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:49 verbose #24608 > > inl (*^) c { x y z } =
00:18:49 verbose #24609 > >     vec (c * x) (c * y) (c * z)
00:18:50 verbose #24610 > >
00:18:50 verbose #24611 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:50 verbose #24612 > > //// test
00:18:50 verbose #24613 > >
00:18:50 verbose #24614 > > 5 *^ vec 1 2 3
00:18:50 verbose #24615 > > |> _assert_eq (vec 5 10 15)
00:18:50 verbose #24616 > >
00:18:50 verbose #24617 > > ╭─[ 101.72ms - stdout ]────────────────────────────────────────────────────────╮
00:18:50 verbose #24618 > > │ __assert_eq / actual: struct (5.0, 10.0, 15.0) / expected: struct (5.0,      │
00:18:50 verbose #24619 > > │ 10.0, 15.0)                                                                  │
00:18:50 verbose #24620 > > │                                                                              │
00:18:50 verbose #24621 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:50 verbose #24622 > >
00:18:50 verbose #24623 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:50 verbose #24624 > > //// test
00:18:50 verbose #24625 > >
00:18:50 verbose #24626 > > 3 *^ i_hat () ^+^ 4 *^ k_hat ()
00:18:50 verbose #24627 > > |> _assert_eq (vec 3 0 4)
00:18:50 verbose #24628 > >
00:18:50 verbose #24629 > > ╭─[ 110.21ms - stdout ]────────────────────────────────────────────────────────╮
00:18:50 verbose #24630 > > │ __assert_eq / actual: struct (3.0, 0.0, 4.0) / expected: struct (3.0, 0.0,   │
00:18:50 verbose #24631 > > │ 4.0)                                                                         │
00:18:50 verbose #24632 > > │                                                                              │
00:18:50 verbose #24633 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:50 verbose #24634 > >
00:18:50 verbose #24635 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:50 verbose #24636 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:50 verbose #24637 > > │ #### ^*                                                                      │
00:18:50 verbose #24638 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:50 verbose #24639 > >
00:18:50 verbose #24640 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:50 verbose #24641 > > inl (^*) v c =
00:18:50 verbose #24642 > >     (*^) c v
00:18:50 verbose #24643 > >
00:18:50 verbose #24644 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:50 verbose #24645 > > //// test
00:18:50 verbose #24646 > >
00:18:50 verbose #24647 > > vec 1 2 3 ^* 5
00:18:50 verbose #24648 > > |> _assert_eq (vec 5 10 15)
00:18:50 verbose #24649 > >
00:18:50 verbose #24650 > > ╭─[ 120.96ms - stdout ]────────────────────────────────────────────────────────╮
00:18:50 verbose #24651 > > │ __assert_eq / actual: struct (5.0, 10.0, 15.0) / expected: struct (5.0,      │
00:18:50 verbose #24652 > > │ 10.0, 15.0)                                                                  │
00:18:50 verbose #24653 > > │                                                                              │
00:18:50 verbose #24654 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:50 verbose #24655 > >
00:18:50 verbose #24656 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:50 verbose #24657 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:50 verbose #24658 > > │ #### ^/                                                                      │
00:18:50 verbose #24659 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:50 verbose #24660 > >
00:18:50 verbose #24661 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:50 verbose #24662 > > inl (^/) { x y z } c =
00:18:50 verbose #24663 > >     vec (x / c) (y / c) (z / c)
00:18:50 verbose #24664 > >
00:18:50 verbose #24665 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:50 verbose #24666 > > //// test
00:18:50 verbose #24667 > >
00:18:50 verbose #24668 > > vec 1 2 3 ^/ 5
00:18:50 verbose #24669 > > |> _assert_eq (vec 0.2 0.4 0.6)
00:18:50 verbose #24670 > >
00:18:50 verbose #24671 > > ╭─[ 103.15ms - stdout ]────────────────────────────────────────────────────────╮
00:18:50 verbose #24672 > > │ __assert_eq / actual: struct (0.2, 0.4, 0.6) / expected: struct (0.2, 0.4,   │
00:18:50 verbose #24673 > > │ 0.6)                                                                         │
00:18:50 verbose #24674 > > │                                                                              │
00:18:50 verbose #24675 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:50 verbose #24676 > >
00:18:50 verbose #24677 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:50 verbose #24678 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:50 verbose #24679 > > │ #### negate_vec                                                              │
00:18:50 verbose #24680 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:50 verbose #24681 > >
00:18:50 verbose #24682 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:50 verbose #24683 > > inl negate_vec v =
00:18:50 verbose #24684 > >     v ^* -1
00:18:50 verbose #24685 > >
00:18:50 verbose #24686 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:50 verbose #24687 > > //// test
00:18:50 verbose #24688 > >
00:18:50 verbose #24689 > > vec 1 2 3
00:18:50 verbose #24690 > > |> negate_vec
00:18:50 verbose #24691 > > |> _assert_eq (vec -1 -2 -3)
00:18:50 verbose #24692 > >
00:18:50 verbose #24693 > > ╭─[ 109.51ms - stdout ]────────────────────────────────────────────────────────╮
00:18:50 verbose #24694 > > │ __assert_eq / actual: struct (-1.0, -2.0, -3.0) / expected: struct (-1.0,    │
00:18:50 verbose #24695 > > │ -2.0, -3.0)                                                                  │
00:18:50 verbose #24696 > > │                                                                              │
00:18:50 verbose #24697 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:50 verbose #24698 > >
00:18:50 verbose #24699 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:50 verbose #24700 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:50 verbose #24701 > > │ #### ^-^                                                                     │
00:18:50 verbose #24702 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:50 verbose #24703 > >
00:18:50 verbose #24704 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:50 verbose #24705 > > inl (^-^) a b =
00:18:50 verbose #24706 > >     a ^+^ (negate_vec b)
00:18:50 verbose #24707 > >
00:18:50 verbose #24708 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:50 verbose #24709 > > //// test
00:18:50 verbose #24710 > >
00:18:50 verbose #24711 > > vec 1 2 3 ^-^ vec 4 5 6
00:18:50 verbose #24712 > > |> _assert_eq (vec -3 -3 -3)
00:18:51 verbose #24713 > >
00:18:51 verbose #24714 > > ╭─[ 109.38ms - stdout ]────────────────────────────────────────────────────────╮
00:18:51 verbose #24715 > > │ __assert_eq / actual: struct (-3.0, -3.0, -3.0) / expected: struct (-3.0,    │
00:18:51 verbose #24716 > > │ -3.0, -3.0)                                                                  │
00:18:51 verbose #24717 > > │                                                                              │
00:18:51 verbose #24718 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:51 verbose #24719 > >
00:18:51 verbose #24720 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:51 verbose #24721 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:51 verbose #24722 > > │ #### <.>                                                                     │
00:18:51 verbose #24723 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:51 verbose #24724 > >
00:18:51 verbose #24725 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:51 verbose #24726 > > inl (<.>) { x = ax y = ay z = az } { x = bx y = by z = bz } =
00:18:51 verbose #24727 > >     ax * bx + ay * by + az * bz
00:18:51 verbose #24728 > >
00:18:51 verbose #24729 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:51 verbose #24730 > > //// test
00:18:51 verbose #24731 > >
00:18:51 verbose #24732 > > vec 1 2 3 <.> vec 4 5 6
00:18:51 verbose #24733 > > |> _assert_eq 32
00:18:51 verbose #24734 > >
00:18:51 verbose #24735 > > ╭─[ 408.87ms - stdout ]────────────────────────────────────────────────────────╮
00:18:51 verbose #24736 > > │ __assert_eq / actual: 32.0 / expected: 32.0                                  │
00:18:51 verbose #24737 > > │                                                                              │
00:18:51 verbose #24738 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:51 verbose #24739 > >
00:18:51 verbose #24740 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:51 verbose #24741 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:51 verbose #24742 > > │ #### \>\<                                                                    │
00:18:51 verbose #24743 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:51 verbose #24744 > >
00:18:51 verbose #24745 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:51 verbose #24746 > > inl (><) (a : vec) (b : vec) =
00:18:51 verbose #24747 > >     vec
00:18:51 verbose #24748 > >         (a.y * b.z - a.z * b.y)
00:18:51 verbose #24749 > >         (a.z * b.x - a.x * b.z)
00:18:51 verbose #24750 > >         (a.x * b.y - a.y * b.x)
00:18:51 verbose #24751 > >
00:18:51 verbose #24752 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:51 verbose #24753 > > //// test
00:18:51 verbose #24754 > >
00:18:51 verbose #24755 > > vec 1 2 3 >< vec 4 5 6
00:18:51 verbose #24756 > > |> _assert_eq (vec -3 6 -3)
00:18:51 verbose #24757 > >
00:18:51 verbose #24758 > > ╭─[ 105.25ms - stdout ]────────────────────────────────────────────────────────╮
00:18:51 verbose #24759 > > │ __assert_eq / actual: struct (-3.0, 6.0, -3.0) / expected: struct (-3.0,     │
00:18:51 verbose #24760 > > │ 6.0, -3.0)                                                                   │
00:18:51 verbose #24761 > > │                                                                              │
00:18:51 verbose #24762 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:51 verbose #24763 > >
00:18:51 verbose #24764 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:51 verbose #24765 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:51 verbose #24766 > > │ #### magnitude                                                               │
00:18:51 verbose #24767 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:51 verbose #24768 > >
00:18:51 verbose #24769 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:51 verbose #24770 > > inl magnitude v =
00:18:51 verbose #24771 > >     v <.> v |> sqrt
00:18:51 verbose #24772 > >
00:18:51 verbose #24773 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:51 verbose #24774 > > //// test
00:18:51 verbose #24775 > >
00:18:51 verbose #24776 > > vec 1 2 3
00:18:51 verbose #24777 > > |> magnitude
00:18:51 verbose #24778 > > |> _assert_approx_eq None 3.7416573867739413
00:18:52 verbose #24779 > >
00:18:52 verbose #24780 > > ╭─[ 102.55ms - stdout ]────────────────────────────────────────────────────────╮
00:18:52 verbose #24781 > > │ __assert_approx_eq / actual: 3.741657387 / expected: 3.741657387             │
00:18:52 verbose #24782 > > │                                                                              │
00:18:52 verbose #24783 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:52 verbose #24784 > >
00:18:52 verbose #24785 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:52 verbose #24786 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:52 verbose #24787 > > │ #### v1                                                                      │
00:18:52 verbose #24788 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:52 verbose #24789 > >
00:18:52 verbose #24790 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:52 verbose #24791 > > inl v1 t =
00:18:52 verbose #24792 > >     2 *^ (t ** 2 *^ i_hat () ^+^ 3 *^ (t ** 3 *^ j_hat () ^+^ t ** 4 *^ k_hat
00:18:52 verbose #24793 > > ()))
00:18:52 verbose #24794 > >
00:18:52 verbose #24795 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:52 verbose #24796 > > //// test
00:18:52 verbose #24797 > >
00:18:52 verbose #24798 > > v1 1
00:18:52 verbose #24799 > > |> _assert_eq (vec 2 6 6)
00:18:52 verbose #24800 > >
00:18:52 verbose #24801 > > ╭─[ 108.89ms - stdout ]────────────────────────────────────────────────────────╮
00:18:52 verbose #24802 > > │ __assert_eq / actual: struct (2.0, 6.0, 6.0) / expected: struct (2.0, 6.0,   │
00:18:52 verbose #24803 > > │ 6.0)                                                                         │
00:18:52 verbose #24804 > > │                                                                              │
00:18:52 verbose #24805 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:52 verbose #24806 > >
00:18:52 verbose #24807 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:52 verbose #24808 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:52 verbose #24809 > > │ #### vec_derivative                                                          │
00:18:52 verbose #24810 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:52 verbose #24811 > >
00:18:52 verbose #24812 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:52 verbose #24813 > > type vec_derivative = (f64 -> vec) -> f64 -> vec
00:18:52 verbose #24814 > >
00:18:52 verbose #24815 > > inl vec_derivative dt : vec_derivative =
00:18:52 verbose #24816 > >     fun v t =>
00:18:52 verbose #24817 > >         (v (t + dt / 2) ^-^ v (t - dt / 2)) ^/ dt
00:18:52 verbose #24818 > >
00:18:52 verbose #24819 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:52 verbose #24820 > > //// test
00:18:52 verbose #24821 > >
00:18:52 verbose #24822 > > vec_derivative 0.01 v1 3 .x
00:18:52 verbose #24823 > > |> _assert_approx_eq None (derivative 0.01 (v1 >> fun v => v.x) 3)
00:18:52 verbose #24824 > >
00:18:52 verbose #24825 > > ╭─[ 114.45ms - stdout ]────────────────────────────────────────────────────────╮
00:18:52 verbose #24826 > > │ __assert_approx_eq / actual: 12.0 / expected: 12.0                           │
00:18:52 verbose #24827 > > │                                                                              │
00:18:52 verbose #24828 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:52 verbose #24829 > >
00:18:52 verbose #24830 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:52 verbose #24831 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:52 verbose #24832 > > │ ### states_ps                                                                │
00:18:52 verbose #24833 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:52 verbose #24834 > >
00:18:52 verbose #24835 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:52 verbose #24836 > > nominal particle_state =
00:18:52 verbose #24837 > >     {
00:18:52 verbose #24838 > >         mass : f64
00:18:52 verbose #24839 > >         charge : f64
00:18:52 verbose #24840 > >         time : f64
00:18:52 verbose #24841 > >         pos_vec : vec
00:18:52 verbose #24842 > >         velocity : vec
00:18:52 verbose #24843 > >     }
00:18:52 verbose #24844 > >
00:18:52 verbose #24845 > > inl default_particle_state () : particle_state =
00:18:52 verbose #24846 > >     particle_state {
00:18:52 verbose #24847 > >         mass = 1
00:18:52 verbose #24848 > >         charge = 0
00:18:52 verbose #24849 > >         time = 0
00:18:52 verbose #24850 > >         pos_vec = zero_vec ()
00:18:52 verbose #24851 > >         velocity = zero_vec ()
00:18:52 verbose #24852 > >     }
00:18:52 verbose #24853 > >
00:18:52 verbose #24854 > > type one_body_force = particle_state -> vec
00:18:52 verbose #24855 > >
00:18:52 verbose #24856 > > nominal d_particle_state =
00:18:52 verbose #24857 > >     {
00:18:52 verbose #24858 > >         dmdt : f64
00:18:52 verbose #24859 > >         dqdt : f64
00:18:52 verbose #24860 > >         dtdt : f64
00:18:52 verbose #24861 > >         drdt : vec
00:18:52 verbose #24862 > >         dvdt : vec
00:18:52 verbose #24863 > >     }
00:18:52 verbose #24864 > >
00:18:52 verbose #24865 > > inl newton_second_ps (fs : list one_body_force) (st : particle_state) :
00:18:52 verbose #24866 > > d_particle_state =
00:18:52 verbose #24867 > >     inl f_net = fs |> listm.map (fun f => f st) |> sum_vec
00:18:52 verbose #24868 > >     d_particle_state {
00:18:52 verbose #24869 > >         dmdt = 0
00:18:52 verbose #24870 > >         dqdt = 0
00:18:52 verbose #24871 > >         dtdt = 1
00:18:52 verbose #24872 > >         drdt = st.velocity
00:18:52 verbose #24873 > >         dvdt = f_net ^/ st.mass
00:18:52 verbose #24874 > >     }
00:18:52 verbose #24875 > >
00:18:52 verbose #24876 > > inl earth_surface_gravity (st : particle_state) =
00:18:52 verbose #24877 > >     inl g = 9.80665
00:18:52 verbose #24878 > >     -st.mass * g *^ k_hat ()
00:18:52 verbose #24879 > >
00:18:52 verbose #24880 > > inl air_resistance drag rho area (st : particle_state) =
00:18:52 verbose #24881 > >     -0.5 * drag * rho * area * magnitude st.velocity *^ st.velocity
00:18:52 verbose #24882 > >
00:18:52 verbose #24883 > > inl euler_cromer_ps dt (deriv : particle_state -> d_particle_state)
00:18:52 verbose #24884 > > (particle_state st) =
00:18:52 verbose #24885 > >     inl dst : d_particle_state = deriv (particle_state st)
00:18:52 verbose #24886 > >     inl v' = st.velocity ^+^ dst.dvdt ^* dt
00:18:52 verbose #24887 > >     particle_state { st with
00:18:52 verbose #24888 > >         time = st.time + dt
00:18:52 verbose #24889 > >         pos_vec = st.pos_vec ^+^ v' ^* dt
00:18:52 verbose #24890 > >         velocity = st.velocity ^+^ dst.dvdt ^* dt
00:18:52 verbose #24891 > >     }
00:18:52 verbose #24892 > >
00:18:52 verbose #24893 > > instance (+++) d_particle_state = fun (dps : d_particle_state) (dps' :
00:18:52 verbose #24894 > > d_particle_state) =>
00:18:52 verbose #24895 > >     d_particle_state {
00:18:52 verbose #24896 > >         dmdt = dps.dmdt + dps'.dmdt
00:18:52 verbose #24897 > >         dqdt = dps.dqdt + dps'.dqdt
00:18:52 verbose #24898 > >         dtdt = dps.dtdt + dps'.dtdt
00:18:52 verbose #24899 > >         drdt = dps.drdt ^+^ dps'.drdt
00:18:52 verbose #24900 > >         dvdt = dps.dvdt ^+^ dps'.dvdt
00:18:52 verbose #24901 > >     }
00:18:52 verbose #24902 > >
00:18:52 verbose #24903 > > instance scale d_particle_state = fun w (dps : d_particle_state) =>
00:18:52 verbose #24904 > >     d_particle_state {
00:18:52 verbose #24905 > >         dmdt = w * dps.dmdt
00:18:52 verbose #24906 > >         dqdt = w * dps.dqdt
00:18:52 verbose #24907 > >         dtdt = w * dps.dtdt
00:18:52 verbose #24908 > >         drdt = w *^ dps.drdt
00:18:52 verbose #24909 > >         dvdt = w *^ dps.dvdt
00:18:52 verbose #24910 > >     }
00:18:52 verbose #24911 > >
00:18:52 verbose #24912 > > instance shift particle_state = fun dt dps (particle_state st) =>
00:18:52 verbose #24913 > >     inl (d_particle_state dps) =
00:18:52 verbose #24914 > >         real
00:18:52 verbose #24915 > >             match dps with
00:18:52 verbose #24916 > >             | d_particle_state _ => dps
00:18:52 verbose #24917 > >     particle_state { st with
00:18:52 verbose #24918 > >         time = st.time + dps.dtdt * dt
00:18:52 verbose #24919 > >         pos_vec = st.pos_vec ^+^ dps.drdt ^* dt
00:18:52 verbose #24920 > >         velocity = st.velocity ^+^ dps.dvdt ^* dt
00:18:52 verbose #24921 > >     }
00:18:52 verbose #24922 > >
00:18:52 verbose #24923 > > inl states_ps (method : numerical_method particle_state d_particle_state) : _ ->
00:18:52 verbose #24924 > > _ -> i32 -> particle_state =
00:18:52 verbose #24925 > >     newton_second_ps >> method >> seq.iterate_
00:18:52 verbose #24926 > >
00:18:52 verbose #24927 > > inl z_ge0 sts =
00:18:52 verbose #24928 > >     sts
00:18:52 verbose #24929 > >     |> seq.take_while_ (fun (particle_state st) _ => st.pos_vec.z >= 0)
00:18:52 verbose #24930 > >
00:18:52 verbose #24931 > > inl trajectory sts =
00:18:52 verbose #24932 > >     sts |> listm.map (fun (particle_state st) => st.pos_vec.y, st.pos_vec.z)
00:18:52 verbose #24933 > >
00:18:52 verbose #24934 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:52 verbose #24935 > > //// test
00:18:52 verbose #24936 > >
00:18:52 verbose #24937 > > inl update_ps (method : numerical_method particle_state d_particle_state) =
00:18:52 verbose #24938 > >     newton_second_ps >> method
00:18:52 verbose #24939 > >
00:18:52 verbose #24940 > > inl position_ps (method : numerical_method particle_state d_particle_state) fs
00:18:52 verbose #24941 > > st t =
00:18:52 verbose #24942 > >     inl states : i32 -> particle_state = states_ps method fs st
00:18:52 verbose #24943 > >     inl dt = (states 1).time - (states 0).time
00:18:52 verbose #24944 > >     inl num_steps = t / dt |> math.round |> abs
00:18:52 verbose #24945 > >     inl st1 = solver' method (newton_second_ps fs) st num_steps
00:18:52 verbose #24946 > >     st1.pos_vec
00:18:52 verbose #24947 > >
00:18:52 verbose #24948 > > inl sun_gravity (st : particle_state) : vec =
00:18:52 verbose #24949 > >     inl big_g = 0.0000000000667408
00:18:52 verbose #24950 > >     inl sun_mass = 1988480000000000000000000000000
00:18:52 verbose #24951 > >     -big_g * sun_mass * st.mass *^ st.pos_vec ^/ magnitude st.pos_vec ** 3
00:18:52 verbose #24952 > >
00:18:52 verbose #24953 > > inl wind_force v_wind drag rho area (st : particle_state) =
00:18:52 verbose #24954 > >     inl v_rel = st.velocity ^-^ v_wind
00:18:52 verbose #24955 > >     -0.5 * drag * rho * area * magnitude v_rel *^ v_rel
00:18:52 verbose #24956 > >
00:18:52 verbose #24957 > > inl rock_state () =
00:18:52 verbose #24958 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:18:52 verbose #24959 > >     particle_state { default_particle_state' with
00:18:52 verbose #24960 > >         mass = 2
00:18:52 verbose #24961 > >         velocity = vec 3 0 4
00:18:52 verbose #24962 > >     }
00:18:52 verbose #24963 > >
00:18:52 verbose #24964 > > inl halley_update dt =
00:18:52 verbose #24965 > >     update_ps (euler_cromer_ps dt) [[ sun_gravity ]]
00:18:52 verbose #24966 > >
00:18:52 verbose #24967 > > inl halley_initial () =
00:18:52 verbose #24968 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:18:52 verbose #24969 > >     particle_state { default_particle_state' with
00:18:52 verbose #24970 > >         mass = 220000000000000
00:18:52 verbose #24971 > >         pos_vec = 87660000000 *^ i_hat ()
00:18:52 verbose #24972 > >         velocity = 54569 *^ j_hat ()
00:18:52 verbose #24973 > >     }
00:18:52 verbose #24974 > >
00:18:52 verbose #24975 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:52 verbose #24976 > > //// test
00:18:52 verbose #24977 > >
00:18:52 verbose #24978 > > inl baseball_forces () =
00:18:52 verbose #24979 > >     inl area = pi * (0.074 / 2) ** 2
00:18:52 verbose #24980 > >     [[
00:18:52 verbose #24981 > >         earth_surface_gravity
00:18:52 verbose #24982 > >         air_resistance 0.3 1.225 area
00:18:52 verbose #24983 > >     ]]
00:18:52 verbose #24984 > >
00:18:52 verbose #24985 > > inl baseball_trajectory dt v0 theta_deg =
00:18:52 verbose #24986 > >     inl theta_rad = theta_deg * pi / 180
00:18:52 verbose #24987 > >     inl vy0 = v0 * cos theta_rad
00:18:52 verbose #24988 > >     inl vz0 = v0 * sin theta_rad
00:18:52 verbose #24989 > >     inl initial_state =
00:18:52 verbose #24990 > >         particle_state {
00:18:52 verbose #24991 > >             mass = 0.145
00:18:52 verbose #24992 > >             charge = 0
00:18:52 verbose #24993 > >             time = 0
00:18:52 verbose #24994 > >             pos_vec = zero_vec ()
00:18:52 verbose #24995 > >             velocity = vec 0 vy0 vz0
00:18:52 verbose #24996 > >         }
00:18:52 verbose #24997 > >     states_ps (euler_cromer_ps dt) (baseball_forces ()) initial_state
00:18:52 verbose #24998 > >     >> Some
00:18:52 verbose #24999 > >     |> z_ge0
00:18:52 verbose #25000 > >     |> trajectory
00:18:52 verbose #25001 > >
00:18:52 verbose #25002 > > inl baseball_range dt v0 theta_deg =
00:18:52 verbose #25003 > >     baseball_trajectory dt v0 theta_deg
00:18:52 verbose #25004 > >     |> listm.fold (fun _ (y, _) => y) 0
00:18:52 verbose #25005 > >
00:18:52 verbose #25006 > > inl x = am'.init_series 10 80 1
00:18:52 verbose #25007 > > inl y = x |> am'.map_base (baseball_range 0.01 45)
00:18:52 verbose #25008 > > "range for a baseball hit at 45 m/s",
00:18:52 verbose #25009 > > "angle above horizontal (degrees)",
00:18:52 verbose #25010 > > "",
00:18:52 verbose #25011 > > ;[[ "horizontal range (m)", x, y ]]
00:18:53 verbose #25012 > >
00:18:53 verbose #25013 > > ╭─[ 901.95ms - return value ]──────────────────────────────────────────────────╮
00:18:53 verbose #25014 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:18:53 verbose #25015 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:18:53 verbose #25016 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:18:53 verbose #25017 > > │ stroke="none"/>                                                              │
00:18:53 verbose #25018 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:18:53 verbose #25019 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:53 verbose #25020 > > │ fill="#FFFFFF">                                                              │
00:18:53 verbose #25021 > > │ range for a baseball hit at 45 m/s                                           │
00:18:53 verbose #25022 > > │ </text>                                                                      │
00:18:53 verbose #25023 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="55" y1="424" x2="55" │
00:18:53 verbose #25024 > > │ y2="75"/>                                                                    │
00:18:53 verbose #25025 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" y1="424" x2="62" │
00:18:53 verbose #25026 > > │ y2="75"/>                                                                    │
00:18:53 verbose #25027 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:18:53 verbose #25028 > > │ y2="75"/>                                                                    │
00:18:53 verbose #25029 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" y1="424" x2="77" │
00:18:53 verbose #25030 > > │ y2="75"/>                                                                    │
00:18:53 verbose #25031 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="84" y1="424" x2="84" │
00:18:53 verbose #25032 > > │ y2="75"/>                                                                    │
00:18:53 verbose #25033 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="91" y1="424" x2="91" │
00:18:53 verbose #25034 > > │ y2="75"/>                                                                    │
00:18:53 verbose #25035 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="98" y1="424" x2="98" │
00:18:53 verbose #25036 > > │ y2="75"/>                                                                    │
00:18:53 verbose #25037 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="105" y1="424"        │
00:18:53 verbose #25038 > > │ x2="105" y2="75"/>                                                           │
00:18:53 verbose #25039 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="112" y1="424"        │
00:18:53 verbose #25040 > > │ x2="112" y2="75"/>                                                           │
00:18:53 verbose #25041 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:18:53 verbose #25042 > > │ x2="119" y2="75"/>                                                           │
00:18:53 verbose #25043 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="127" y1="424"        │
00:18:53 verbose #25044 > > │ x2="127" y2="75"/>                                                           │
00:18:53 verbose #25045 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="134" y1="424"        │
00:18:53 verbose #25046 > > │ x2="134" y2="75"/>                                                           │
00:18:53 verbose #25047 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="141" y1="424"        │
00:18:53 verbose #25048 > > │ x2="141" y2="75"/>                                                           │
00:18:53 verbose #25049 > > │ <li...nts="585,199 590,199 "/>                                               │
00:18:53 verbose #25050 > > │ <text x="595" y="156" dy="0.5ex" text-anchor="start"                         │
00:18:53 verbose #25051 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:53 verbose #25052 > > │ fill="#FFFFFF">                                                              │
00:18:53 verbose #25053 > > │ 100.0                                                                        │
00:18:53 verbose #25054 > > │ </text>                                                                      │
00:18:53 verbose #25055 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:18:53 verbose #25056 > > │ points="585,156 590,156 "/>                                                  │
00:18:53 verbose #25057 > > │ <text x="595" y="114" dy="0.5ex" text-anchor="start"                         │
00:18:53 verbose #25058 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:53 verbose #25059 > > │ fill="#FFFFFF">                                                              │
00:18:53 verbose #25060 > > │ 110.0                                                                        │
00:18:53 verbose #25061 > > │ </text>                                                                      │
00:18:53 verbose #25062 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:18:53 verbose #25063 > > │ points="585,114 590,114 "/>                                                  │
00:18:53 verbose #25064 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:53 verbose #25065 > > │ points="69,343 77,325 84,307 91,290 98,275 105,259 112,245 119,231 127,219   │
00:18:53 verbose #25066 > > │ 134,207 141,196 148,184 155,174 162,164 169,155 176,147 184,139 191,132      │
00:18:53 verbose #25067 > > │ 198,126 205,119 212,114 219,109 226,104 233,100 241,96 248,93 255,91 262,89  │
00:18:53 verbose #25068 > > │ 269,88 276,86 283,86 290,85 298,86 305,87 312,88 319,90 326,92 333,95 340,98 │
00:18:53 verbose #25069 > > │ 348,102 355,106 362,110 369,115 376,120 383,126 390,132 397,139 405,146      │
00:18:53 verbose #25070 > > │ 412,153 419,161 426,169 433,178 440,187 447,197 454,207 462,217 469,228      │
00:18:53 verbose #25071 > > │ 476,239 483,250 490,262 497,274 504,287 511,300 519,313 526,326 533,340      │
00:18:53 verbose #25072 > > │ 540,355 547,369 554,384 561,399 569,415 "/>                                  │
00:18:53 verbose #25073 > > │ <rect x="421" y="235" width="159" height="30" opacity="1" fill="none"        │
00:18:53 verbose #25074 > > │ stroke="#FFFFFF"/>                                                           │
00:18:53 verbose #25075 > > │ <text x="461" y="245" dy="0.76em" text-anchor="start"                        │
00:18:53 verbose #25076 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:53 verbose #25077 > > │ fill="#FFFFFF">                                                              │
00:18:53 verbose #25078 > > │ horizontal range (m)                                                         │
00:18:53 verbose #25079 > > │ </text>                                                                      │
00:18:53 verbose #25080 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:53 verbose #25081 > > │ points="431,250 451,250 "/>                                                  │
00:18:53 verbose #25082 > > │ </svg>                                                                       │
00:18:53 verbose #25083 > > │                                                                              │
00:18:53 verbose #25084 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:53 verbose #25085 > >
00:18:53 verbose #25086 > > ╭─[ 906.24ms - stdout ]────────────────────────────────────────────────────────╮
00:18:53 verbose #25087 > > │ 00:00:13   debug #31 runtime.execute_with_options_async / { options = { │
00:18:53 verbose #25088 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:18:53 verbose #25089 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:18:53 verbose #25090 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:18:53 verbose #25091 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:18:53 verbose #25092 > > │ 00:00:13 verbose #32 > Creating                                         │
00:18:53 verbose #25093 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/8a3ef67f953e2a32e50 │
00:18:53 verbose #25094 > > │ 71e8c55259d45275b376bbff5ccca65f5dad1aeac78c0.svg                            │
00:18:53 verbose #25095 > > │ 00:00:13   debug #33 runtime.execute_with_options_async / { exit_code = │
00:18:53 verbose #25096 > > │ 0; output_length = 134 }                                                     │
00:18:53 verbose #25097 > > │                                                                              │
00:18:53 verbose #25098 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:53 verbose #25099 > >
00:18:53 verbose #25100 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:53 verbose #25101 > > //// test
00:18:53 verbose #25102 > >
00:18:53 verbose #25103 > > inl best_angle (min, max) =
00:18:53 verbose #25104 > >     let rec loop theta_deg (best_range, best_theta_deg) =
00:18:53 verbose #25105 > >         if theta_deg > max
00:18:53 verbose #25106 > >         then best_range, best_theta_deg
00:18:53 verbose #25107 > >         else
00:18:53 verbose #25108 > >             inl range = baseball_range 0.01 45 theta_deg
00:18:53 verbose #25109 > >             loop
00:18:53 verbose #25110 > >                 (theta_deg + 1)
00:18:53 verbose #25111 > >                 (if range > best_range
00:18:53 verbose #25112 > >                     then range, theta_deg
00:18:53 verbose #25113 > >                     else best_range, best_theta_deg)
00:18:53 verbose #25114 > >     loop min (0f64, min)
00:18:53 verbose #25115 > >
00:18:53 verbose #25116 > > best_angle (30f64, 60f64)
00:18:53 verbose #25117 > > |> _assert_eq (116.77499158246208, 41)
00:18:54 verbose #25118 > >
00:18:54 verbose #25119 > > ╭─[ 467.33ms - stdout ]────────────────────────────────────────────────────────╮
00:18:54 verbose #25120 > > │ __assert_eq / actual: struct (116.7749916, 41.0) / expected: struct          │
00:18:54 verbose #25121 > > │ (116.7749916, 41.0)                                                          │
00:18:54 verbose #25122 > > │                                                                              │
00:18:54 verbose #25123 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:54 verbose #25124 > >
00:18:54 verbose #25125 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:54 verbose #25126 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:54 verbose #25127 > > │ ### relativity_ps                                                            │
00:18:54 verbose #25128 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:54 verbose #25129 > >
00:18:54 verbose #25130 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:54 verbose #25131 > > inl relativity_ps fs (st : particle_state) =
00:18:54 verbose #25132 > >     inl f_net = fs |> listm.map (fun f => f st) |> sum_vec
00:18:54 verbose #25133 > >     inl c = 299792458
00:18:54 verbose #25134 > >     inl u = st.velocity ^/ c
00:18:54 verbose #25135 > >     inl acc = sqrt (1 - (u <.> u)) *^ (f_net ^-^ (f_net <.> u) *^ u) ^/ st.mass
00:18:54 verbose #25136 > >     d_particle_state {
00:18:54 verbose #25137 > >         dmdt = 0
00:18:54 verbose #25138 > >         dqdt = 0
00:18:54 verbose #25139 > >         dtdt = 1
00:18:54 verbose #25140 > >         drdt = st.velocity
00:18:54 verbose #25141 > >         dvdt = acc
00:18:54 verbose #25142 > >     }
00:18:54 verbose #25143 > >
00:18:54 verbose #25144 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:54 verbose #25145 > > //// test
00:18:54 verbose #25146 > >
00:18:54 verbose #25147 > > inl year = 365.25 * 24 * 60 * 60
00:18:54 verbose #25148 > > inl c = 299792458
00:18:54 verbose #25149 > > inl ~method = runge_kutta_4 100000
00:18:54 verbose #25150 > > inl forces = [[ fun _ => 10 *^ i_hat () ]]
00:18:54 verbose #25151 > > inl (particle_state default_particle_state') = default_particle_state ()
00:18:54 verbose #25152 > > inl initial_state =
00:18:54 verbose #25153 > >     particle_state { default_particle_state' with
00:18:54 verbose #25154 > >         mass = 1
00:18:54 verbose #25155 > >     }
00:18:54 verbose #25156 > >
00:18:54 verbose #25157 > > inl newton_states = solver_ method (newton_second_ps forces) initial_state
00:18:54 verbose #25158 > > inl relativity_states = solver_ method (relativity_ps forces) initial_state
00:18:54 verbose #25159 > >
00:18:54 verbose #25160 > > inl newton_x, newton_y =
00:18:54 verbose #25161 > >     newton_states
00:18:54 verbose #25162 > >     >> Some
00:18:54 verbose #25163 > >     |> seq.take_while_ (fun (particle_state st) (_ : i32) => st.time <= year)
00:18:54 verbose #25164 > >     |> listm.map (fun (particle_state st) => st.time / year, st.velocity.x / c)
00:18:54 verbose #25165 > >     |> listm'.unzip
00:18:54 verbose #25166 > >
00:18:54 verbose #25167 > > inl _, relativity_y =
00:18:54 verbose #25168 > >     relativity_states
00:18:54 verbose #25169 > >     >> Some
00:18:54 verbose #25170 > >     |> seq.take_while_ (fun (particle_state st) (_ : i32) => st.time <= year)
00:18:54 verbose #25171 > >     |> listm.map (fun (particle_state st) => st.time / year, st.velocity.x / c)
00:18:54 verbose #25172 > >     |> listm'.unzip
00:18:54 verbose #25173 > >
00:18:54 verbose #25174 > > inl newton_x = newton_x |> listm'.box |> listm'.to_array'
00:18:54 verbose #25175 > > inl newton_y = newton_y |> listm'.box |> listm'.to_array'
00:18:54 verbose #25176 > > inl relativity_y = relativity_y |> listm'.box |> listm'.to_array'
00:18:54 verbose #25177 > >
00:18:54 verbose #25178 > > "response to a constant force",
00:18:54 verbose #25179 > > "time (years)",
00:18:54 verbose #25180 > > "velocity (multiples of c)",
00:18:54 verbose #25181 > > ;[[
00:18:54 verbose #25182 > >     "newtonian", newton_x, newton_y
00:18:54 verbose #25183 > >     "relativistic", newton_x, relativity_y
00:18:54 verbose #25184 > > ]]
00:18:54 verbose #25185 > >
00:18:54 verbose #25186 > > ╭─[ 362.85ms - return value ]──────────────────────────────────────────────────╮
00:18:54 verbose #25187 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:18:54 verbose #25188 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:18:54 verbose #25189 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:18:54 verbose #25190 > > │ stroke="none"/>                                                              │
00:18:54 verbose #25191 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:18:54 verbose #25192 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:54 verbose #25193 > > │ fill="#FFFFFF">                                                              │
00:18:54 verbose #25194 > > │ response to a constant force                                                 │
00:18:54 verbose #25195 > > │ </text>                                                                      │
00:18:54 verbose #25196 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:18:54 verbose #25197 > > │ y2="75"/>                                                                    │
00:18:54 verbose #25198 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:18:54 verbose #25199 > > │ y2="75"/>                                                                    │
00:18:54 verbose #25200 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:18:54 verbose #25201 > > │ y2="75"/>                                                                    │
00:18:54 verbose #25202 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:18:54 verbose #25203 > > │ y2="75"/>                                                                    │
00:18:54 verbose #25204 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │
00:18:54 verbose #25205 > > │ y2="75"/>                                                                    │
00:18:54 verbose #25206 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424"        │
00:18:54 verbose #25207 > > │ x2="109" y2="75"/>                                                           │
00:18:54 verbose #25208 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:18:54 verbose #25209 > > │ x2="119" y2="75"/>                                                           │
00:18:54 verbose #25210 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424"        │
00:18:54 verbose #25211 > > │ x2="129" y2="75"/>                                                           │
00:18:54 verbose #25212 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424"        │
00:18:54 verbose #25213 > > │ x2="139" y2="75"/>                                                           │
00:18:54 verbose #25214 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424"        │
00:18:54 verbose #25215 > > │ x2="149" y2="75"/>                                                           │
00:18:54 verbose #25216 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424"        │
00:18:54 verbose #25217 > > │ x2="159" y2="75"/>                                                           │
00:18:54 verbose #25218 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424"        │
00:18:54 verbose #25219 > > │ x2="169" y2="75"/>                                                           │
00:18:54 verbose #25220 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424"        │
00:18:54 verbose #25221 > > │ x2="179" y2="75"/>                                                           │
00:18:54 verbose #25222 > > │ <line... 393,238 394,238 396,237 397,237 399,236 401,235 402,235 404,234     │
00:18:54 verbose #25223 > > │ 405,234 407,233 409,233 410,232 412,231 413,231 415,230 416,230 418,229      │
00:18:54 verbose #25224 > > │ 420,229 421,228 423,228 424,227 426,227 428,226 429,225 431,225 432,224      │
00:18:54 verbose #25225 > > │ 434,224 435,223 437,223 439,222 440,222 442,221 443,221 445,220 447,220      │
00:18:54 verbose #25226 > > │ 448,219 450,219 451,218 453,218 454,217 456,217 458,216 459,216 461,215      │
00:18:54 verbose #25227 > > │ 462,215 464,214 466,214 467,213 469,213 470,213 472,212 473,212 475,211      │
00:18:54 verbose #25228 > > │ 477,211 478,210 480,210 481,209 483,209 485,208 486,208 488,208 489,207      │
00:18:54 verbose #25229 > > │ 491,207 492,206 494,206 496,205 497,205 499,204 500,204 502,204 504,203      │
00:18:54 verbose #25230 > > │ 505,203 507,202 508,202 510,202 511,201 513,201 515,200 516,200 518,200      │
00:18:54 verbose #25231 > > │ 519,199 521,199 523,198 524,198 526,198 527,197 529,197 531,196 532,196      │
00:18:54 verbose #25232 > > │ 534,196 535,195 537,195 538,194 540,194 542,194 543,193 545,193 546,193      │
00:18:54 verbose #25233 > > │ 548,192 550,192 551,192 553,191 554,191 556,190 557,190 559,190 561,189      │
00:18:54 verbose #25234 > > │ 562,189 564,189 565,188 567,188 569,188 "/>                                  │
00:18:54 verbose #25235 > > │ <rect x="464" y="227" width="116" height="45" opacity="1" fill="none"        │
00:18:54 verbose #25236 > > │ stroke="#FFFFFF"/>                                                           │
00:18:54 verbose #25237 > > │ <text x="504" y="237" dy="0.76em" text-anchor="start"                        │
00:18:54 verbose #25238 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:54 verbose #25239 > > │ fill="#FFFFFF">                                                              │
00:18:54 verbose #25240 > > │ newtonian                                                                    │
00:18:54 verbose #25241 > > │ </text>                                                                      │
00:18:54 verbose #25242 > > │ <text x="504" y="252" dy="0.76em" text-anchor="start"                        │
00:18:54 verbose #25243 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:54 verbose #25244 > > │ fill="#FFFFFF">                                                              │
00:18:54 verbose #25245 > > │ relativistic                                                                 │
00:18:54 verbose #25246 > > │ </text>                                                                      │
00:18:54 verbose #25247 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:54 verbose #25248 > > │ points="474,242 494,242 "/>                                                  │
00:18:54 verbose #25249 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1"          │
00:18:54 verbose #25250 > > │ points="474,257 494,257 "/>                                                  │
00:18:54 verbose #25251 > > │ </svg>                                                                       │
00:18:54 verbose #25252 > > │                                                                              │
00:18:54 verbose #25253 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:54 verbose #25254 > >
00:18:54 verbose #25255 > > ╭─[ 367.16ms - stdout ]────────────────────────────────────────────────────────╮
00:18:54 verbose #25256 > > │ 00:00:14   debug #34 runtime.execute_with_options_async / { options = { │
00:18:54 verbose #25257 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:18:54 verbose #25258 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:18:54 verbose #25259 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:18:54 verbose #25260 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:18:54 verbose #25261 > > │ 00:00:14 verbose #35 > Creating                                         │
00:18:54 verbose #25262 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/5e278a736af1809d8dc │
00:18:54 verbose #25263 > > │ dc13453b35993d336214d079bbcd9b2cf063181d8e59d.svg                            │
00:18:54 verbose #25264 > > │ 00:00:14   debug #36 runtime.execute_with_options_async / { exit_code = │
00:18:54 verbose #25265 > > │ 0; output_length = 134 }                                                     │
00:18:54 verbose #25266 > > │                                                                              │
00:18:54 verbose #25267 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:54 verbose #25268 > >
00:18:54 verbose #25269 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:54 verbose #25270 > > inl uniform_lorentz_force v_e v_b (st : particle_state) =
00:18:54 verbose #25271 > >     st.charge *^ (v_e ^+^ st.velocity >< v_b)
00:18:54 verbose #25272 > >
00:18:54 verbose #25273 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:54 verbose #25274 > > //// test
00:18:54 verbose #25275 > >
00:18:54 verbose #25276 > > inl c : f64 = 299792458
00:18:54 verbose #25277 > > inl ~method = runge_kutta_4 0.000000001
00:18:54 verbose #25278 > > inl forces = [[ uniform_lorentz_force (zero_vec ()) (k_hat ()) ]]
00:18:54 verbose #25279 > > inl (particle_state default_particle_state') = default_particle_state ()
00:18:54 verbose #25280 > > inl initial_state =
00:18:54 verbose #25281 > >     particle_state { default_particle_state' with
00:18:54 verbose #25282 > >         mass = 0.000000000000000000000000001672621898
00:18:54 verbose #25283 > >         charge = 0.0000000000000000001602176621
00:18:54 verbose #25284 > >         velocity = 0.8 *^ (c *^ j_hat ())
00:18:54 verbose #25285 > >     }
00:18:54 verbose #25286 > >
00:18:54 verbose #25287 > > inl newton_states = solver_ method (newton_second_ps forces) initial_state
00:18:54 verbose #25288 > > inl relativity_states = solver_ method (relativity_ps forces) initial_state
00:18:54 verbose #25289 > >
00:18:54 verbose #25290 > > inl newton_x, newton_y =
00:18:54 verbose #25291 > >     newton_states
00:18:54 verbose #25292 > >     >> Some
00:18:54 verbose #25293 > >     |> seq.take_while_ (fun (particle_state st) i => i < 100i32)
00:18:54 verbose #25294 > >     |> listm.map (fun (particle_state st) => st.pos_vec.x, st.pos_vec.y)
00:18:54 verbose #25295 > >     |> listm'.unzip
00:18:54 verbose #25296 > >
00:18:54 verbose #25297 > > inl relativity_x, relativity_y =
00:18:54 verbose #25298 > >     relativity_states
00:18:54 verbose #25299 > >     >> Some
00:18:54 verbose #25300 > >     |> seq.take_while_ (fun (particle_state st) i => i < 165i32)
00:18:54 verbose #25301 > >     |> listm.map (fun (particle_state st) => st.pos_vec.x, st.pos_vec.y)
00:18:54 verbose #25302 > >     |> listm'.unzip
00:18:54 verbose #25303 > >
00:18:54 verbose #25304 > > inl newton_x = newton_x |> listm'.box |> listm'.to_array'
00:18:54 verbose #25305 > > inl newton_y = newton_y |> listm'.box |> listm'.to_array'
00:18:54 verbose #25306 > >
00:18:54 verbose #25307 > > inl relativity_x = relativity_x |> listm'.box |> listm'.to_array'
00:18:54 verbose #25308 > > inl relativity_y = relativity_y |> listm'.box |> listm'.to_array'
00:18:54 verbose #25309 > >
00:18:54 verbose #25310 > > "proton in a 1-t magnetic field",
00:18:54 verbose #25311 > > "x (m)",
00:18:54 verbose #25312 > > "y (m)",
00:18:54 verbose #25313 > > ;[[
00:18:54 verbose #25314 > >     "newtonian", newton_x, newton_y
00:18:54 verbose #25315 > >     "relativistic", relativity_x, relativity_y
00:18:54 verbose #25316 > > ]]
00:18:54 verbose #25317 > >
00:18:54 verbose #25318 > > ╭─[ 310.44ms - return value ]──────────────────────────────────────────────────╮
00:18:54 verbose #25319 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:18:54 verbose #25320 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:18:54 verbose #25321 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:18:54 verbose #25322 > > │ stroke="none"/>                                                              │
00:18:54 verbose #25323 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:18:54 verbose #25324 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:54 verbose #25325 > > │ fill="#FFFFFF">                                                              │
00:18:54 verbose #25326 > > │ proton in a 1-t magnetic field                                               │
00:18:54 verbose #25327 > > │ </text>                                                                      │
00:18:54 verbose #25328 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="58" y1="424" x2="58" │
00:18:54 verbose #25329 > > │ y2="75"/>                                                                    │
00:18:54 verbose #25330 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:18:54 verbose #25331 > > │ y2="75"/>                                                                    │
00:18:54 verbose #25332 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="81" y1="424" x2="81" │
00:18:54 verbose #25333 > > │ y2="75"/>                                                                    │
00:18:54 verbose #25334 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" y1="424" x2="93" │
00:18:54 verbose #25335 > > │ y2="75"/>                                                                    │
00:18:54 verbose #25336 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="105" y1="424"        │
00:18:54 verbose #25337 > > │ x2="105" y2="75"/>                                                           │
00:18:54 verbose #25338 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="117" y1="424"        │
00:18:54 verbose #25339 > > │ x2="117" y2="75"/>                                                           │
00:18:54 verbose #25340 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424"        │
00:18:54 verbose #25341 > > │ x2="129" y2="75"/>                                                           │
00:18:54 verbose #25342 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="141" y1="424"        │
00:18:54 verbose #25343 > > │ x2="141" y2="75"/>                                                           │
00:18:54 verbose #25344 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424"        │
00:18:54 verbose #25345 > > │ x2="153" y2="75"/>                                                           │
00:18:54 verbose #25346 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="165" y1="424"        │
00:18:54 verbose #25347 > > │ x2="165" y2="75"/>                                                           │
00:18:54 verbose #25348 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="177" y1="424"        │
00:18:54 verbose #25349 > > │ x2="177" y2="75"/>                                                           │
00:18:54 verbose #25350 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="189" y1="424"        │
00:18:54 verbose #25351 > > │ x2="189" y2="75"/>                                                           │
00:18:54 verbose #25352 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="201" y1="424"        │
00:18:54 verbose #25353 > > │ x2="201" y2="75"/>                                                           │
00:18:54 verbose #25354 > > │ <...555,197 560,206 563,216 566,225 567,234 568,244 568,253 568,263 566,272  │
00:18:54 verbose #25355 > > │ 564,281 561,291 557,300 552,309 547,317 540,326 533,334 526,342 517,350      │
00:18:54 verbose #25356 > > │ 508,357 499,364 488,371 478,377 466,383 455,388 442,393 430,398 417,402      │
00:18:54 verbose #25357 > > │ 403,405 390,408 376,410 362,412 348,414 333,414 319,415 305,414 290,414      │
00:18:54 verbose #25358 > > │ 276,412 262,410 248,408 235,405 221,401 208,397 196,393 183,388 171,383      │
00:18:54 verbose #25359 > > │ 160,377 149,371 139,364 129,357 120,350 112,342 104,334 97,326 91,317 86,309 │
00:18:54 verbose #25360 > > │ 81,300 77,290 74,281 72,272 70,263 70,253 70,244 71,234 72,225 75,215 78,206 │
00:18:54 verbose #25361 > > │ 83,197 88,188 93,180 100,171 107,163 115,155 124,148 133,140 143,133 153,127 │
00:18:54 verbose #25362 > > │ 164,121 176,115 188,110 200,105 213,101 226,97 239,94 253,91 267,89 281,87   │
00:18:54 verbose #25363 > > │ 295,86 310,85 324,85 338,86 353,87 367,88 381,90 394,93 408,96 421,100       │
00:18:54 verbose #25364 > > │ 434,104 447,109 459,114 470,119 482,125 492,131 502,138 512,145 520,153      │
00:18:54 verbose #25365 > > │ 529,161 536,169 543,177 549,186 554,194 558,203 562,213 565,222 567,231      │
00:18:54 verbose #25366 > > │ 568,241 569,250 "/>                                                          │
00:18:54 verbose #25367 > > │ <rect x="464" y="227" width="116" height="45" opacity="1" fill="none"        │
00:18:54 verbose #25368 > > │ stroke="#FFFFFF"/>                                                           │
00:18:54 verbose #25369 > > │ <text x="504" y="237" dy="0.76em" text-anchor="start"                        │
00:18:54 verbose #25370 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:54 verbose #25371 > > │ fill="#FFFFFF">                                                              │
00:18:54 verbose #25372 > > │ newtonian                                                                    │
00:18:54 verbose #25373 > > │ </text>                                                                      │
00:18:54 verbose #25374 > > │ <text x="504" y="252" dy="0.76em" text-anchor="start"                        │
00:18:54 verbose #25375 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:54 verbose #25376 > > │ fill="#FFFFFF">                                                              │
00:18:54 verbose #25377 > > │ relativistic                                                                 │
00:18:54 verbose #25378 > > │ </text>                                                                      │
00:18:54 verbose #25379 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:54 verbose #25380 > > │ points="474,242 494,242 "/>                                                  │
00:18:54 verbose #25381 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1"          │
00:18:54 verbose #25382 > > │ points="474,257 494,257 "/>                                                  │
00:18:54 verbose #25383 > > │ </svg>                                                                       │
00:18:54 verbose #25384 > > │                                                                              │
00:18:54 verbose #25385 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:54 verbose #25386 > >
00:18:54 verbose #25387 > > ╭─[ 314.73ms - stdout ]────────────────────────────────────────────────────────╮
00:18:54 verbose #25388 > > │ 00:00:15   debug #37 runtime.execute_with_options_async / { options = { │
00:18:54 verbose #25389 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:18:54 verbose #25390 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:18:54 verbose #25391 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:18:54 verbose #25392 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:18:54 verbose #25393 > > │ 00:00:15 verbose #38 > Creating                                         │
00:18:54 verbose #25394 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/bb8f45eff587eeea2eb │
00:18:54 verbose #25395 > > │ a0bc2ee5a7127055bf92453772b584569d1b580f6f89c.svg                            │
00:18:54 verbose #25396 > > │ 00:00:15   debug #39 runtime.execute_with_options_async / { exit_code = │
00:18:54 verbose #25397 > > │ 0; output_length = 134 }                                                     │
00:18:54 verbose #25398 > > │                                                                              │
00:18:54 verbose #25399 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:54 verbose #25400 > >
00:18:54 verbose #25401 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:54 verbose #25402 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:54 verbose #25403 > > │ #### system kinetic energy versus time 1                                     │
00:18:54 verbose #25404 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:54 verbose #25405 > >
00:18:54 verbose #25406 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:54 verbose #25407 > > //// test
00:18:54 verbose #25408 > >
00:18:54 verbose #25409 > > inl central_force f (particle_state st1) (particle_state st2) =
00:18:54 verbose #25410 > >     inl r1 = st1.pos_vec
00:18:54 verbose #25411 > >     inl r2 = st2.pos_vec
00:18:54 verbose #25412 > >     inl r21 = r2 ^-^ r1
00:18:54 verbose #25413 > >     inl r21mag = magnitude r21
00:18:54 verbose #25414 > >     f r21mag *^ r21 ^/ r21mag
00:18:54 verbose #25415 > >
00:18:54 verbose #25416 > > inl billiard_force k re =
00:18:54 verbose #25417 > >     inl f r =
00:18:54 verbose #25418 > >         if r >= re
00:18:54 verbose #25419 > >         then 0
00:18:54 verbose #25420 > >         else -k * (r - re)
00:18:54 verbose #25421 > >     central_force f
00:18:54 verbose #25422 > >
00:18:54 verbose #25423 > > type force_vector = vec
00:18:54 verbose #25424 > > type two_body_force = particle_state -> particle_state -> force_vector
00:18:54 verbose #25425 > >
00:18:54 verbose #25426 > > union force =
00:18:54 verbose #25427 > >     | ExternalForce : i32 * one_body_force
00:18:54 verbose #25428 > >     | InternalForce : i32 * i32 * two_body_force
00:18:54 verbose #25429 > >
00:18:54 verbose #25430 > > nominal multi_particle_state = list particle_state
00:18:54 verbose #25431 > >
00:18:54 verbose #25432 > > nominal d_multi_particle_state = list d_particle_state
00:18:54 verbose #25433 > >
00:18:54 verbose #25434 > > inl force_on n sts force =
00:18:54 verbose #25435 > >     match force with
00:18:54 verbose #25436 > >     | ExternalForce (n0, f_one_body) =>
00:18:54 verbose #25437 > >         if n = n0
00:18:54 verbose #25438 > >         then f_one_body
00:18:54 verbose #25439 > >         else fun _ => zero_vec ()
00:18:54 verbose #25440 > >     | InternalForce (n0, n1, f_two_body) =>
00:18:54 verbose #25441 > >         if n = n0
00:18:54 verbose #25442 > >         then f_two_body (sts |> listm'.item n1)
00:18:54 verbose #25443 > >         elif n = n1
00:18:54 verbose #25444 > >         then f_two_body (sts |> listm'.item n0)
00:18:54 verbose #25445 > >         else fun _ => zero_vec ()
00:18:54 verbose #25446 > >
00:18:54 verbose #25447 > > inl forces_on n (multi_particle_state sts) fs =
00:18:54 verbose #25448 > >     fs |> listm.map (force_on n sts)
00:18:54 verbose #25449 > >
00:18:54 verbose #25450 > > inl newton_second_mps fs (multi_particle_state sts) : d_multi_particle_state =
00:18:54 verbose #25451 > >     inl deriv (n, st) =
00:18:54 verbose #25452 > >         newton_second_ps (forces_on n (multi_particle_state sts) fs) st
00:18:54 verbose #25453 > >     sts |> listm'.indexed |> listm.map deriv |> d_multi_particle_state
00:18:54 verbose #25454 > >
00:18:54 verbose #25455 > > instance (+++) d_multi_particle_state = fun (d_multi_particle_state dsts1)
00:18:54 verbose #25456 > > (d_multi_particle_state dsts2) =>
00:18:54 verbose #25457 > >     d_multi_particle_state (listm'.zip_with_ (+++) dsts1 dsts2)
00:18:54 verbose #25458 > >
00:18:54 verbose #25459 > > instance scale d_multi_particle_state = fun w (d_multi_particle_state dsts) =>
00:18:54 verbose #25460 > >     d_multi_particle_state (dsts |> listm.map (scale w))
00:18:54 verbose #25461 > >
00:18:54 verbose #25462 > > instance shift multi_particle_state = fun dt dsts (multi_particle_state sts) =>
00:18:54 verbose #25463 > >     inl (d_multi_particle_state dsts) =
00:18:54 verbose #25464 > >         real
00:18:54 verbose #25465 > >             match dsts with
00:18:54 verbose #25466 > >             | d_multi_particle_state _ => dsts
00:18:54 verbose #25467 > >     listm'.zip_with_ (shift dt) dsts sts |> multi_particle_state
00:18:54 verbose #25468 > >
00:18:54 verbose #25469 > > inl euler_cromer_mps dt : numerical_method multi_particle_state
00:18:54 verbose #25470 > > d_multi_particle_state =
00:18:54 verbose #25471 > >     fun deriv mpst0 =>
00:18:54 verbose #25472 > >         inl mpst1 = euler dt deriv mpst0
00:18:54 verbose #25473 > >         inl (multi_particle_state sts0) = mpst0
00:18:54 verbose #25474 > >         inl (multi_particle_state sts1) = mpst1
00:18:54 verbose #25475 > >         sts1
00:18:54 verbose #25476 > >         |> listm'.zip_ sts0
00:18:54 verbose #25477 > >         |> listm.map (fun ((particle_state st0), (particle_state st1)) =>
00:18:54 verbose #25478 > >             particle_state {
00:18:54 verbose #25479 > >                 st1 with
00:18:54 verbose #25480 > >                     pos_vec = st0.pos_vec ^+^ st1.velocity ^* dt
00:18:54 verbose #25481 > >             }
00:18:54 verbose #25482 > >         )
00:18:54 verbose #25483 > >         |> multi_particle_state
00:18:54 verbose #25484 > >
00:18:54 verbose #25485 > > inl update_mps (method : numerical_method multi_particle_state
00:18:54 verbose #25486 > > d_multi_particle_state) =
00:18:54 verbose #25487 > >     newton_second_mps >> method
00:18:54 verbose #25488 > >
00:18:54 verbose #25489 > > inl states_mps (method : numerical_method multi_particle_state
00:18:54 verbose #25490 > > d_multi_particle_state) =
00:18:54 verbose #25491 > >     newton_second_mps >> method >> seq.iterate_
00:18:54 verbose #25492 > >
00:18:54 verbose #25493 > >
00:18:54 verbose #25494 > > inl kinetic_energy (particle_state st) =
00:18:54 verbose #25495 > >     inl m = st.mass
00:18:54 verbose #25496 > >     inl v = magnitude st.velocity
00:18:54 verbose #25497 > >     0.5 * m * v ** 2
00:18:54 verbose #25498 > >
00:18:54 verbose #25499 > > inl system_ke (multi_particle_state sts) =
00:18:54 verbose #25500 > >     sts |> listm.map kinetic_energy |> listm'.sum
00:18:54 verbose #25501 > >
00:18:54 verbose #25502 > > inl linear_spring_pe k re (particle_state st1) (particle_state st2) =
00:18:54 verbose #25503 > >     inl r1 = st1.pos_vec
00:18:54 verbose #25504 > >     inl r2 = st2.pos_vec
00:18:54 verbose #25505 > >     inl r21 = r2 ^-^ r1
00:18:54 verbose #25506 > >     inl r21mag = magnitude r21
00:18:54 verbose #25507 > >     k * (r21mag - re) ** 2 / 2
00:18:54 verbose #25508 > >
00:18:54 verbose #25509 > > inl earth_surface_gravity_pe (particle_state st) =
00:18:54 verbose #25510 > >     inl g = 9.80665
00:18:54 verbose #25511 > >     inl m = st.mass
00:18:54 verbose #25512 > >     inl z = st.pos_vec.z
00:18:54 verbose #25513 > >     m * g * z
00:18:54 verbose #25514 > >
00:18:54 verbose #25515 > > inl two_springs_pe (multi_particle_state sts) =
00:18:54 verbose #25516 > >     inl st0 = sts |> listm'.item 0i32
00:18:54 verbose #25517 > >     inl st1 = sts |> listm'.item 1i32
00:18:54 verbose #25518 > >     linear_spring_pe 100 0.5 (default_particle_state ()) st0
00:18:54 verbose #25519 > >     + linear_spring_pe 100 0.5 st0 st1
00:18:54 verbose #25520 > >     + earth_surface_gravity_pe st0
00:18:54 verbose #25521 > >     + earth_surface_gravity_pe st1
00:18:54 verbose #25522 > >
00:18:54 verbose #25523 > > inl two_springs_me mpst =
00:18:54 verbose #25524 > >     system_ke mpst + two_springs_pe mpst
00:18:54 verbose #25525 > >
00:18:54 verbose #25526 > > inl ball_radius () = 0.03
00:18:54 verbose #25527 > >
00:18:54 verbose #25528 > > inl billiard_forces k =
00:18:54 verbose #25529 > >     [[ InternalForce (0, 1, billiard_force k (2 * ball_radius ())) ]]
00:18:54 verbose #25530 > >
00:18:54 verbose #25531 > > inl billiard_update n_method k dt =
00:18:54 verbose #25532 > >     update_mps (n_method dt) (billiard_forces k)
00:18:54 verbose #25533 > >
00:18:54 verbose #25534 > > inl billiard_initial () =
00:18:54 verbose #25535 > >     inl ball_mass = 0.160
00:18:54 verbose #25536 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:18:54 verbose #25537 > >     multi_particle_state [[
00:18:54 verbose #25538 > >         particle_state {
00:18:54 verbose #25539 > >             default_particle_state' with
00:18:54 verbose #25540 > >                 mass = ball_mass
00:18:54 verbose #25541 > >                 pos_vec = zero_vec ()
00:18:54 verbose #25542 > >                 velocity = 0.2 *^ i_hat ()
00:18:54 verbose #25543 > >         }
00:18:54 verbose #25544 > >         particle_state {
00:18:54 verbose #25545 > >             default_particle_state' with
00:18:54 verbose #25546 > >                 mass = ball_mass
00:18:54 verbose #25547 > >                 pos_vec = i_hat () ^+^ 0.02 *^ j_hat ()
00:18:54 verbose #25548 > >                 velocity = zero_vec ()
00:18:54 verbose #25549 > >         }
00:18:54 verbose #25550 > >     ]]
00:18:54 verbose #25551 > >
00:18:54 verbose #25552 > > inl billiard_states ~n_method k dt =
00:18:54 verbose #25553 > >     states_mps (n_method dt) (billiard_forces k) (billiard_initial ())
00:18:54 verbose #25554 > >
00:18:54 verbose #25555 > > inl billiard_states_finite n_method k dt =
00:18:54 verbose #25556 > >     billiard_states n_method k dt
00:18:54 verbose #25557 > >     >> Some
00:18:54 verbose #25558 > >     |> seq.take_while_ (fun (multi_particle_state mpst) (_ : i32) =>
00:18:54 verbose #25559 > >         (mpst |> listm'.item 0i32).time <= 10
00:18:54 verbose #25560 > >     )
00:18:54 verbose #25561 > >
00:18:54 verbose #25562 > > inl momentum (particle_state st) =
00:18:54 verbose #25563 > >     inl m = st.mass
00:18:54 verbose #25564 > >     inl v = st.velocity
00:18:54 verbose #25565 > >     m *^ v
00:18:54 verbose #25566 > >
00:18:54 verbose #25567 > > inl system_p (multi_particle_state sts) =
00:18:54 verbose #25568 > >     sts |> listm.map momentum |> sum_vec
00:18:54 verbose #25569 > >
00:18:54 verbose #25570 > >
00:18:54 verbose #25571 > > inl time_ke_ec_x, time_ke_ec_y =
00:18:54 verbose #25572 > >     billiard_states_finite euler_cromer_mps 30 0.03
00:18:54 verbose #25573 > >     |> listm.map (fun (multi_particle_state mpst) =>
00:18:54 verbose #25574 > >         (mpst |> listm'.item 0i32).time, system_ke (multi_particle_state mpst)
00:18:54 verbose #25575 > >     )
00:18:54 verbose #25576 > >     |> listm'.unzip
00:18:54 verbose #25577 > >
00:18:54 verbose #25578 > > inl time_ke_rk4_x, time_ke_rk4_y =
00:18:54 verbose #25579 > >     billiard_states_finite runge_kutta_4 30 0.03
00:18:54 verbose #25580 > >     |> listm.map (fun (multi_particle_state mpst) =>
00:18:54 verbose #25581 > >         (mpst |> listm'.item 0i32).time, system_ke (multi_particle_state mpst)
00:18:54 verbose #25582 > >     )
00:18:54 verbose #25583 > >     |> listm'.unzip
00:18:54 verbose #25584 > >
00:18:54 verbose #25585 > > inl time_ke_ec_x = time_ke_ec_x |> listm'.box |> listm'.to_array'
00:18:54 verbose #25586 > > inl time_ke_ec_y = time_ke_ec_y |> listm'.box |> listm'.to_array'
00:18:54 verbose #25587 > >
00:18:54 verbose #25588 > > inl time_ke_rk4_x = time_ke_rk4_x |> listm'.box |> listm'.to_array'
00:18:54 verbose #25589 > > inl time_ke_rk4_y = time_ke_rk4_y |> listm'.box |> listm'.to_array'
00:18:54 verbose #25590 > >
00:18:54 verbose #25591 > > "system kinetic energy versus time",
00:18:54 verbose #25592 > > "time (s)",
00:18:54 verbose #25593 > > "system kinetic energy (j)",
00:18:54 verbose #25594 > > ;[[
00:18:54 verbose #25595 > >     "euler-cromer", time_ke_ec_x, time_ke_ec_y
00:18:54 verbose #25596 > >     "runge-kutta 4", time_ke_rk4_x, time_ke_rk4_y
00:18:54 verbose #25597 > > ]]
00:18:56 verbose #25598 > >
00:18:56 verbose #25599 > > ╭─[ 1.15s - return value ]─────────────────────────────────────────────────────╮
00:18:56 verbose #25600 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:18:56 verbose #25601 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:18:56 verbose #25602 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:18:56 verbose #25603 > > │ stroke="none"/>                                                              │
00:18:56 verbose #25604 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:18:56 verbose #25605 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:56 verbose #25606 > > │ fill="#FFFFFF">                                                              │
00:18:56 verbose #25607 > > │ system kinetic energy versus time                                            │
00:18:56 verbose #25608 > > │ </text>                                                                      │
00:18:56 verbose #25609 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:18:56 verbose #25610 > > │ y2="75"/>                                                                    │
00:18:56 verbose #25611 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:18:56 verbose #25612 > > │ y2="75"/>                                                                    │
00:18:56 verbose #25613 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:18:56 verbose #25614 > > │ y2="75"/>                                                                    │
00:18:56 verbose #25615 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:18:56 verbose #25616 > > │ y2="75"/>                                                                    │
00:18:56 verbose #25617 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │
00:18:56 verbose #25618 > > │ y2="75"/>                                                                    │
00:18:56 verbose #25619 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424"        │
00:18:56 verbose #25620 > > │ x2="109" y2="75"/>                                                           │
00:18:56 verbose #25621 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:18:56 verbose #25622 > > │ x2="119" y2="75"/>                                                           │
00:18:56 verbose #25623 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424"        │
00:18:56 verbose #25624 > > │ x2="129" y2="75"/>                                                           │
00:18:56 verbose #25625 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424"        │
00:18:56 verbose #25626 > > │ x2="139" y2="75"/>                                                           │
00:18:56 verbose #25627 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424"        │
00:18:56 verbose #25628 > > │ x2="149" y2="75"/>                                                           │
00:18:56 verbose #25629 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424"        │
00:18:56 verbose #25630 > > │ x2="159" y2="75"/>                                                           │
00:18:56 verbose #25631 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424"        │
00:18:56 verbose #25632 > > │ x2="169" y2="75"/>                                                           │
00:18:56 verbose #25633 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424"        │
00:18:56 verbose #25634 > > │ x2="179" y2="75"/>                                                           │
00:18:56 verbose #25635 > > │ ...,104 404,104 405,104 407,104 408,104 410,104 411,104 413,104 414,104      │
00:18:56 verbose #25636 > > │ 416,104 417,104 419,104 420,104 422,104 423,104 425,104 426,104 428,104      │
00:18:56 verbose #25637 > > │ 429,104 431,104 432,104 434,104 435,104 437,104 438,104 440,104 441,104      │
00:18:56 verbose #25638 > > │ 443,104 444,104 446,104 447,104 449,104 450,104 452,104 453,104 455,104      │
00:18:56 verbose #25639 > > │ 456,104 458,104 459,104 461,104 462,104 464,104 465,104 467,104 468,104      │
00:18:56 verbose #25640 > > │ 470,104 471,104 473,104 474,104 476,104 477,104 479,104 480,104 482,104      │
00:18:56 verbose #25641 > > │ 483,104 485,104 486,104 488,104 489,104 491,104 492,104 494,104 495,104      │
00:18:56 verbose #25642 > > │ 497,104 498,104 500,104 501,104 503,104 504,104 506,104 507,104 509,104      │
00:18:56 verbose #25643 > > │ 510,104 512,104 513,104 515,104 516,104 518,104 519,104 521,104 522,104      │
00:18:56 verbose #25644 > > │ 524,104 525,104 527,104 528,104 530,104 531,104 533,104 534,104 536,104      │
00:18:56 verbose #25645 > > │ 537,104 539,104 540,104 542,104 543,104 545,104 546,104 548,104 549,104      │
00:18:56 verbose #25646 > > │ 551,104 552,104 554,104 555,104 557,104 558,104 560,104 561,104 563,104      │
00:18:56 verbose #25647 > > │ 564,104 566,104 567,104 569,104 "/>                                          │
00:18:56 verbose #25648 > > │ <rect x="459" y="227" width="121" height="45" opacity="1" fill="none"        │
00:18:56 verbose #25649 > > │ stroke="#FFFFFF"/>                                                           │
00:18:56 verbose #25650 > > │ <text x="499" y="237" dy="0.76em" text-anchor="start"                        │
00:18:56 verbose #25651 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:56 verbose #25652 > > │ fill="#FFFFFF">                                                              │
00:18:56 verbose #25653 > > │ euler-cromer                                                                 │
00:18:56 verbose #25654 > > │ </text>                                                                      │
00:18:56 verbose #25655 > > │ <text x="499" y="252" dy="0.76em" text-anchor="start"                        │
00:18:56 verbose #25656 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:56 verbose #25657 > > │ fill="#FFFFFF">                                                              │
00:18:56 verbose #25658 > > │ runge-kutta 4                                                                │
00:18:56 verbose #25659 > > │ </text>                                                                      │
00:18:56 verbose #25660 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:56 verbose #25661 > > │ points="469,242 489,242 "/>                                                  │
00:18:56 verbose #25662 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1"          │
00:18:56 verbose #25663 > > │ points="469,257 489,257 "/>                                                  │
00:18:56 verbose #25664 > > │ </svg>                                                                       │
00:18:56 verbose #25665 > > │                                                                              │
00:18:56 verbose #25666 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:56 verbose #25667 > >
00:18:56 verbose #25668 > > ╭─[ 1.16s - stdout ]───────────────────────────────────────────────────────────╮
00:18:56 verbose #25669 > > │ 00:00:16   debug #40 runtime.execute_with_options_async / { options = { │
00:18:56 verbose #25670 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:18:56 verbose #25671 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:18:56 verbose #25672 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:18:56 verbose #25673 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:18:56 verbose #25674 > > │ 00:00:16 verbose #41 > Creating                                         │
00:18:56 verbose #25675 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/6c2e10892d6afcf0c02 │
00:18:56 verbose #25676 > > │ bfe44bc49895c6de5037e535b9df0fb226e37177775eb.svg                            │
00:18:56 verbose #25677 > > │ 00:00:16   debug #42 runtime.execute_with_options_async / { exit_code = │
00:18:56 verbose #25678 > > │ 0; output_length = 134 }                                                     │
00:18:56 verbose #25679 > > │                                                                              │
00:18:56 verbose #25680 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:56 verbose #25681 > >
00:18:56 verbose #25682 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:56 verbose #25683 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:56 verbose #25684 > > │ #### wave 1                                                                  │
00:18:56 verbose #25685 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:56 verbose #25686 > >
00:18:56 verbose #25687 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:56 verbose #25688 > > //// test
00:18:56 verbose #25689 > >
00:18:56 verbose #25690 > > inl linear_spring k re (particle_state st1) (particle_state st2) =
00:18:56 verbose #25691 > >     inl r1 = st1.pos_vec
00:18:56 verbose #25692 > >     inl r2 = st2.pos_vec
00:18:56 verbose #25693 > >     inl r21 = r2 ^-^ r1
00:18:56 verbose #25694 > >     inl r21mag = magnitude r21
00:18:56 verbose #25695 > >     -k * (r21mag - re) *^ r21 ^/ r21mag
00:18:56 verbose #25696 > >
00:18:56 verbose #25697 > > inl fixed_linear_spring k re r1 =
00:18:56 verbose #25698 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:18:56 verbose #25699 > >     linear_spring k re (particle_state { default_particle_state' with pos_vec =
00:18:56 verbose #25700 > > r1 })
00:18:56 verbose #25701 > >
00:18:56 verbose #25702 > > inl forces_string () =
00:18:56 verbose #25703 > >     [[
00:18:56 verbose #25704 > >         ExternalForce (0, fixed_linear_spring 5384 0 (zero_vec ()))
00:18:56 verbose #25705 > >         ExternalForce (63, fixed_linear_spring 5384 0 (0.65 *^ i_hat ()))
00:18:56 verbose #25706 > >     ]] ++ (
00:18:56 verbose #25707 > >         listm'.init_series 0 59 1
00:18:56 verbose #25708 > >         |> listm.map (fun n => InternalForce (n, n + 1, linear_spring 5384 0))
00:18:56 verbose #25709 > >     )
00:18:56 verbose #25710 > >
00:18:56 verbose #25711 > > inl string_update dt =
00:18:56 verbose #25712 > >     update_mps (runge_kutta_4 dt) (forces_string ())
00:18:56 verbose #25713 > >
00:18:56 verbose #25714 > > inl string_initial_overtone n =
00:18:56 verbose #25715 > >     inl ball_mass = 0.0008293 * 0.65 / 64
00:18:56 verbose #25716 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:18:56 verbose #25717 > >     listm'.init_series 0.01 0.64 0.01
00:18:56 verbose #25718 > >     |> listm.map (fun x =>
00:18:56 verbose #25719 > >         inl y = 0.005 * sin (conv n * pi * x / 0.65)
00:18:56 verbose #25720 > >         particle_state {
00:18:56 verbose #25721 > >             default_particle_state' with
00:18:56 verbose #25722 > >                 mass = ball_mass
00:18:56 verbose #25723 > >                 pos_vec = x *^ i_hat () ^+^ y *^ j_hat ()
00:18:56 verbose #25724 > >                 velocity = zero_vec ()
00:18:56 verbose #25725 > >         }
00:18:56 verbose #25726 > >     )
00:18:56 verbose #25727 > >     |> multi_particle_state
00:18:56 verbose #25728 > >
00:18:56 verbose #25729 > > inl string_initial_pluck () =
00:18:56 verbose #25730 > >     inl ball_mass = 0.0008293 * 0.65 / 64
00:18:56 verbose #25731 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:18:56 verbose #25732 > >     listm'.init_series 0.01 0.64 0.01
00:18:56 verbose #25733 > >     |> listm.map (fun x =>
00:18:56 verbose #25734 > >         inl y =
00:18:56 verbose #25735 > >             inl n = if x <= 0.51 then 0 else 0.65
00:18:56 verbose #25736 > >             0.005 / (0.51 - n) * (x - n)
00:18:56 verbose #25737 > >         particle_state {
00:18:56 verbose #25738 > >             default_particle_state' with
00:18:56 verbose #25739 > >                 mass = ball_mass
00:18:56 verbose #25740 > >                 pos_vec = x *^ i_hat () ^+^ y *^ j_hat ()
00:18:56 verbose #25741 > >                 velocity = zero_vec ()
00:18:56 verbose #25742 > >         }
00:18:56 verbose #25743 > >     )
00:18:56 verbose #25744 > >     |> multi_particle_state
00:18:56 verbose #25745 > >
00:18:56 verbose #25746 > > let main () =
00:18:56 verbose #25747 > >     inl ~frames = listm'.init_series 0 9 1f64
00:18:56 verbose #25748 > >     inl initial_state = string_initial_overtone 3i32
00:18:56 verbose #25749 > >     inl frames =
00:18:56 verbose #25750 > >         frames
00:18:56 verbose #25751 > >         |> listm.map (fun n =>
00:18:56 verbose #25752 > >             inl (multi_particle_state sts) =
00:18:56 verbose #25753 > >                 seq.iterate' (string_update 0.000025) initial_state |> fun f =>
00:18:56 verbose #25754 > > f 0f64
00:18:56 verbose #25755 > >             inl rs =
00:18:56 verbose #25756 > >                 [[ zero_vec () ]]
00:18:56 verbose #25757 > >                 ++ (sts |> listm.map (fun (particle_state st) => st.pos_vec))
00:18:56 verbose #25758 > >                 ++ [[ 0.65 *^ i_hat () ]]
00:18:56 verbose #25759 > >             inl x, y =
00:18:56 verbose #25760 > >                 rs
00:18:56 verbose #25761 > >                 |> listm.map (fun r => r.x, r.y)
00:18:56 verbose #25762 > >                 |> listm'.unzip
00:18:56 verbose #25763 > >             inl x = x |> listm'.box |> listm'.to_array'
00:18:56 verbose #25764 > >             inl y = y |> listm'.box |> listm'.to_array'
00:18:56 verbose #25765 > >             x, y
00:18:56 verbose #25766 > >         )
00:18:56 verbose #25767 > >         |> listm'.box |> listm'.to_array'
00:18:56 verbose #25768 > >
00:18:56 verbose #25769 > >     inl n = 0i32
00:18:56 verbose #25770 > >
00:18:56 verbose #25771 > >     inl x, y = a frames |> am'.index n
00:18:56 verbose #25772 > >
00:18:56 verbose #25773 > >     "wave",
00:18:56 verbose #25774 > >     "position (m)",
00:18:56 verbose #25775 > >     "displacement (m)",
00:18:56 verbose #25776 > >     ;[[
00:18:56 verbose #25777 > >         ($'$"{!n}"' : string), x, y
00:18:56 verbose #25778 > >     ]]
00:18:56 verbose #25779 > >
00:18:56 verbose #25780 > > ╭─[ 286.37ms - return value ]──────────────────────────────────────────────────╮
00:18:56 verbose #25781 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:18:56 verbose #25782 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:18:56 verbose #25783 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:18:56 verbose #25784 > > │ stroke="none"/>                                                              │
00:18:56 verbose #25785 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:18:56 verbose #25786 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:56 verbose #25787 > > │ fill="#FFFFFF">                                                              │
00:18:56 verbose #25788 > > │ wave                                                                         │
00:18:56 verbose #25789 > > │ </text>                                                                      │
00:18:56 verbose #25790 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" y1="424" x2="62" │
00:18:56 verbose #25791 > > │ y2="75"/>                                                                    │
00:18:56 verbose #25792 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:18:56 verbose #25793 > > │ y2="75"/>                                                                    │
00:18:56 verbose #25794 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" y1="424" x2="77" │
00:18:56 verbose #25795 > > │ y2="75"/>                                                                    │
00:18:56 verbose #25796 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="85" y1="424" x2="85" │
00:18:56 verbose #25797 > > │ y2="75"/>                                                                    │
00:18:56 verbose #25798 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" y1="424" x2="93" │
00:18:56 verbose #25799 > > │ y2="75"/>                                                                    │
00:18:56 verbose #25800 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="100" y1="424"        │
00:18:56 verbose #25801 > > │ x2="100" y2="75"/>                                                           │
00:18:56 verbose #25802 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="108" y1="424"        │
00:18:56 verbose #25803 > > │ x2="108" y2="75"/>                                                           │
00:18:56 verbose #25804 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="116" y1="424"        │
00:18:56 verbose #25805 > > │ x2="116" y2="75"/>                                                           │
00:18:56 verbose #25806 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="123" y1="424"        │
00:18:56 verbose #25807 > > │ x2="123" y2="75"/>                                                           │
00:18:56 verbose #25808 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="131" y1="424"        │
00:18:56 verbose #25809 > > │ x2="131" y2="75"/>                                                           │
00:18:56 verbose #25810 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424"        │
00:18:56 verbose #25811 > > │ x2="139" y2="75"/>                                                           │
00:18:56 verbose #25812 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="146" y1="424"        │
00:18:56 verbose #25813 > > │ x2="146" y2="75"/>                                                           │
00:18:56 verbose #25814 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="154" y1="424"        │
00:18:56 verbose #25815 > > │ x2="154" y2="75"/>                                                           │
00:18:56 verbose #25816 > > │ <line opacity="1" stroke="#32...ne fill="none" opacity="1" stroke="#FFFFFF"  │
00:18:56 verbose #25817 > > │ stroke-width="1" points="585,250 590,250 "/>                                 │
00:18:56 verbose #25818 > > │ <text x="617" y="184" dy="0.5ex" text-anchor="end" font-family="sans-serif"  │
00:18:56 verbose #25819 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF">                     │
00:18:56 verbose #25820 > > │ 0.0                                                                          │
00:18:56 verbose #25821 > > │ </text>                                                                      │
00:18:56 verbose #25822 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:18:56 verbose #25823 > > │ points="585,184 590,184 "/>                                                  │
00:18:56 verbose #25824 > > │ <text x="617" y="118" dy="0.5ex" text-anchor="end" font-family="sans-serif"  │
00:18:56 verbose #25825 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF">                     │
00:18:56 verbose #25826 > > │ 0.0                                                                          │
00:18:56 verbose #25827 > > │ </text>                                                                      │
00:18:56 verbose #25828 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1"          │
00:18:56 verbose #25829 > > │ points="585,118 590,118 "/>                                                  │
00:18:56 verbose #25830 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:56 verbose #25831 > > │ points="69,250 77,226 85,203 93,181 100,160 108,141 116,124 123,110 131,99   │
00:18:56 verbose #25832 > > │ 139,91 146,87 154,85 162,88 169,93 177,102 185,115 192,129 200,147 208,167   │
00:18:56 verbose #25833 > > │ 215,188 223,211 231,234 238,258 246,282 254,305 261,327 269,347 277,365      │
00:18:56 verbose #25834 > > │ 284,381 292,394 300,404 307,411 315,415 323,415 331,411 338,404 346,394      │
00:18:56 verbose #25835 > > │ 354,381 361,365 369,347 377,327 384,305 392,282 400,258 407,234 415,211      │
00:18:56 verbose #25836 > > │ 423,188 430,167 438,147 446,129 453,115 461,102 469,93 476,88 484,85 492,87  │
00:18:56 verbose #25837 > > │ 499,91 507,99 515,110 522,124 530,141 538,160 545,181 553,203 561,226        │
00:18:56 verbose #25838 > > │ 569,250 "/>                                                                  │
00:18:56 verbose #25839 > > │ <rect x="525" y="235" width="55" height="30" opacity="1" fill="none"         │
00:18:56 verbose #25840 > > │ stroke="#FFFFFF"/>                                                           │
00:18:56 verbose #25841 > > │ <text x="565" y="245" dy="0.76em" text-anchor="start"                        │
00:18:56 verbose #25842 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:56 verbose #25843 > > │ fill="#FFFFFF">                                                              │
00:18:56 verbose #25844 > > │ 0                                                                            │
00:18:56 verbose #25845 > > │ </text>                                                                      │
00:18:56 verbose #25846 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:56 verbose #25847 > > │ points="535,250 555,250 "/>                                                  │
00:18:56 verbose #25848 > > │ </svg>                                                                       │
00:18:56 verbose #25849 > > │                                                                              │
00:18:56 verbose #25850 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:56 verbose #25851 > >
00:18:56 verbose #25852 > > ╭─[ 290.47ms - stdout ]────────────────────────────────────────────────────────╮
00:18:56 verbose #25853 > > │ 00:00:16   debug #43 runtime.execute_with_options_async / { options = { │
00:18:56 verbose #25854 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:18:56 verbose #25855 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:18:56 verbose #25856 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:18:56 verbose #25857 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:18:56 verbose #25858 > > │ 00:00:16 verbose #44 > Creating                                         │
00:18:56 verbose #25859 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/c7418df0ce04ccaab7c │
00:18:56 verbose #25860 > > │ 4d85e07df47a9669ac0ab4f1d50ec3d2fa160947066c1.svg                            │
00:18:56 verbose #25861 > > │ 00:00:16   debug #45 runtime.execute_with_options_async / { exit_code = │
00:18:56 verbose #25862 > > │ 0; output_length = 134 }                                                     │
00:18:56 verbose #25863 > > │                                                                              │
00:18:56 verbose #25864 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:56 verbose #25865 > >
00:18:56 verbose #25866 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:56 verbose #25867 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:56 verbose #25868 > > │ #### system kinetic energy versus time 2                                     │
00:18:56 verbose #25869 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:56 verbose #25870 > >
00:18:56 verbose #25871 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:56 verbose #25872 > > //// test
00:18:56 verbose #25873 > >
00:18:56 verbose #25874 > > inl central_force f (particle_state st1) (particle_state st2) =
00:18:56 verbose #25875 > >     inl r1 = st1.pos_vec
00:18:56 verbose #25876 > >     inl r2 = st2.pos_vec
00:18:56 verbose #25877 > >     inl r21 = r2 ^-^ r1
00:18:56 verbose #25878 > >     inl r21mag = magnitude r21
00:18:56 verbose #25879 > >     f r21mag *^ r21 ^/ r21mag
00:18:56 verbose #25880 > >
00:18:56 verbose #25881 > > inl billiard_force k re =
00:18:56 verbose #25882 > >     inl f r =
00:18:56 verbose #25883 > >         if r >= re
00:18:56 verbose #25884 > >         then 0
00:18:56 verbose #25885 > >         else -k * (r - re)
00:18:56 verbose #25886 > >     central_force f
00:18:56 verbose #25887 > >
00:18:56 verbose #25888 > > type force_vector = vec
00:18:56 verbose #25889 > > type two_body_force = particle_state -> particle_state -> force_vector
00:18:56 verbose #25890 > >
00:18:56 verbose #25891 > > union force t =
00:18:56 verbose #25892 > >     | ExternalForce : t * one_body_force
00:18:56 verbose #25893 > >     | InternalForce : t * t * two_body_force
00:18:56 verbose #25894 > >
00:18:56 verbose #25895 > > nominal multi_particle_state = stream.stream particle_state
00:18:56 verbose #25896 > >
00:18:56 verbose #25897 > > nominal d_multi_particle_state = stream.stream d_particle_state
00:18:56 verbose #25898 > >
00:18:56 verbose #25899 > > inl force_on n s force =
00:18:56 verbose #25900 > >     match force with
00:18:56 verbose #25901 > >     | ExternalForce (n0, f_one_body) =>
00:18:56 verbose #25902 > >         if n = n0
00:18:56 verbose #25903 > >         then f_one_body
00:18:56 verbose #25904 > >         else fun _ => zero_vec ()
00:18:56 verbose #25905 > >     | InternalForce (n0, n1, f_two_body) =>
00:18:56 verbose #25906 > >         if n = n0
00:18:56 verbose #25907 > >         then s |> stream.try_item n1 |> optionm.map f_two_body
00:18:56 verbose #25908 > >         elif n = n1
00:18:56 verbose #25909 > >         then s |> stream.try_item n0 |> optionm.map f_two_body
00:18:56 verbose #25910 > >         else None
00:18:56 verbose #25911 > >         |> optionm'.default_value (fun _ => zero_vec ())
00:18:56 verbose #25912 > >
00:18:56 verbose #25913 > > inl forces_on n (multi_particle_state sts) fs =
00:18:56 verbose #25914 > >     fs
00:18:56 verbose #25915 > >     |> listm.map (force_on n sts)
00:18:56 verbose #25916 > >
00:18:56 verbose #25917 > > inl newton_second_mps fs ((multi_particle_state sts) as mpst) =
00:18:56 verbose #25918 > >     inl deriv (n, st) =
00:18:56 verbose #25919 > >         newton_second_ps (forces_on n mpst fs) st
00:18:56 verbose #25920 > >     sts |> stream.indexed |> stream.map deriv |> d_multi_particle_state
00:18:56 verbose #25921 > >
00:18:56 verbose #25922 > > instance (+++) d_multi_particle_state =
00:18:56 verbose #25923 > >     fun (d_multi_particle_state dsts1) (d_multi_particle_state dsts2) =>
00:18:56 verbose #25924 > >         (dsts1, dsts2)
00:18:56 verbose #25925 > >         ||> stream.zip_with (+++)
00:18:56 verbose #25926 > >         |> d_multi_particle_state
00:18:56 verbose #25927 > >
00:18:56 verbose #25928 > > instance scale d_multi_particle_state = fun w (d_multi_particle_state dsts) =>
00:18:56 verbose #25929 > >     dsts
00:18:56 verbose #25930 > >     |> stream.map (scale w)
00:18:56 verbose #25931 > >     |> d_multi_particle_state
00:18:56 verbose #25932 > >
00:18:56 verbose #25933 > > instance shift multi_particle_state = fun dt dsts (multi_particle_state sts) =>
00:18:56 verbose #25934 > >     inl (d_multi_particle_state dsts) =
00:18:56 verbose #25935 > >         real
00:18:56 verbose #25936 > >             match dsts with
00:18:56 verbose #25937 > >             | d_multi_particle_state _ => dsts
00:18:56 verbose #25938 > >     (dsts, sts)
00:18:56 verbose #25939 > >     ||> stream.zip_with (shift dt)
00:18:56 verbose #25940 > >     |> stream.memoize
00:18:56 verbose #25941 > >     |> fun x => x ()
00:18:56 verbose #25942 > >     |> multi_particle_state
00:18:56 verbose #25943 > >
00:18:56 verbose #25944 > > inl euler_cromer_mps dt : numerical_method multi_particle_state
00:18:56 verbose #25945 > > d_multi_particle_state =
00:18:56 verbose #25946 > >     fun deriv ((multi_particle_state sts0) as mpst0) =>
00:18:56 verbose #25947 > >         inl (multi_particle_state sts1) = euler dt deriv mpst0
00:18:56 verbose #25948 > >         (sts0, sts1)
00:18:56 verbose #25949 > >         ||> stream.zip
00:18:56 verbose #25950 > >         |> stream.map (fun ((particle_state st0), (particle_state st1)) =>
00:18:56 verbose #25951 > >             particle_state {
00:18:56 verbose #25952 > >                 st1 with
00:18:56 verbose #25953 > >                     pos_vec = st0.pos_vec ^+^ st1.velocity ^* dt
00:18:56 verbose #25954 > >             }
00:18:56 verbose #25955 > >         )
00:18:56 verbose #25956 > >         |> multi_particle_state
00:18:56 verbose #25957 > >
00:18:56 verbose #25958 > > inl update_mps (method : numerical_method multi_particle_state
00:18:56 verbose #25959 > > d_multi_particle_state) =
00:18:56 verbose #25960 > >     newton_second_mps >> method
00:18:56 verbose #25961 > >
00:18:56 verbose #25962 > > inl states_mps (method : numerical_method multi_particle_state
00:18:56 verbose #25963 > > d_multi_particle_state) =
00:18:56 verbose #25964 > >     newton_second_mps
00:18:56 verbose #25965 > >     >> method
00:18:56 verbose #25966 > >     >> (fun x (multi_particle_state y) =>
00:18:56 verbose #25967 > >         y
00:18:56 verbose #25968 > >         |> stream.memoize
00:18:56 verbose #25969 > >         |> (fun x => x ())
00:18:56 verbose #25970 > >         |> multi_particle_state |> x
00:18:56 verbose #25971 > >     )
00:18:56 verbose #25972 > >     // >> stream.iterate
00:18:56 verbose #25973 > >     >> seq.iterate'
00:18:56 verbose #25974 > >
00:18:56 verbose #25975 > > inl kinetic_energy (particle_state st) =
00:18:56 verbose #25976 > >     inl m = st.mass
00:18:56 verbose #25977 > >     inl v = magnitude st.velocity
00:18:56 verbose #25978 > >     0.5 * m * v ** 2
00:18:56 verbose #25979 > >
00:18:56 verbose #25980 > > inl system_ke (multi_particle_state sts) =
00:18:56 verbose #25981 > >     sts
00:18:56 verbose #25982 > >     |> stream.map kinetic_energy
00:18:56 verbose #25983 > >     |> stream.sum
00:18:56 verbose #25984 > >
00:18:56 verbose #25985 > > inl linear_spring_pe k re (particle_state st1) (particle_state st2) =
00:18:56 verbose #25986 > >     inl r1 = st1.pos_vec
00:18:56 verbose #25987 > >     inl r2 = st2.pos_vec
00:18:56 verbose #25988 > >     inl r21 = r2 ^-^ r1
00:18:56 verbose #25989 > >     inl r21mag = magnitude r21
00:18:56 verbose #25990 > >     k * (r21mag - re) ** 2 / 2
00:18:56 verbose #25991 > >
00:18:56 verbose #25992 > > inl earth_surface_gravity_pe (particle_state st) =
00:18:56 verbose #25993 > >     inl g = 9.80665
00:18:56 verbose #25994 > >     inl m = st.mass
00:18:56 verbose #25995 > >     inl z = st.pos_vec.z
00:18:56 verbose #25996 > >     m * g * z
00:18:56 verbose #25997 > >
00:18:56 verbose #25998 > > inl ball_radius () = 0.03
00:18:56 verbose #25999 > >
00:18:56 verbose #26000 > > inl billiard_forces k =
00:18:56 verbose #26001 > >     [[ InternalForce (0i32, 1, billiard_force k (2 * ball_radius ())) ]]
00:18:56 verbose #26002 > >
00:18:56 verbose #26003 > > inl billiard_initial () =
00:18:56 verbose #26004 > >     inl ball_mass = 0.160
00:18:56 verbose #26005 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:18:56 verbose #26006 > >     [[
00:18:56 verbose #26007 > >         particle_state {
00:18:56 verbose #26008 > >             default_particle_state' with
00:18:56 verbose #26009 > >                 mass = ball_mass
00:18:56 verbose #26010 > >                 pos_vec = zero_vec ()
00:18:56 verbose #26011 > >                 velocity = 0.2 *^ i_hat ()
00:18:56 verbose #26012 > >         }
00:18:56 verbose #26013 > >         particle_state {
00:18:56 verbose #26014 > >             default_particle_state' with
00:18:56 verbose #26015 > >                 mass = ball_mass
00:18:56 verbose #26016 > >                 pos_vec = i_hat () ^+^ 0.02 *^ j_hat ()
00:18:56 verbose #26017 > >                 velocity = zero_vec ()
00:18:56 verbose #26018 > >         }
00:18:56 verbose #26019 > >     ]]
00:18:56 verbose #26020 > >     |> stream.from_list
00:18:56 verbose #26021 > >     |> multi_particle_state
00:18:56 verbose #26022 > >
00:18:56 verbose #26023 > > inl billiard_states ~n_method k dt =
00:18:56 verbose #26024 > >     states_mps (n_method dt) (billiard_forces k) (billiard_initial ())
00:18:56 verbose #26025 > >
00:18:56 verbose #26026 > > inl billiard_states_finite n_method k dt =
00:18:56 verbose #26027 > >     billiard_states n_method k dt
00:18:56 verbose #26028 > >     >> Some
00:18:56 verbose #26029 > >     |> seq.take_while_ (fun (multi_particle_state mpst) (_ : i32) =>
00:18:56 verbose #26030 > >         match mpst |> stream.try_item 0i32 with
00:18:56 verbose #26031 > >         | Some st =>
00:18:56 verbose #26032 > >             st.time <= 10
00:18:56 verbose #26033 > >         | None => false
00:18:56 verbose #26034 > >     )
00:18:56 verbose #26035 > >
00:18:56 verbose #26036 > > inl momentum (particle_state st) =
00:18:56 verbose #26037 > >     inl m = st.mass
00:18:56 verbose #26038 > >     inl v = st.velocity
00:18:56 verbose #26039 > >     m *^ v
00:18:56 verbose #26040 > >
00:18:56 verbose #26041 > > inl system_p (multi_particle_state sts) =
00:18:56 verbose #26042 > >     sts
00:18:56 verbose #26043 > >     |> stream.map momentum
00:18:56 verbose #26044 > >     |> stream.fold (^+^) (zero_vec ())
00:18:56 verbose #26045 > >
00:18:56 verbose #26046 > > inl time_ke_ec_x, time_ke_ec_y =
00:18:56 verbose #26047 > >     billiard_states_finite euler_cromer_mps 30 0.03
00:18:56 verbose #26048 > >     |> listm.map (fun (multi_particle_state mpst) =>
00:18:56 verbose #26049 > >         mpst |> stream.try_item 0i32
00:18:56 verbose #26050 > >         |> optionm.map (fun st =>
00:18:56 verbose #26051 > >             st.time, system_ke (multi_particle_state mpst)
00:18:56 verbose #26052 > >         )
00:18:56 verbose #26053 > >     )
00:18:56 verbose #26054 > >     // |> stream.to_list
00:18:56 verbose #26055 > >     |> listm'.choose id
00:18:56 verbose #26056 > >     |> listm'.unzip
00:18:56 verbose #26057 > >
00:18:56 verbose #26058 > > inl time_ke_rk4_x, time_ke_rk4_y =
00:18:56 verbose #26059 > >     billiard_states_finite runge_kutta_4 30 0.03
00:18:56 verbose #26060 > >     |> listm.map (fun (multi_particle_state mpst) =>
00:18:56 verbose #26061 > >         mpst |> stream.try_item 0i32
00:18:56 verbose #26062 > >         |> optionm.map (fun st =>
00:18:56 verbose #26063 > >             st.time, system_ke (multi_particle_state mpst)
00:18:56 verbose #26064 > >         )
00:18:56 verbose #26065 > >     )
00:18:56 verbose #26066 > >     // |> stream.to_list
00:18:56 verbose #26067 > >     |> listm'.choose id
00:18:56 verbose #26068 > >     |> listm'.unzip
00:18:56 verbose #26069 > >
00:18:56 verbose #26070 > > inl time_ke_ec_x = time_ke_ec_x |> listm'.box |> listm'.to_array'
00:18:56 verbose #26071 > > inl time_ke_ec_y = time_ke_ec_y |> listm'.box |> listm'.to_array'
00:18:56 verbose #26072 > >
00:18:56 verbose #26073 > > inl time_ke_rk4_x = time_ke_rk4_x |> listm'.box |> listm'.to_array'
00:18:56 verbose #26074 > > inl time_ke_rk4_y = time_ke_rk4_y |> listm'.box |> listm'.to_array'
00:18:56 verbose #26075 > >
00:18:56 verbose #26076 > > "system kinetic energy versus time",
00:18:56 verbose #26077 > > "time (s)",
00:18:56 verbose #26078 > > "system kinetic energy (j)",
00:18:56 verbose #26079 > > ;[[
00:18:56 verbose #26080 > >     "euler-cromer", time_ke_ec_x, time_ke_ec_y
00:18:56 verbose #26081 > >     "runge-kutta 4", time_ke_rk4_x, time_ke_rk4_y
00:18:56 verbose #26082 > > ]]
00:18:57 verbose #26083 > >
00:18:57 verbose #26084 > > ╭─[ 1.53s - return value ]─────────────────────────────────────────────────────╮
00:18:57 verbose #26085 > > │ <svg width="640" height="480" viewBox="0 0 640 480"                          │
00:18:57 verbose #26086 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:18:57 verbose #26087 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:18:57 verbose #26088 > > │ stroke="none"/>                                                              │
00:18:57 verbose #26089 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:18:57 verbose #26090 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:57 verbose #26091 > > │ fill="#FFFFFF">                                                              │
00:18:57 verbose #26092 > > │ system kinetic energy versus time                                            │
00:18:57 verbose #26093 > > │ </text>                                                                      │
00:18:57 verbose #26094 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │
00:18:57 verbose #26095 > > │ y2="75"/>                                                                    │
00:18:57 verbose #26096 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:18:57 verbose #26097 > > │ y2="75"/>                                                                    │
00:18:57 verbose #26098 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │
00:18:57 verbose #26099 > > │ y2="75"/>                                                                    │
00:18:57 verbose #26100 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │
00:18:57 verbose #26101 > > │ y2="75"/>                                                                    │
00:18:57 verbose #26102 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │
00:18:57 verbose #26103 > > │ y2="75"/>                                                                    │
00:18:57 verbose #26104 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424"        │
00:18:57 verbose #26105 > > │ x2="109" y2="75"/>                                                           │
00:18:57 verbose #26106 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424"        │
00:18:57 verbose #26107 > > │ x2="119" y2="75"/>                                                           │
00:18:57 verbose #26108 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424"        │
00:18:57 verbose #26109 > > │ x2="129" y2="75"/>                                                           │
00:18:57 verbose #26110 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424"        │
00:18:57 verbose #26111 > > │ x2="139" y2="75"/>                                                           │
00:18:57 verbose #26112 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424"        │
00:18:57 verbose #26113 > > │ x2="149" y2="75"/>                                                           │
00:18:57 verbose #26114 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424"        │
00:18:57 verbose #26115 > > │ x2="159" y2="75"/>                                                           │
00:18:57 verbose #26116 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424"        │
00:18:57 verbose #26117 > > │ x2="169" y2="75"/>                                                           │
00:18:57 verbose #26118 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424"        │
00:18:57 verbose #26119 > > │ x2="179" y2="75"/>                                                           │
00:18:57 verbose #26120 > > │ ...,104 404,104 405,104 407,104 408,104 410,104 411,104 413,104 414,104      │
00:18:57 verbose #26121 > > │ 416,104 417,104 419,104 420,104 422,104 423,104 425,104 426,104 428,104      │
00:18:57 verbose #26122 > > │ 429,104 431,104 432,104 434,104 435,104 437,104 438,104 440,104 441,104      │
00:18:57 verbose #26123 > > │ 443,104 444,104 446,104 447,104 449,104 450,104 452,104 453,104 455,104      │
00:18:57 verbose #26124 > > │ 456,104 458,104 459,104 461,104 462,104 464,104 465,104 467,104 468,104      │
00:18:57 verbose #26125 > > │ 470,104 471,104 473,104 474,104 476,104 477,104 479,104 480,104 482,104      │
00:18:57 verbose #26126 > > │ 483,104 485,104 486,104 488,104 489,104 491,104 492,104 494,104 495,104      │
00:18:57 verbose #26127 > > │ 497,104 498,104 500,104 501,104 503,104 504,104 506,104 507,104 509,104      │
00:18:57 verbose #26128 > > │ 510,104 512,104 513,104 515,104 516,104 518,104 519,104 521,104 522,104      │
00:18:57 verbose #26129 > > │ 524,104 525,104 527,104 528,104 530,104 531,104 533,104 534,104 536,104      │
00:18:57 verbose #26130 > > │ 537,104 539,104 540,104 542,104 543,104 545,104 546,104 548,104 549,104      │
00:18:57 verbose #26131 > > │ 551,104 552,104 554,104 555,104 557,104 558,104 560,104 561,104 563,104      │
00:18:57 verbose #26132 > > │ 564,104 566,104 567,104 569,104 "/>                                          │
00:18:57 verbose #26133 > > │ <rect x="459" y="227" width="121" height="45" opacity="1" fill="none"        │
00:18:57 verbose #26134 > > │ stroke="#FFFFFF"/>                                                           │
00:18:57 verbose #26135 > > │ <text x="499" y="237" dy="0.76em" text-anchor="start"                        │
00:18:57 verbose #26136 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:57 verbose #26137 > > │ fill="#FFFFFF">                                                              │
00:18:57 verbose #26138 > > │ euler-cromer                                                                 │
00:18:57 verbose #26139 > > │ </text>                                                                      │
00:18:57 verbose #26140 > > │ <text x="499" y="252" dy="0.76em" text-anchor="start"                        │
00:18:57 verbose #26141 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:18:57 verbose #26142 > > │ fill="#FFFFFF">                                                              │
00:18:57 verbose #26143 > > │ runge-kutta 4                                                                │
00:18:57 verbose #26144 > > │ </text>                                                                      │
00:18:57 verbose #26145 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:18:57 verbose #26146 > > │ points="469,242 489,242 "/>                                                  │
00:18:57 verbose #26147 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1"          │
00:18:57 verbose #26148 > > │ points="469,257 489,257 "/>                                                  │
00:18:57 verbose #26149 > > │ </svg>                                                                       │
00:18:57 verbose #26150 > > │                                                                              │
00:18:57 verbose #26151 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:57 verbose #26152 > >
00:18:57 verbose #26153 > > ── markdown ────────────────────────────────────────────────────────────────────
00:18:57 verbose #26154 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:18:57 verbose #26155 > > │ #### wave 2                                                                  │
00:18:57 verbose #26156 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:18:57 verbose #26157 > >
00:18:57 verbose #26158 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:18:57 verbose #26159 > > //// test
00:18:57 verbose #26160 > >
00:18:57 verbose #26161 > > inl linear_spring k re (particle_state st1) (particle_state st2) =
00:18:57 verbose #26162 > >     inl r1 = st1.pos_vec
00:18:57 verbose #26163 > >     inl r2 = st2.pos_vec
00:18:57 verbose #26164 > >     inl r21 = r2 ^-^ r1
00:18:57 verbose #26165 > >     inl r21mag = magnitude r21
00:18:57 verbose #26166 > >     -k * (r21mag - re) *^ r21 ^/ r21mag
00:18:57 verbose #26167 > >
00:18:57 verbose #26168 > > inl fixed_linear_spring k re r1 =
00:18:57 verbose #26169 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:18:57 verbose #26170 > >     linear_spring k re (particle_state { default_particle_state' with pos_vec =
00:18:57 verbose #26171 > > r1 })
00:18:57 verbose #26172 > >
00:18:57 verbose #26173 > > inl forces_string () =
00:18:57 verbose #26174 > >     [[
00:18:57 verbose #26175 > >         ExternalForce (0i32, fixed_linear_spring 5384 0 (zero_vec ()))
00:18:57 verbose #26176 > >         ExternalForce (63, fixed_linear_spring 5384 0 (0.65 *^ i_hat ()))
00:18:57 verbose #26177 > >     ]] ++ (
00:18:57 verbose #26178 > >         listm'.init_series 0 59 1
00:18:57 verbose #26179 > >         |> listm.map (fun n => InternalForce (n, n + 1, linear_spring 5384 0))
00:18:57 verbose #26180 > >     )
00:18:57 verbose #26181 > >
00:18:57 verbose #26182 > > inl string_update dt =
00:18:57 verbose #26183 > >     update_mps (join runge_kutta_4 dt) (join forces_string ())
00:18:57 verbose #26184 > >
00:18:57 verbose #26185 > > inl string_initial_overtone n =
00:18:57 verbose #26186 > >     inl ball_mass = 0.0008293 * 0.65 / 64
00:18:57 verbose #26187 > >     inl (particle_state default_particle_state') = default_particle_state ()
00:18:57 verbose #26188 > >     listm'.init_series 0.01 0.64 0.01
00:18:57 verbose #26189 > >     |> listm.map (fun x =>
00:18:57 verbose #26190 > >         inl y = 0.005 * sin (conv n * pi * x / 0.65)
00:18:57 verbose #26191 > >         particle_state {
00:18:57 verbose #26192 > >             default_particle_state' with
00:18:57 verbose #26193 > >                 mass = ball_mass
00:18:57 verbose #26194 > >                 pos_vec = x *^ i_hat () ^+^ y *^ j_hat ()
00:18:57 verbose #26195 > >                 velocity = zero_vec ()
00:18:57 verbose #26196 > >         }
00:18:57 verbose #26197 > >     )
00:18:57 verbose #26198 > >     |> stream.from_list
00:18:57 verbose #26199 > >     |> multi_particle_state
00:18:57 verbose #26200 > >
00:18:57 verbose #26201 > > let main () =
00:18:57 verbose #26202 > >     inl ~frames = listm'.init_series 0 65 1f64 |> stream.from_list
00:18:57 verbose #26203 > >     inl ~initial_state = string_initial_overtone 3i32
00:18:57 verbose #26204 > >     inl frames =
00:18:57 verbose #26205 > >         frames
00:18:57 verbose #26206 > >         |> stream.map (fun n =>
00:18:57 verbose #26207 > >             inl (multi_particle_state sts) =
00:18:57 verbose #26208 > >                 stream.iterate (string_update 0.000025) initial_state |>
00:18:57 verbose #26209 > > stream.item n
00:18:57 verbose #26210 > >             inl x, y =
00:18:57 verbose #26211 > >                 [[ zero_vec () ]]
00:18:57 verbose #26212 > >                 ++ (sts |> stream.map (fun (particle_state st) => st.pos_vec) |>
00:18:57 verbose #26213 > > stream.to_list)
00:18:57 verbose #26214 > >                 ++ [[ 0.65 *^ i_hat () ]]
00:18:57 verbose #26215 > >                 |> listm.map (fun r => r.x, r.y)
00:18:57 verbose #26216 > >                 |> stream.from_list
00:18:57 verbose #26217 > >                 |> stream.unzip
00:18:57 verbose #26218 > >             inl x = x |> stream.to_list |> listm'.box |> listm'.to_array'
00:18:57 verbose #26219 > >             inl y = y |> stream.to_list |> listm'.box |> listm'.to_array'
00:18:57 verbose #26220 > >             x, y
00:18:57 verbose #26221 > >         )
00:18:57 verbose #26222 > >
00:18:57 verbose #26223 > >     inl plots =
00:18:57 verbose #26224 > >         frames
00:18:57 verbose #26225 > >         |> stream.indexed
00:18:57 verbose #26226 > >         |> stream.map (fun ((n : i32), (x, y)) =>
00:18:57 verbose #26227 > >             "wave",
00:18:57 verbose #26228 > >             "position (m)",
00:18:57 verbose #26229 > >             "displacement (m)",
00:18:57 verbose #26230 > >             ;[[
00:18:57 verbose #26231 > >                 ($'$"{!n}"' : string), x, y
00:18:57 verbose #26232 > >             ]]
00:18:57 verbose #26233 > >         )
00:18:57 verbose #26234 > >
00:18:57 verbose #26235 > >     plots |> stream.to_list |> listm'.box |> listm'.to_array'
00:19:02 verbose #26236 > >
00:19:02 verbose #26237 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:02 verbose #26238 > > ╭─[ 4.53s - diagnostics ]──────────────────────────────────────────────────────╮
00:19:02 verbose #26239 > > │ input.fsx (22,25)-(1084,1085) typecheck warning Incomplete pattern matches   │
00:19:02 verbose #26240 > > │ on this expression. For example, the value 'UH7_1 (_, _, _, _)' may indicate │
00:19:02 verbose #26241 > > │ a case not covered by the pattern(s).                                        │
00:19:02 verbose #26242 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:02 verbose #26243 > >
00:19:02 verbose #26244 > > ╭─[ 4.82s - return value ]─────────────────────────────────────────────────────╮
00:19:02 verbose #26245 > > │ <table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr │
00:19:02 verbose #26246 > > │ ><td>0</td><td><svg width="640" height="480" viewBox="0 0 640 480"           │
00:19:02 verbose #26247 > > │ xmlns="http://www.w3.org/2000/svg">                                          │
00:19:02 verbose #26248 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414"        │
00:19:02 verbose #26249 > > │ stroke="none"/>                                                              │
00:19:02 verbose #26250 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle"                        │
00:19:02 verbose #26251 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:19:02 verbose #26252 > > │ fill="#FFFFFF">                                                              │
00:19:02 verbose #26253 > > │ wave                                                                         │
00:19:02 verbose #26254 > > │ </text>                                                                      │
00:19:02 verbose #26255 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" y1="424" x2="62" │
00:19:02 verbose #26256 > > │ y2="75"/>                                                                    │
00:19:02 verbose #26257 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │
00:19:02 verbose #26258 > > │ y2="75"/>                                                                    │
00:19:02 verbose #26259 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" y1="424" x2="77" │
00:19:02 verbose #26260 > > │ y2="75"/>                                                                    │
00:19:02 verbose #26261 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="85" y1="424" x2="85" │
00:19:02 verbose #26262 > > │ y2="75"/>                                                                    │
00:19:02 verbose #26263 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" y1="424" x2="93" │
00:19:02 verbose #26264 > > │ y2="75"/>                                                                    │
00:19:02 verbose #26265 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="100" y1="424"        │
00:19:02 verbose #26266 > > │ x2="100" y2="75"/>                                                           │
00:19:02 verbose #26267 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="108" y1="424"        │
00:19:02 verbose #26268 > > │ x2="108" y2="75"/>                                                           │
00:19:02 verbose #26269 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="116" y1="424"        │
00:19:02 verbose #26270 > > │ x2="116" y2="75"/>                                                           │
00:19:02 verbose #26271 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="123" y1="424"        │
00:19:02 verbose #26272 > > │ x2="123" y2="75"/>                                                           │
00:19:02 verbose #26273 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="131" y1="424"        │
00:19:02 verbose #26274 > > │ x2="131" y2="75"/>                                                           │
00:19:02 verbose #26275 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424"        │
00:19:02 verbose #26276 > > │ x2="139" y2="75"/>                                                           │
00:19:02 verbose #26277 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="146" y1="424"        │
00:19:02 verbose #26278 > > │ x2="146" y2="75"/>                                                           │
00:19:02 verbose #26279 > > │ <line opacity="1" stroke="#... stroke-width="1" points="585,128 590,128 "/>  │
00:19:02 verbose #26280 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:19:02 verbose #26281 > > │ points="69,363 77,322 85,283 92,246 100,211 107,179 115,151 122,127 130,108  │
00:19:02 verbose #26282 > > │ 138,95 145,87 153,85 160,89 168,99 175,114 183,134 190,159 198,188 205,220   │
00:19:02 verbose #26283 > > │ 212,253 218,284 223,311 226,329 227,337 226,337 224,333 223,334 223,344      │
00:19:02 verbose #26284 > > │ 224,357 225,367 224,370 223,374 224,383 224,393 224,397 224,400 224,406      │
00:19:02 verbose #26285 > > │ 224,411 224,412 224,413 224,415 224,413 224,411 224,409 224,405 224,400      │
00:19:02 verbose #26286 > > │ 224,395 224,388 224,382 224,375 224,367 224,360 224,353 224,346 224,339      │
00:19:02 verbose #26287 > > │ 224,332 224,327 224,322 224,318 224,314 224,312 224,311 539,239 546,279      │
00:19:02 verbose #26288 > > │ 569,403 561,363 "/>                                                          │
00:19:02 verbose #26289 > > │ <rect x="519" y="235" width="61" height="30" opacity="1" fill="none"         │
00:19:02 verbose #26290 > > │ stroke="#FFFFFF"/>                                                           │
00:19:02 verbose #26291 > > │ <text x="559" y="245" dy="0.76em" text-anchor="start"                        │
00:19:02 verbose #26292 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1"            │
00:19:02 verbose #26293 > > │ fill="#FFFFFF">                                                              │
00:19:02 verbose #26294 > > │ 65                                                                           │
00:19:02 verbose #26295 > > │ </text>                                                                      │
00:19:02 verbose #26296 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1"          │
00:19:02 verbose #26297 > > │ points="529,250 549,250 "/>                                                  │
00:19:02 verbose #26298 > > │ </svg>                                                                       │
00:19:02 verbose #26299 > > │ </td></tr></tbody></table><style>                                            │
00:19:02 verbose #26300 > > │ .dni-code-hint {                                                             │
00:19:02 verbose #26301 > > │     font-style: italic;                                                      │
00:19:02 verbose #26302 > > │     overflow: hidden;                                                        │
00:19:02 verbose #26303 > > │     white-space: nowrap;                                                     │
00:19:02 verbose #26304 > > │ }                                                                            │
00:19:02 verbose #26305 > > │ .dni-treeview {                                                              │
00:19:02 verbose #26306 > > │     white-space: nowrap;                                                     │
00:19:02 verbose #26307 > > │ }                                                                            │
00:19:02 verbose #26308 > > │ .dni-treeview td {                                                           │
00:19:02 verbose #26309 > > │     vertical-align: top;                                                     │
00:19:02 verbose #26310 > > │     text-align: start;                                                       │
00:19:02 verbose #26311 > > │ }                                                                            │
00:19:02 verbose #26312 > > │ details.dni-treeview {                                                       │
00:19:02 verbose #26313 > > │     padding-left: 1em;                                                       │
00:19:02 verbose #26314 > > │ }                                                                            │
00:19:02 verbose #26315 > > │ table td {                                                                   │
00:19:02 verbose #26316 > > │     text-align: start;                                                       │
00:19:02 verbose #26317 > > │ }                                                                            │
00:19:02 verbose #26318 > > │ table tr {                                                                   │
00:19:02 verbose #26319 > > │     vertical-align: top;                                                     │
00:19:02 verbose #26320 > > │     margin: 0em 0px;                                                         │
00:19:02 verbose #26321 > > │ }                                                                            │
00:19:02 verbose #26322 > > │ table tr td pre                                                              │
00:19:02 verbose #26323 > > │ {                                                                            │
00:19:02 verbose #26324 > > │     vertical-align: top !important;                                          │
00:19:02 verbose #26325 > > │     margin: 0em 0px !important;                                              │
00:19:02 verbose #26326 > > │ }                                                                            │
00:19:02 verbose #26327 > > │ table th {                                                                   │
00:19:02 verbose #26328 > > │     text-align: start;                                                       │
00:19:02 verbose #26329 > > │ }                                                                            │
00:19:02 verbose #26330 > > │ </style>                                                                     │
00:19:02 verbose #26331 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:02 verbose #26332 > >
00:19:02 verbose #26333 > > ╭─[ 4.82s - stdout ]───────────────────────────────────────────────────────────╮
00:19:02 verbose #26334 > > │ 00:00:22   debug #46 runtime.execute_with_options_async / { options = { │
00:19:02 verbose #26335 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:19:02 verbose #26336 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26337 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26338 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26339 > > │ 00:00:22 verbose #47 > Creating                                         │
00:19:02 verbose #26340 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/25b4386102d4e649cf3 │
00:19:02 verbose #26341 > > │ 6c315e80448a1fa116c091b0086111cf413562ef6255c.svg                            │
00:19:02 verbose #26342 > > │ 00:00:22   debug #48 runtime.execute_with_options_async / { exit_code = │
00:19:02 verbose #26343 > > │ 0; output_length = 134 }                                                     │
00:19:02 verbose #26344 > > │ 00:00:22   debug #49 runtime.execute_with_options_async / { options = { │
00:19:02 verbose #26345 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:19:02 verbose #26346 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26347 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26348 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26349 > > │ 00:00:22 verbose #50 > Creating                                         │
00:19:02 verbose #26350 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/82069ab3443b2210137 │
00:19:02 verbose #26351 > > │ c4a51290d83dc81229748eec3a972a381c54f97272db6.svg                            │
00:19:02 verbose #26352 > > │ 00:00:22   debug #51 runtime.execute_with_options_async / { exit_code = │
00:19:02 verbose #26353 > > │ 0; output_length = 134 }                                                     │
00:19:02 verbose #26354 > > │ 00:00:22   debug #52 runtime.execute_with_options_async / { options = { │
00:19:02 verbose #26355 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:19:02 verbose #26356 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26357 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26358 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26359 > > │ 00:00:22 verbose #53 > Creating                                         │
00:19:02 verbose #26360 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/51198f81dd6b9e00f35 │
00:19:02 verbose #26361 > > │ 6cd50edeac50e389911946af788d2df96b0c3969cc85f.svg                            │
00:19:02 verbose #26362 > > │ 00:00:22   debug #54 runtime.execute_with_options_async / { exit_code = │
00:19:02 verbose #26363 > > │ 0; output_length = 134 }                                                     │
00:19:02 verbose #26364 > > │ 00:00:22   debug #55 runtime.execute_with_options_async / { options = { │
00:19:02 verbose #26365 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:19:02 verbose #26366 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26367 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26368 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26369 > > │ 00:00:22 verbose #56 > Creating                                         │
00:19:02 verbose #26370 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/0da4df708113eca0608 │
00:19:02 verbose #26371 > > │ 92dd4d18bc2025b1151e39abb4b96e26eff2fc4cd6891.svg                            │
00:19:02 verbose #26372 > > │ 00:00:22   debug #57 runtime.execute_with_options_async / { exit_code = │
00:19:02 verbose #26373 > > │ 0; output_length = 134 }                                                     │
00:19:02 verbose #26374 > > │ 00:00:22   debug #58 runtime.execute_with_options_async / { options = { │
00:19:02 verbose #26375 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:19:02 verbose #26376 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26377 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26378 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26379 > > │ 00:00:22 verbose #59 > Creating                                         │
00:19:02 verbose #26380 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/ec21fae8ff726079724 │
00:19:02 verbose #26381 > > │ d8166ca53da39947780d93d63f740978db0416b399df1.svg                            │
00:19:02 verbose #26382 > > │ 00:00:22   debug #60 runtime.execute_with_options_async / { exit_code = │
00:19:02 verbose #26383 > > │ 0; output_length = 134 }                                                     │
00:19:02 verbose #26384 > > │ 00:00:22   debug #61 runtime.execute_with_options_async / { options = { │
00:19:02 verbose #26385 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:19:02 verbose #26386 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26387 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26388 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26389 > > │ 00:00:22 verbose #62 > Creating                                         │
00:19:02 verbose #26390 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/cc3a3d6115cdfd7ee2a │
00:19:02 verbose #26391 > > │ cca31ac52275c998d1e6f6aa7b2316b2c84bde8340094.svg                            │
00:19:02 verbose #26392 > > │ 00:00:22   debug #63 runtime.execute_with_options_async / { exit_code = │
00:19:02 verbose #26393 > > │ 0; output_length = 134 }                                                     │
00:19:02 verbose #26394 > > │ 00:00:22   debug #64 runtime.execute_with_options_async / { options = { │
00:19:02 verbose #26395 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:19:02 verbose #26396 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26397 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26398 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26399 > > │ 00:00:22 verbose #65 > Creating                                         │
00:19:02 verbose #26400 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/f4d4d6212bb5f26b01e │
00:19:02 verbose #26401 > > │ 223e15a54b5cca667ecc4a41c7ac12166812c495d9437.svg                            │
00:19:02 verbose #26402 > > │ 00:00:22   debug #66 runtime.execute_with_options_async / { exit_code = │
00:19:02 verbose #26403 > > │ 0; output_length = 134 }                                                     │
00:19:02 verbose #26404 > > │ 00:00:22   debug #67 runtime.execute_with_options_async / { options = { │
00:19:02 verbose #26405 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:19:02 verbose #26406 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26407 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26408 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26409 > > │ 00:00:22 verbose #68 > Creating                                         │
00:19:02 verbose #26410 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/88e67acda384a3935bf │
00:19:02 verbose #26411 > > │ 09a094a0422796a2f36a7a20876fe7666cf276baba4ca.svg                            │
00:19:02 verbose #26412 > > │ 00:00:22   debug #69 runtime.execute_with_options_async / { exit_code = │
00:19:02 verbose #26413 > > │ 0; output_length = 134 }                                                     │
00:19:02 verbose #26414 > > │ 00:00:22   debug #70 runtime.execute_with_options_async / { options = { │
00:19:02 verbose #26415 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:19:02 verbose #26416 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26417 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26418 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26419 > > │ 00:00:22 verbose #71 > Creating                                         │
00:19:02 verbose #26420 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/0d6dfb91ef9a13fbdc0 │
00:19:02 verbose #26421 > > │ 33c517fa71d9824632e6a73651491210f9e9bb26fdefd.svg                            │
00:19:02 verbose #26422 > > │ 00:00:22   debug #72 runtime.execute_with_options_async / { exit_code = │
00:19:02 verbose #26423 > > │ 0; output_length = 134 }                                                     │
00:19:02 verbose #26424 > > │ 00:00:22   debug #73 runtime.execute_with_options_async / { options = { │
00:19:02 verbose #26425 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:19:02 verbose #26426 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26427 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26428 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26429 > > │ 00:00:22 verbose #74 > Creating                                         │
00:19:02 verbose #26430 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/269ae5518e06880956a │
00:19:02 verbose #26431 > > │ 5a031a71fc0d1003baec1faf97795021ff0849b29f158.svg                            │
00:19:02 verbose #26432 > > │ 00:00:22   debug #75 runtime.execute_with_options_async / { exit_code = │
00:19:02 verbose #26433 > > │ 0; output_length = 134 }                                                     │
00:19:02 verbose #26434 > > │ 00:00:22   debug #76 runtime.execute_with_options_async / { options = { │
00:19:02 verbose #26435 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:19:02 verbose #26436 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26437 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26438 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26439 > > │ 00:00:22 verbose #77 > Creating                                         │
00:19:02 verbose #26440 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/429b425800e5f58efea │
00:19:02 verbose #26441 > > │ 5a9daea343d9a1aac009a6f9c4409f11383c3a86d4c6c.svg                            │
00:19:02 verbose #26442 > > │ 00:00:22   debug #78 runtime.execute_with_options_async / { exit_code = │
00:19:02 verbose #26443 > > │ 0; output_length = 134 }                                                     │
00:19:02 verbose #26444 > > │ 00:00:22   debug #79 runtime.execute_with_options_async / { options = { │
00:19:02 verbose #26445 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:19:02 verbose #26446 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26447 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26448 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26449 > > │ 00:00:22 verbose #80 > Creating                                         │
00:19:02 verbose #26450 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/e5beb9b5144700e5ac0 │
00:19:02 verbose #26451 > > │ 68ff41f7799acb88cbe0b613258014323302a0a3d5a1c.svg                            │
00:19:02 verbose #26452 > > │ 00:00:22   debug #81 runtime.execute_with_options_async / { exit_code = │
00:19:02 verbose #26453 > > │ 0; output_length = 134 }                                                     │
00:19:02 verbose #26454 > > │ 00:00:22   debug #82 runtime.execute_with_options_async / { options = { │
00:19:02 verbose #26455 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:19:02 verbose #26456 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26457 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26458 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26459 > > │ 00:00:22 verbose #83 > Creating                                         │
00:19:02 verbose #26460 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/2543db981b2d7ba78e8 │
00:19:02 verbose #26461 > > │ 905023f1f76b58dd99d61f636fcdc47f85cc5998df0fa.svg                            │
00:19:02 verbose #26462 > > │ 00:00:22   debug #84 runtime.execute_with_options_async / { exit_code = │
00:19:02 verbose #26463 > > │ 0; output_length = 134 }                                                     │
00:19:02 verbose #26464 > > │ 00:00:22   debug #85 runtime.execute_with_options_async / { options = { │
00:19:02 verbose #26465 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:19:02 verbose #26466 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26467 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26468 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26469 > > │ 00:00:22 verbose #86 > Creating                                         │
00:19:02 verbose #26470 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/31bd174c459b1cf6d0e │
00:19:02 verbose #26471 > > │ 9609489ea792da7fb84696f35c6d5e4fcfac01cdb2313.svg                            │
00:19:02 verbose #26472 > > │ 00:00:22   debug #87 runtime.execute_with_options_async / { exit_code = │
00:19:02 verbose #26473 > > │ 0; output_length = 134 }                                                     │
00:19:02 verbose #26474 > > │ 00:00:22   debug #88 runtime.execute_with_options_async / { options = { │
00:19:02 verbose #26475 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:19:02 verbose #26476 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26477 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26478 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26479 > > │ 00:00:22 verbose #89 > Creating                                         │
00:19:02 verbose #26480 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/2055256cd308846fd53 │
00:19:02 verbose #26481 > > │ 25958a010fd6753dabf3ec603ee633dda982c882cc35d.svg                            │
00:19:02 verbose #26482 > > │ 00:00:22   debug #90 runtime.execute_with_options_async / { exit_code = │
00:19:02 verbose #26483 > > │ 0; output_length = 134 }                                                     │
00:19:02 verbose #26484 > > │ 00:00:22   debug #91 runtime.execute_with_options_async / { options = { │
00:19:02 verbose #26485 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:19:02 verbose #26486 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26487 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26488 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26489 > > │ 00:00:22 verbose #92 > Creating                                         │
00:19:02 verbose #26490 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/e36a8f1675ee4d9378c │
00:19:02 verbose #26491 > > │ 2c149f0395e9585eb14793f79a5e1837d9943c8256622.svg                            │
00:19:02 verbose #26492 > > │ 00:00:22   debug #93 runtime.execute_with_options_async / { exit_code = │
00:19:02 verbose #26493 > > │ 0; output_length = 134 }                                                     │
00:19:02 verbose #26494 > > │ 00:00:22   debug #94 runtime.execute_with_options_async / { options = { │
00:19:02 verbose #26495 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:19:02 verbose #26496 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26497 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26498 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26499 > > │ 00:00:22 verbose #95 > Creating                                         │
00:19:02 verbose #26500 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/4e44702e3376bc59cee │
00:19:02 verbose #26501 > > │ f1c5463ef093898efe2659436cc48225aca64585a1eed.svg                            │
00:19:02 verbose #26502 > > │ 00:00:22   debug #96 runtime.execute_with_options_async / { exit_code = │
00:19:02 verbose #26503 > > │ 0; output_length = 134 }                                                     │
00:19:02 verbose #26504 > > │ 00:00:22   debug #97 runtime.execute_with_options_async / { options = { │
00:19:02 verbose #26505 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │
00:19:02 verbose #26506 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26507 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26508 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26509 > > │ 00:00:22 verbose #98 > Creating                                         │
00:19:02 verbose #26510 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/da2dd1e5137917a0b5f │
00:19:02 verbose #26511 > > │ bd320e18d559f3003adee29c16c8b3ddaa90861251def.svg                            │
00:19:02 verbose #26512 > > │ 00:00:22   debug #99 runtime.execute_with_options_async / { exit_code = │
00:19:02 verbose #26513 > > │ 0; output_length = 134 }                                                     │
00:19:02 verbose #26514 > > │ 00:00:22   debug #100 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26515 > > │ { command =                                                                  │
00:19:02 verbose #26516 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26517 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26518 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26519 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26520 > > │ 00:00:22 verbose #101 > Creating                                        │
00:19:02 verbose #26521 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/c8e034f0843c86c31cc │
00:19:02 verbose #26522 > > │ 3c64b5c2dbfc69aa176075142483c6070350a436ad974.svg                            │
00:19:02 verbose #26523 > > │ 00:00:22   debug #102 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26524 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26525 > > │ 00:00:22   debug #103 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26526 > > │ { command =                                                                  │
00:19:02 verbose #26527 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26528 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26529 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26530 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26531 > > │ 00:00:22 verbose #104 > Creating                                        │
00:19:02 verbose #26532 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/d015b6ee7829dec2966 │
00:19:02 verbose #26533 > > │ 0e9e1a8e2c91527fecaf400660e01b1e8c8fc50d64557.svg                            │
00:19:02 verbose #26534 > > │ 00:00:22   debug #105 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26535 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26536 > > │ 00:00:22   debug #106 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26537 > > │ { command =                                                                  │
00:19:02 verbose #26538 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26539 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26540 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26541 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26542 > > │ 00:00:22 verbose #107 > Creating                                        │
00:19:02 verbose #26543 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/6f9e779b344f4181fd8 │
00:19:02 verbose #26544 > > │ 010d1fbddf41de20d850557acba391b3cc908fbe8bfd7.svg                            │
00:19:02 verbose #26545 > > │ 00:00:22   debug #108 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26546 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26547 > > │ 00:00:22   debug #109 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26548 > > │ { command =                                                                  │
00:19:02 verbose #26549 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26550 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26551 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26552 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26553 > > │ 00:00:22 verbose #110 > Creating                                        │
00:19:02 verbose #26554 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/e20cc83d71d3b2e4fb0 │
00:19:02 verbose #26555 > > │ 37effa299afb3ae5fbad79a76be4333412b0afad44247.svg                            │
00:19:02 verbose #26556 > > │ 00:00:22   debug #111 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26557 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26558 > > │ 00:00:22   debug #112 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26559 > > │ { command =                                                                  │
00:19:02 verbose #26560 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26561 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26562 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26563 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26564 > > │ 00:00:22 verbose #113 > Creating                                        │
00:19:02 verbose #26565 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/552767eafba3ce30973 │
00:19:02 verbose #26566 > > │ 54bb928d9dd9d0af565a8b70940a42e08f6ad067d70a7.svg                            │
00:19:02 verbose #26567 > > │ 00:00:22   debug #114 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26568 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26569 > > │ 00:00:22   debug #115 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26570 > > │ { command =                                                                  │
00:19:02 verbose #26571 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26572 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26573 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26574 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26575 > > │ 00:00:22 verbose #116 > Creating                                        │
00:19:02 verbose #26576 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/a27eac8f69f101def5f │
00:19:02 verbose #26577 > > │ a6b4c8cebc059d503808937bc367d9d3608cec2712613.svg                            │
00:19:02 verbose #26578 > > │ 00:00:22   debug #117 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26579 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26580 > > │ 00:00:22   debug #118 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26581 > > │ { command =                                                                  │
00:19:02 verbose #26582 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26583 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26584 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26585 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26586 > > │ 00:00:22 verbose #119 > Creating                                        │
00:19:02 verbose #26587 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/f8d04b749068750046e │
00:19:02 verbose #26588 > > │ 5d0d76166fc42fe00e40d9e14143a48b9f18612895d93.svg                            │
00:19:02 verbose #26589 > > │ 00:00:22   debug #120 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26590 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26591 > > │ 00:00:22   debug #121 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26592 > > │ { command =                                                                  │
00:19:02 verbose #26593 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26594 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26595 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26596 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26597 > > │ 00:00:22 verbose #122 > Creating                                        │
00:19:02 verbose #26598 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/e05df3b8d5b0fca4273 │
00:19:02 verbose #26599 > > │ 5e5703316d5517e51dfac741018f80bcd59ecd3a56299.svg                            │
00:19:02 verbose #26600 > > │ 00:00:22   debug #123 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26601 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26602 > > │ 00:00:22   debug #124 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26603 > > │ { command =                                                                  │
00:19:02 verbose #26604 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26605 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26606 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26607 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26608 > > │ 00:00:22 verbose #125 > Creating                                        │
00:19:02 verbose #26609 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/b40e8a5b3c77f4513a6 │
00:19:02 verbose #26610 > > │ 29f118c91a77d5bdbde27147178a46ca1cfde97c15836.svg                            │
00:19:02 verbose #26611 > > │ 00:00:22   debug #126 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26612 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26613 > > │ 00:00:22   debug #127 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26614 > > │ { command =                                                                  │
00:19:02 verbose #26615 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26616 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26617 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26618 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26619 > > │ 00:00:22 verbose #128 > Creating                                        │
00:19:02 verbose #26620 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/1e50fc8bee6db0bae99 │
00:19:02 verbose #26621 > > │ 1559de569c542a977cc7f6ee8e358cc7e684dd7a2f7f2.svg                            │
00:19:02 verbose #26622 > > │ 00:00:22   debug #129 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26623 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26624 > > │ 00:00:22   debug #130 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26625 > > │ { command =                                                                  │
00:19:02 verbose #26626 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26627 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26628 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26629 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26630 > > │ 00:00:22 verbose #131 > Creating                                        │
00:19:02 verbose #26631 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/fbb3fc7d0cd000d1f3d │
00:19:02 verbose #26632 > > │ 5af25ecb9116851889fb7032aa024dd3767bf1dc9de2e.svg                            │
00:19:02 verbose #26633 > > │ 00:00:22   debug #132 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26634 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26635 > > │ 00:00:22   debug #133 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26636 > > │ { command =                                                                  │
00:19:02 verbose #26637 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26638 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26639 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26640 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26641 > > │ 00:00:22 verbose #134 > Creating                                        │
00:19:02 verbose #26642 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/a0ee0690d9ef0a1e154 │
00:19:02 verbose #26643 > > │ 7f259ca0d88a4510ec89dc61a7ffe0147e09ea2eb165a.svg                            │
00:19:02 verbose #26644 > > │ 00:00:22   debug #135 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26645 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26646 > > │ 00:00:22   debug #136 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26647 > > │ { command =                                                                  │
00:19:02 verbose #26648 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26649 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26650 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26651 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26652 > > │ 00:00:22 verbose #137 > Creating                                        │
00:19:02 verbose #26653 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/8b62f10b9d3b9706823 │
00:19:02 verbose #26654 > > │ 9e496cb7c5aa68b000dc2f78c5eba0b7fa19a7ebdd50c.svg                            │
00:19:02 verbose #26655 > > │ 00:00:22   debug #138 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26656 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26657 > > │ 00:00:22   debug #139 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26658 > > │ { command =                                                                  │
00:19:02 verbose #26659 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26660 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26661 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26662 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26663 > > │ 00:00:22 verbose #140 > Creating                                        │
00:19:02 verbose #26664 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/6cc8f1c7e432d3649cb │
00:19:02 verbose #26665 > > │ 9fdf9f9f7b7f384c65eacd3fb94e319272fe70dd633bf.svg                            │
00:19:02 verbose #26666 > > │ 00:00:22   debug #141 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26667 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26668 > > │ 00:00:22   debug #142 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26669 > > │ { command =                                                                  │
00:19:02 verbose #26670 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26671 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26672 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26673 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26674 > > │ 00:00:22 verbose #143 > Creating                                        │
00:19:02 verbose #26675 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/ab40690e836b63af01e │
00:19:02 verbose #26676 > > │ 2c82ea8febe670e52e11eb049e40c93bb8f8e5cf97c9e.svg                            │
00:19:02 verbose #26677 > > │ 00:00:22   debug #144 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26678 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26679 > > │ 00:00:22   debug #145 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26680 > > │ { command =                                                                  │
00:19:02 verbose #26681 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26682 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26683 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26684 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26685 > > │ 00:00:22 verbose #146 > Creating                                        │
00:19:02 verbose #26686 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/4eb829ca41667f43116 │
00:19:02 verbose #26687 > > │ d4631600e2dd123ca25ee7aa279f194251ee36431ea91.svg                            │
00:19:02 verbose #26688 > > │ 00:00:22   debug #147 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26689 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26690 > > │ 00:00:22   debug #148 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26691 > > │ { command =                                                                  │
00:19:02 verbose #26692 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26693 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26694 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26695 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26696 > > │ 00:00:22 verbose #149 > Creating                                        │
00:19:02 verbose #26697 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/da621a77ae85752953b │
00:19:02 verbose #26698 > > │ 1719c771c787f3c3594be470ba4dfb5ad8f63ff882412.svg                            │
00:19:02 verbose #26699 > > │ 00:00:22   debug #150 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26700 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26701 > > │ 00:00:22   debug #151 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26702 > > │ { command =                                                                  │
00:19:02 verbose #26703 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26704 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26705 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26706 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26707 > > │ 00:00:22 verbose #152 > Creating                                        │
00:19:02 verbose #26708 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/4c133a696111e9637bd │
00:19:02 verbose #26709 > > │ 800e10894b783253b1784f74a3e6562560f4f0d0e1de9.svg                            │
00:19:02 verbose #26710 > > │ 00:00:22   debug #153 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26711 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26712 > > │ 00:00:22   debug #154 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26713 > > │ { command =                                                                  │
00:19:02 verbose #26714 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26715 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26716 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26717 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26718 > > │ 00:00:22 verbose #155 > Creating                                        │
00:19:02 verbose #26719 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/b4cf46b7a1116f7ff2b │
00:19:02 verbose #26720 > > │ eea0f19067a0b69d8d2633074b74c7fa2e9419537bbe4.svg                            │
00:19:02 verbose #26721 > > │ 00:00:22   debug #156 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26722 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26723 > > │ 00:00:22   debug #157 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26724 > > │ { command =                                                                  │
00:19:02 verbose #26725 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26726 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26727 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26728 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26729 > > │ 00:00:22 verbose #158 > Creating                                        │
00:19:02 verbose #26730 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/8228a67a385c42598d6 │
00:19:02 verbose #26731 > > │ 5c8b0e86e8a53b5c32d9a669f5161004e7021b2aad6e3.svg                            │
00:19:02 verbose #26732 > > │ 00:00:22   debug #159 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26733 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26734 > > │ 00:00:22   debug #160 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26735 > > │ { command =                                                                  │
00:19:02 verbose #26736 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26737 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26738 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26739 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26740 > > │ 00:00:22 verbose #161 > Creating                                        │
00:19:02 verbose #26741 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/2d27f0a40a52e488f83 │
00:19:02 verbose #26742 > > │ 64971acea754a0034827c30ac23090ccf8e8afe1d5208.svg                            │
00:19:02 verbose #26743 > > │ 00:00:22   debug #162 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26744 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26745 > > │ 00:00:22   debug #163 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26746 > > │ { command =                                                                  │
00:19:02 verbose #26747 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26748 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26749 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26750 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26751 > > │ 00:00:22 verbose #164 > Creating                                        │
00:19:02 verbose #26752 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/f398230047e42f5b916 │
00:19:02 verbose #26753 > > │ 0ad9fa4a4a30d67def46763ac4e778955ca67702061d8.svg                            │
00:19:02 verbose #26754 > > │ 00:00:22   debug #165 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26755 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26756 > > │ 00:00:22   debug #166 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26757 > > │ { command =                                                                  │
00:19:02 verbose #26758 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26759 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26760 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26761 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26762 > > │ 00:00:22 verbose #167 > Creating                                        │
00:19:02 verbose #26763 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/ba31ccdfae8fca85790 │
00:19:02 verbose #26764 > > │ e9739a135e4599266c38003ca58db428cf83acd3bb12e.svg                            │
00:19:02 verbose #26765 > > │ 00:00:22   debug #168 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26766 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26767 > > │ 00:00:22   debug #169 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26768 > > │ { command =                                                                  │
00:19:02 verbose #26769 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26770 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26771 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26772 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26773 > > │ 00:00:22 verbose #170 > Creating                                        │
00:19:02 verbose #26774 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/780ead643b98b8af35c │
00:19:02 verbose #26775 > > │ 6ffc815ccde029abf9e61684b1372ede9e07e38c947fe.svg                            │
00:19:02 verbose #26776 > > │ 00:00:22   debug #171 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26777 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26778 > > │ 00:00:22   debug #172 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26779 > > │ { command =                                                                  │
00:19:02 verbose #26780 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26781 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26782 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26783 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26784 > > │ 00:00:22 verbose #173 > Creating                                        │
00:19:02 verbose #26785 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/10bf803f5dd7d69401f │
00:19:02 verbose #26786 > > │ e1e381285b4d67bb5e2f3a1c11e154f395b0625aaa81a.svg                            │
00:19:02 verbose #26787 > > │ 00:00:22   debug #174 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26788 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26789 > > │ 00:00:22   debug #175 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26790 > > │ { command =                                                                  │
00:19:02 verbose #26791 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26792 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26793 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26794 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26795 > > │ 00:00:22 verbose #176 > Creating                                        │
00:19:02 verbose #26796 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/400b1e51fa7a1425882 │
00:19:02 verbose #26797 > > │ 57ddb414c0a31a2b251bceb6690a25e4dfbdb9b436d1c.svg                            │
00:19:02 verbose #26798 > > │ 00:00:22   debug #177 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26799 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26800 > > │ 00:00:22   debug #178 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26801 > > │ { command =                                                                  │
00:19:02 verbose #26802 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26803 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26804 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26805 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26806 > > │ 00:00:22 verbose #179 > Creating                                        │
00:19:02 verbose #26807 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/04074dcfa8c9444af4b │
00:19:02 verbose #26808 > > │ cf09bf944b37caa36f05fb020fa972ae58171bba415e1.svg                            │
00:19:02 verbose #26809 > > │ 00:00:22   debug #180 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26810 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26811 > > │ 00:00:22   debug #181 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26812 > > │ { command =                                                                  │
00:19:02 verbose #26813 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26814 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26815 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26816 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26817 > > │ 00:00:22 verbose #182 > Creating                                        │
00:19:02 verbose #26818 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/988cea705b16ac29a20 │
00:19:02 verbose #26819 > > │ 07ee4aea8dea72c7adef2889dd956ad5487d25e12b369.svg                            │
00:19:02 verbose #26820 > > │ 00:00:22   debug #183 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26821 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26822 > > │ 00:00:22   debug #184 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26823 > > │ { command =                                                                  │
00:19:02 verbose #26824 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26825 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26826 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26827 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26828 > > │ 00:00:22 verbose #185 > Creating                                        │
00:19:02 verbose #26829 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/31ff79312dc9242531f │
00:19:02 verbose #26830 > > │ 49bdaac4b1ef4df454de8e801dcbaaea5a774015733e9.svg                            │
00:19:02 verbose #26831 > > │ 00:00:22   debug #186 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26832 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26833 > > │ 00:00:22   debug #187 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26834 > > │ { command =                                                                  │
00:19:02 verbose #26835 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26836 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26837 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26838 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26839 > > │ 00:00:22 verbose #188 > Creating                                        │
00:19:02 verbose #26840 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/8f27371f86a551c5ea3 │
00:19:02 verbose #26841 > > │ 0fe882e5b6cb3028d89ad84e6c71144dc12250a6f6848.svg                            │
00:19:02 verbose #26842 > > │ 00:00:22   debug #189 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26843 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26844 > > │ 00:00:22   debug #190 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26845 > > │ { command =                                                                  │
00:19:02 verbose #26846 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26847 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26848 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26849 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26850 > > │ 00:00:22 verbose #191 > Creating                                        │
00:19:02 verbose #26851 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/afc52222ff828d5c960 │
00:19:02 verbose #26852 > > │ 13fd771aff43b465546b50555499413d4f080e9026d87.svg                            │
00:19:02 verbose #26853 > > │ 00:00:22   debug #192 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26854 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26855 > > │ 00:00:22   debug #193 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26856 > > │ { command =                                                                  │
00:19:02 verbose #26857 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26858 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26859 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26860 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26861 > > │ 00:00:22 verbose #194 > Creating                                        │
00:19:02 verbose #26862 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/01e5051d655ef25e1c5 │
00:19:02 verbose #26863 > > │ e09370fee684bfc2aa1f099acec9c46c60656266b3f8c.svg                            │
00:19:02 verbose #26864 > > │ 00:00:22   debug #195 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26865 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26866 > > │ 00:00:22   debug #196 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26867 > > │ { command =                                                                  │
00:19:02 verbose #26868 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26869 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26870 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26871 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26872 > > │ 00:00:22 verbose #197 > Creating                                        │
00:19:02 verbose #26873 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/5588421d5672a19d3d5 │
00:19:02 verbose #26874 > > │ 8374d08bff6cbc79cf882258d65127325dd80c4869f31.svg                            │
00:19:02 verbose #26875 > > │ 00:00:22   debug #198 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26876 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26877 > > │ 00:00:22   debug #199 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26878 > > │ { command =                                                                  │
00:19:02 verbose #26879 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26880 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26881 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26882 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26883 > > │ 00:00:22 verbose #200 > Creating                                        │
00:19:02 verbose #26884 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/719cf660228f57fd884 │
00:19:02 verbose #26885 > > │ 7d696090075444289b6dd7fb5fd3d15959d463ff28dd4.svg                            │
00:19:02 verbose #26886 > > │ 00:00:22   debug #201 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26887 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26888 > > │ 00:00:22   debug #202 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26889 > > │ { command =                                                                  │
00:19:02 verbose #26890 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26891 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26892 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26893 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26894 > > │ 00:00:22 verbose #203 > Creating                                        │
00:19:02 verbose #26895 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/3937c309891869cde17 │
00:19:02 verbose #26896 > > │ 82a676801b77a082e459f8541d1e05a7516c2d6a3a72b.svg                            │
00:19:02 verbose #26897 > > │ 00:00:22   debug #204 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26898 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26899 > > │ 00:00:22   debug #205 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26900 > > │ { command =                                                                  │
00:19:02 verbose #26901 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26902 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26903 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26904 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26905 > > │ 00:00:22 verbose #206 > Creating                                        │
00:19:02 verbose #26906 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/3d48c97a72e450bf34c │
00:19:02 verbose #26907 > > │ b16f39f9fa7a60c4f643c0f2eb8d8bc1832fda0e3cd54.svg                            │
00:19:02 verbose #26908 > > │ 00:00:22   debug #207 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26909 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26910 > > │ 00:00:22   debug #208 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26911 > > │ { command =                                                                  │
00:19:02 verbose #26912 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26913 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26914 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26915 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26916 > > │ 00:00:22 verbose #209 > Creating                                        │
00:19:02 verbose #26917 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/723726570af61bed1da │
00:19:02 verbose #26918 > > │ a85181582acdd1a38621d0127fb5bb285a52cbca9c55e.svg                            │
00:19:02 verbose #26919 > > │ 00:00:22   debug #210 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26920 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26921 > > │ 00:00:22   debug #211 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26922 > > │ { command =                                                                  │
00:19:02 verbose #26923 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26924 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26925 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26926 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26927 > > │ 00:00:22 verbose #212 > Creating                                        │
00:19:02 verbose #26928 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/41edb0d06298b6a2b77 │
00:19:02 verbose #26929 > > │ e6b0b0f8181d07eae00c470242422c86f2d3a9df20f2c.svg                            │
00:19:02 verbose #26930 > > │ 00:00:22   debug #213 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26931 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26932 > > │ 00:00:22   debug #214 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26933 > > │ { command =                                                                  │
00:19:02 verbose #26934 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26935 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26936 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26937 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26938 > > │ 00:00:22 verbose #215 > Creating                                        │
00:19:02 verbose #26939 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/ecdf43a5e27f3b42643 │
00:19:02 verbose #26940 > > │ 4ff6d5c263120f68db972ab74626ec1f04425e21353be.svg                            │
00:19:02 verbose #26941 > > │ 00:00:22   debug #216 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26942 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26943 > > │ 00:00:22   debug #217 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26944 > > │ { command =                                                                  │
00:19:02 verbose #26945 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26946 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26947 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26948 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26949 > > │ 00:00:22 verbose #218 > Creating                                        │
00:19:02 verbose #26950 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/f4e498f816d3ebaa617 │
00:19:02 verbose #26951 > > │ 01bfb8382cad124f71ed3342c3db593fdc4baa294e95f.svg                            │
00:19:02 verbose #26952 > > │ 00:00:22   debug #219 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26953 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26954 > > │ 00:00:22   debug #220 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26955 > > │ { command =                                                                  │
00:19:02 verbose #26956 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26957 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26958 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26959 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26960 > > │ 00:00:23 verbose #221 > Creating                                        │
00:19:02 verbose #26961 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/d101f682dfddc088e75 │
00:19:02 verbose #26962 > > │ 79974ced37aa327a3bb1ae0ed5025b005fa24ea15a7dc.svg                            │
00:19:02 verbose #26963 > > │ 00:00:23   debug #222 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26964 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26965 > > │ 00:00:23   debug #223 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26966 > > │ { command =                                                                  │
00:19:02 verbose #26967 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26968 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26969 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26970 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26971 > > │ 00:00:23 verbose #224 > Creating                                        │
00:19:02 verbose #26972 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/bc8871e382c35fb2841 │
00:19:02 verbose #26973 > > │ 03c8eca5f2c1b7b3aabf0dfe7a88637d96bb558d749ab.svg                            │
00:19:02 verbose #26974 > > │ 00:00:23   debug #225 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26975 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26976 > > │ 00:00:23   debug #226 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26977 > > │ { command =                                                                  │
00:19:02 verbose #26978 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26979 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26980 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26981 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26982 > > │ 00:00:23 verbose #227 > Creating                                        │
00:19:02 verbose #26983 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/810be92ead3834fd2f9 │
00:19:02 verbose #26984 > > │ daf062ebd24ad35f15e24dce54aa82d69e13a2158a733.svg                            │
00:19:02 verbose #26985 > > │ 00:00:23   debug #228 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26986 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26987 > > │ 00:00:23   debug #229 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26988 > > │ { command =                                                                  │
00:19:02 verbose #26989 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #26990 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #26991 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #26992 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #26993 > > │ 00:00:23 verbose #230 > Creating                                        │
00:19:02 verbose #26994 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/8c23dcf0c85bba40477 │
00:19:02 verbose #26995 > > │ a6dc081dfef35f4ea67e9ad5731e1b83eeb9ce13418e0.svg                            │
00:19:02 verbose #26996 > > │ 00:00:23   debug #231 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #26997 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #26998 > > │ 00:00:23   debug #232 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #26999 > > │ { command =                                                                  │
00:19:02 verbose #27000 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #27001 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #27002 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #27003 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #27004 > > │ 00:00:23 verbose #233 > Creating                                        │
00:19:02 verbose #27005 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/00c79858fdfeff82c99 │
00:19:02 verbose #27006 > > │ 76e8339acf00f55b7911d85d3a5549512a823160750f1.svg                            │
00:19:02 verbose #27007 > > │ 00:00:23   debug #234 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #27008 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #27009 > > │ 00:00:23   debug #235 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #27010 > > │ { command =                                                                  │
00:19:02 verbose #27011 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #27012 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #27013 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #27014 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #27015 > > │ 00:00:23 verbose #236 > Creating                                        │
00:19:02 verbose #27016 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/248aa1496994a15d405 │
00:19:02 verbose #27017 > > │ a052aab722597383eb415943b4e9a72c87961aad83430.svg                            │
00:19:02 verbose #27018 > > │ 00:00:23   debug #237 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #27019 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #27020 > > │ 00:00:23   debug #238 runtime.execute_with_options_async / { options =  │
00:19:02 verbose #27021 > > │ { command =                                                                  │
00:19:02 verbose #27022 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot;           │
00:19:02 verbose #27023 > > │ cancellation_token = Some System.Threading.CancellationToken;                │
00:19:02 verbose #27024 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true;    │
00:19:02 verbose #27025 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } }           │
00:19:02 verbose #27026 > > │ 00:00:23 verbose #239 > Creating                                        │
00:19:02 verbose #27027 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/bede6e595697b6a21a1 │
00:19:02 verbose #27028 > > │ b37ce58511f9e5adf6df47f0174d56d18df06b722c982.svg                            │
00:19:02 verbose #27029 > > │ 00:00:23   debug #240 runtime.execute_with_options_async / { exit_code  │
00:19:02 verbose #27030 > > │ = 0; output_length = 134 }                                                   │
00:19:02 verbose #27031 > > │                                                                              │
00:19:02 verbose #27032 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:02 verbose #27033 > >
00:19:02 verbose #27034 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:02 verbose #27035 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:02 verbose #27036 > > │ ## end                                                                       │
00:19:02 verbose #27037 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:03 verbose #27038 > 00:00:34 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 289843 }
00:19:03 verbose #27039 > 00:00:34   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:19:03 verbose #27040 >     "nbconvert",
00:19:03 verbose #27041 >     "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb",
00:19:03 verbose #27042 >     "--to",
00:19:03 verbose #27043 >     "html",
00:19:03 verbose #27044 >     "--HTMLExporter.theme=dark",
00:19:03 verbose #27045 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:03 verbose #27046 > 00:00:34 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb to html
00:19:03 verbose #27047 > 00:00:34 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:19:03 verbose #27048 > 00:00:34 verbose #7 !   validate(nb)
00:19:04 verbose #27049 > 00:00:35 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:19:04 verbose #27050 > 00:00:35 verbose #9 !   return _pygments_highlight(
00:19:06 verbose #27051 > 00:00:37 verbose #10 ! [NbConvertApp] Writing 2570587 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.html
00:19:06 verbose #27052 > 00:00:37 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 899 }
00:19:06 verbose #27053 > 00:00:37   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 899 }
00:19:06 verbose #27054 > 00:00:37   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:19:06 verbose #27055 >     "-c",
00:19:06 verbose #27056 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:19:06 verbose #27057 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:06 verbose #27058 > 00:00:38 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:19:06 verbose #27059 > 00:00:38   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:19:06 verbose #27060 > 00:00:38   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 290801 }
00:19:06   debug #27061 runtime.execute_with_options_async / { exit_code = 0; output_length = 301314 }
00:19:06   debug #31 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path physics.dib --retries 3
00:19:06   debug #27062 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path seq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:06 verbose #27063 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "seq.dib", "--retries", "3"])) }
00:19:06 verbose #27064 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:19:06 verbose #27065 >     "repl",
00:19:06 verbose #27066 >     "--exit-after-run",
00:19:06 verbose #27067 >     "--run",
00:19:06 verbose #27068 >     "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib",
00:19:06 verbose #27069 >     "--output-path",
00:19:06 verbose #27070 >     "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb",
00:19:06 verbose #27071 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:19:08 verbose #27072 > >
00:19:08 verbose #27073 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:08 verbose #27074 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:08 verbose #27075 > > │ # seq                                                                        │
00:19:08 verbose #27076 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:10 verbose #27077 > >
00:19:10 verbose #27078 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:10 verbose #27079 > > //// test
00:19:10 verbose #27080 > >
00:19:10 verbose #27081 > > open testing
00:19:11 verbose #27082 > >
00:19:11 verbose #27083 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:11 verbose #27084 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:11 verbose #27085 > > │ ## seq                                                                       │
00:19:11 verbose #27086 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:11 verbose #27087 > >
00:19:11 verbose #27088 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:11 verbose #27089 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:11 verbose #27090 > > │ ### seq                                                                      │
00:19:11 verbose #27091 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:11 verbose #27092 > >
00:19:11 verbose #27093 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:11 verbose #27094 > > type seq dim el = dim -> option el
00:19:11 verbose #27095 > >
00:19:11 verbose #27096 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:11 verbose #27097 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:11 verbose #27098 > > │ ### try_item                                                                 │
00:19:11 verbose #27099 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:11 verbose #27100 > >
00:19:11 verbose #27101 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:11 verbose #27102 > > inl try_item n s =
00:19:11 verbose #27103 > >     n |> s
00:19:11 verbose #27104 > >
00:19:11 verbose #27105 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:11 verbose #27106 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:11 verbose #27107 > > │ ### from_list                                                                │
00:19:11 verbose #27108 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:11 verbose #27109 > >
00:19:11 verbose #27110 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:11 verbose #27111 > > inl from_list list =
00:19:11 verbose #27112 > >     fun n =>
00:19:11 verbose #27113 > >         list
00:19:11 verbose #27114 > >         |> listm'.try_item n
00:19:11 verbose #27115 > >
00:19:11 verbose #27116 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:11 verbose #27117 > > //// test
00:19:11 verbose #27118 > >
00:19:11 verbose #27119 > > listm.init 10i32 print_and_return
00:19:11 verbose #27120 > > |> from_list
00:19:11 verbose #27121 > > |> try_item 5i32
00:19:11 verbose #27122 > > |> _assert_eq (Some 5i32)
00:19:12 verbose #27123 > >
00:19:12 verbose #27124 > > ╭─[ 1.03s - stdout ]───────────────────────────────────────────────────────────╮
00:19:12 verbose #27125 > > │ print_and_return / x: 0                                                      │
00:19:12 verbose #27126 > > │ print_and_return / x: 1                                                      │
00:19:12 verbose #27127 > > │ print_and_return / x: 2                                                      │
00:19:12 verbose #27128 > > │ print_and_return / x: 3                                                      │
00:19:12 verbose #27129 > > │ print_and_return / x: 4                                                      │
00:19:12 verbose #27130 > > │ print_and_return / x: 5                                                      │
00:19:12 verbose #27131 > > │ print_and_return / x: 6                                                      │
00:19:12 verbose #27132 > > │ print_and_return / x: 7                                                      │
00:19:12 verbose #27133 > > │ print_and_return / x: 8                                                      │
00:19:12 verbose #27134 > > │ print_and_return / x: 9                                                      │
00:19:12 verbose #27135 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5                            │
00:19:12 verbose #27136 > > │                                                                              │
00:19:12 verbose #27137 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:12 verbose #27138 > >
00:19:12 verbose #27139 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:12 verbose #27140 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:12 verbose #27141 > > │ ### map                                                                      │
00:19:12 verbose #27142 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:12 verbose #27143 > >
00:19:12 verbose #27144 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:12 verbose #27145 > > inl map fn s =
00:19:12 verbose #27146 > >     fun n =>
00:19:12 verbose #27147 > >         n
00:19:12 verbose #27148 > >         |> s
00:19:12 verbose #27149 > >         |> optionm.map fn
00:19:12 verbose #27150 > >
00:19:12 verbose #27151 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:12 verbose #27152 > > //// test
00:19:12 verbose #27153 > >
00:19:12 verbose #27154 > > listm.init 10i32 id
00:19:12 verbose #27155 > > |> from_list
00:19:12 verbose #27156 > > |> map ((*) 2)
00:19:12 verbose #27157 > > |> try_item 5i32
00:19:12 verbose #27158 > > |> _assert_eq (Some 10i32)
00:19:12 verbose #27159 > >
00:19:12 verbose #27160 > > ╭─[ 116.11ms - stdout ]────────────────────────────────────────────────────────╮
00:19:12 verbose #27161 > > │ __assert_eq / actual: US0_0 10 / expected: US0_0 10                          │
00:19:12 verbose #27162 > > │                                                                              │
00:19:12 verbose #27163 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:12 verbose #27164 > >
00:19:12 verbose #27165 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:12 verbose #27166 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:12 verbose #27167 > > │ ### mapi                                                                     │
00:19:12 verbose #27168 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:12 verbose #27169 > >
00:19:12 verbose #27170 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:12 verbose #27171 > > inl mapi fn s =
00:19:12 verbose #27172 > >     fun n =>
00:19:12 verbose #27173 > >         n
00:19:12 verbose #27174 > >         |> s
00:19:12 verbose #27175 > >         |> optionm.map (fn n)
00:19:12 verbose #27176 > >
00:19:12 verbose #27177 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:12 verbose #27178 > > //// test
00:19:12 verbose #27179 > >
00:19:12 verbose #27180 > > listm.init 10i32 print_and_return
00:19:12 verbose #27181 > > |> from_list
00:19:12 verbose #27182 > > |> mapi fun i x => i + x
00:19:12 verbose #27183 > > |> try_item 5i32
00:19:12 verbose #27184 > > |> _assert_eq (Some 10i32)
00:19:13 verbose #27185 > >
00:19:13 verbose #27186 > > ╭─[ 132.62ms - stdout ]────────────────────────────────────────────────────────╮
00:19:13 verbose #27187 > > │ print_and_return / x: 0                                                      │
00:19:13 verbose #27188 > > │ print_and_return / x: 1                                                      │
00:19:13 verbose #27189 > > │ print_and_return / x: 2                                                      │
00:19:13 verbose #27190 > > │ print_and_return / x: 3                                                      │
00:19:13 verbose #27191 > > │ print_and_return / x: 4                                                      │
00:19:13 verbose #27192 > > │ print_and_return / x: 5                                                      │
00:19:13 verbose #27193 > > │ print_and_return / x: 6                                                      │
00:19:13 verbose #27194 > > │ print_and_return / x: 7                                                      │
00:19:13 verbose #27195 > > │ print_and_return / x: 8                                                      │
00:19:13 verbose #27196 > > │ print_and_return / x: 9                                                      │
00:19:13 verbose #27197 > > │ __assert_eq / actual: US0_0 10 / expected: US0_0 10                          │
00:19:13 verbose #27198 > > │                                                                              │
00:19:13 verbose #27199 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:13 verbose #27200 > >
00:19:13 verbose #27201 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:13 verbose #27202 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:13 verbose #27203 > > │ ### choose                                                                   │
00:19:13 verbose #27204 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:13 verbose #27205 > >
00:19:13 verbose #27206 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:13 verbose #27207 > > inl choose forall dim {number} t u. (fn : t -> option u) (s : seq dim t) : seq
00:19:13 verbose #27208 > > dim u =
00:19:13 verbose #27209 > >     fun n =>
00:19:13 verbose #27210 > >         inl rec body fn s i i' =
00:19:13 verbose #27211 > >             match i |> s with
00:19:13 verbose #27212 > >             | None => None
00:19:13 verbose #27213 > >             | Some x =>
00:19:13 verbose #27214 > >                 match x |> fn with
00:19:13 verbose #27215 > >                 | Some x when n = i' => Some x
00:19:13 verbose #27216 > >                 | Some _ => loop (i + 1) (i' + 1)
00:19:13 verbose #27217 > >                 | _ => loop (i + 1) i'
00:19:13 verbose #27218 > >         and inl loop i i' =
00:19:13 verbose #27219 > >             if n |> var_is |> not
00:19:13 verbose #27220 > >             then body fn s i i'
00:19:13 verbose #27221 > >             else
00:19:13 verbose #27222 > >                 inl fn = join fn
00:19:13 verbose #27223 > >                 inl s = join s
00:19:13 verbose #27224 > >                 join body fn s i i'
00:19:13 verbose #27225 > >         loop 0 0
00:19:13 verbose #27226 > >
00:19:13 verbose #27227 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:13 verbose #27228 > > //// test
00:19:13 verbose #27229 > >
00:19:13 verbose #27230 > > listm.init 10i32 print_and_return
00:19:13 verbose #27231 > > |> from_list
00:19:13 verbose #27232 > > |> choose (fun x => if x % 2 = 0 then Some x else None)
00:19:13 verbose #27233 > > |> try_item 1i32
00:19:13 verbose #27234 > > |> _assert_eq (Some 2i32)
00:19:13 verbose #27235 > >
00:19:13 verbose #27236 > > ╭─[ 162.31ms - stdout ]────────────────────────────────────────────────────────╮
00:19:13 verbose #27237 > > │ print_and_return / x: 0                                                      │
00:19:13 verbose #27238 > > │ print_and_return / x: 1                                                      │
00:19:13 verbose #27239 > > │ print_and_return / x: 2                                                      │
00:19:13 verbose #27240 > > │ print_and_return / x: 3                                                      │
00:19:13 verbose #27241 > > │ print_and_return / x: 4                                                      │
00:19:13 verbose #27242 > > │ print_and_return / x: 5                                                      │
00:19:13 verbose #27243 > > │ print_and_return / x: 6                                                      │
00:19:13 verbose #27244 > > │ print_and_return / x: 7                                                      │
00:19:13 verbose #27245 > > │ print_and_return / x: 8                                                      │
00:19:13 verbose #27246 > > │ print_and_return / x: 9                                                      │
00:19:13 verbose #27247 > > │ __assert_eq / actual: US0_0 2 / expected: US0_0 2                            │
00:19:13 verbose #27248 > > │                                                                              │
00:19:13 verbose #27249 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:13 verbose #27250 > >
00:19:13 verbose #27251 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:13 verbose #27252 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:13 verbose #27253 > > │ ### indexed                                                                  │
00:19:13 verbose #27254 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:13 verbose #27255 > >
00:19:13 verbose #27256 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:13 verbose #27257 > > inl indexed s =
00:19:13 verbose #27258 > >     s
00:19:13 verbose #27259 > >     |> mapi fun i x =>
00:19:13 verbose #27260 > >         i, x
00:19:13 verbose #27261 > >
00:19:13 verbose #27262 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:13 verbose #27263 > > //// test
00:19:13 verbose #27264 > >
00:19:13 verbose #27265 > > listm.init 10i32 ((*) 2)
00:19:13 verbose #27266 > > |> from_list
00:19:13 verbose #27267 > > |> indexed
00:19:13 verbose #27268 > > |> try_item 5i32
00:19:13 verbose #27269 > > |> _assert_eq (Some (5i32, 10i32))
00:19:13 verbose #27270 > >
00:19:13 verbose #27271 > > ╭─[ 113.47ms - stdout ]────────────────────────────────────────────────────────╮
00:19:13 verbose #27272 > > │ __assert_eq / actual: US0_0 (5, 10) / expected: US0_0 (5, 10)                │
00:19:13 verbose #27273 > > │                                                                              │
00:19:13 verbose #27274 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:13 verbose #27275 > >
00:19:13 verbose #27276 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:13 verbose #27277 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:13 verbose #27278 > > │ ### zip                                                                      │
00:19:13 verbose #27279 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:13 verbose #27280 > >
00:19:13 verbose #27281 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:13 verbose #27282 > > inl zip n seq1 seq2 =
00:19:13 verbose #27283 > >     seq1 n, seq2 n
00:19:13 verbose #27284 > >
00:19:13 verbose #27285 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:13 verbose #27286 > > //// test
00:19:13 verbose #27287 > >
00:19:13 verbose #27288 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:19:13 verbose #27289 > > ||> zip 5i32
00:19:13 verbose #27290 > > |> _assert_eq (Some 5, Some 10)
00:19:13 verbose #27291 > >
00:19:13 verbose #27292 > > ╭─[ 115.92ms - stdout ]────────────────────────────────────────────────────────╮
00:19:13 verbose #27293 > > │ __assert_eq / actual: struct (US0_0 5, US0_0 10) / expected: struct (US0_0   │
00:19:13 verbose #27294 > > │ 5, US0_0 10)                                                                 │
00:19:13 verbose #27295 > > │                                                                              │
00:19:13 verbose #27296 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:13 verbose #27297 > >
00:19:13 verbose #27298 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:13 verbose #27299 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:13 verbose #27300 > > │ ### zip_with                                                                 │
00:19:13 verbose #27301 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:13 verbose #27302 > >
00:19:13 verbose #27303 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:13 verbose #27304 > > inl zip_with fn seq1 seq2 =
00:19:13 verbose #27305 > >     fun n =>
00:19:13 verbose #27306 > >         fn (seq1 n) (seq2 n)
00:19:13 verbose #27307 > >
00:19:13 verbose #27308 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:13 verbose #27309 > > //// test
00:19:13 verbose #27310 > >
00:19:13 verbose #27311 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list))
00:19:13 verbose #27312 > > ||> zip_with (optionm'.choose (+))
00:19:13 verbose #27313 > > |> try_item 2i32
00:19:13 verbose #27314 > > |> _assert_eq (Some 6)
00:19:13 verbose #27315 > >
00:19:13 verbose #27316 > > ╭─[ 108.50ms - stdout ]────────────────────────────────────────────────────────╮
00:19:13 verbose #27317 > > │ __assert_eq / actual: US0_0 6 / expected: US0_0 6                            │
00:19:13 verbose #27318 > > │                                                                              │
00:19:13 verbose #27319 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:13 verbose #27320 > >
00:19:13 verbose #27321 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:13 verbose #27322 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:13 verbose #27323 > > │ ### fold                                                                     │
00:19:13 verbose #27324 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:13 verbose #27325 > >
00:19:13 verbose #27326 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:13 verbose #27327 > > inl fold fn init seq =
00:19:13 verbose #27328 > >     inl rec loop acc n =
00:19:13 verbose #27329 > >         match seq n with
00:19:13 verbose #27330 > >         | Some x => loop (fn acc x) (n + 1)
00:19:13 verbose #27331 > >         | None => acc
00:19:13 verbose #27332 > >     loop init 0
00:19:13 verbose #27333 > >
00:19:13 verbose #27334 > > inl fold_ fn init seq =
00:19:13 verbose #27335 > >     let rec loop acc n =
00:19:13 verbose #27336 > >         match seq n with
00:19:13 verbose #27337 > >         | Some x => loop (fn acc x) (n + 1)
00:19:13 verbose #27338 > >         | None => acc
00:19:13 verbose #27339 > >     loop init 0
00:19:13 verbose #27340 > >
00:19:13 verbose #27341 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:13 verbose #27342 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:13 verbose #27343 > > │ ### sum                                                                      │
00:19:13 verbose #27344 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:13 verbose #27345 > >
00:19:13 verbose #27346 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:13 verbose #27347 > > inl sum seq =
00:19:13 verbose #27348 > >     seq |> fold (+) 0
00:19:13 verbose #27349 > >
00:19:13 verbose #27350 > > inl sum_ seq =
00:19:13 verbose #27351 > >     seq |> fold_ (+) 0
00:19:14 verbose #27352 > >
00:19:14 verbose #27353 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:14 verbose #27354 > > //// test
00:19:14 verbose #27355 > >
00:19:14 verbose #27356 > > listm.init 10i32 id
00:19:14 verbose #27357 > > |> from_list
00:19:14 verbose #27358 > > |> fun f (n : i32) => f n
00:19:14 verbose #27359 > > |> sum
00:19:14 verbose #27360 > > |> _assert_eq 45
00:19:14 verbose #27361 > >
00:19:14 verbose #27362 > > ╭─[ 103.95ms - stdout ]────────────────────────────────────────────────────────╮
00:19:14 verbose #27363 > > │ __assert_eq / actual: 45 / expected: 45                                      │
00:19:14 verbose #27364 > > │                                                                              │
00:19:14 verbose #27365 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:14 verbose #27366 > >
00:19:14 verbose #27367 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:14 verbose #27368 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:14 verbose #27369 > > │ ### to_list                                                                  │
00:19:14 verbose #27370 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:14 verbose #27371 > >
00:19:14 verbose #27372 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:14 verbose #27373 > > inl to_list seq =
00:19:14 verbose #27374 > >     seq
00:19:14 verbose #27375 > >     |> fold (fun acc x => x :: acc) [[]]
00:19:14 verbose #27376 > >     |> listm.rev
00:19:14 verbose #27377 > >
00:19:14 verbose #27378 > > inl to_list_ seq =
00:19:14 verbose #27379 > >     seq
00:19:14 verbose #27380 > >     |> fold_ (fun acc x => x :: acc) [[]]
00:19:14 verbose #27381 > >     |> listm.rev
00:19:14 verbose #27382 > >
00:19:14 verbose #27383 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:14 verbose #27384 > > //// test
00:19:14 verbose #27385 > >
00:19:14 verbose #27386 > > listm.init 10i32 id
00:19:14 verbose #27387 > > |> from_list
00:19:14 verbose #27388 > > |> fun f (n : i32) => f n
00:19:14 verbose #27389 > > |> to_list
00:19:14 verbose #27390 > > |> _assert_eq (listm.init 10i32 id)
00:19:14 verbose #27391 > >
00:19:14 verbose #27392 > > ╭─[ 144.38ms - stdout ]────────────────────────────────────────────────────────╮
00:19:14 verbose #27393 > > │ __assert_eq / actual: UH0_1                                                  │
00:19:14 verbose #27394 > > │   (0,                                                                        │
00:19:14 verbose #27395 > > │    UH0_1                                                                     │
00:19:14 verbose #27396 > > │      (1,                                                                     │
00:19:14 verbose #27397 > > │       UH0_1                                                                  │
00:19:14 verbose #27398 > > │         (2,                                                                  │
00:19:14 verbose #27399 > > │          UH0_1                                                               │
00:19:14 verbose #27400 > > │            (3,                                                               │
00:19:14 verbose #27401 > > │             UH0_1                                                            │
00:19:14 verbose #27402 > > │               (4, UH0_1 (5, UH0_1 (6, UH0_1 (7, UH0_1 (8, UH0_1 (9,          │
00:19:14 verbose #27403 > > │ UH0_0)))))))))) / expected: UH0_1                                            │
00:19:14 verbose #27404 > > │   (0,                                                                        │
00:19:14 verbose #27405 > > │    UH0_1                                                                     │
00:19:14 verbose #27406 > > │      (1,                                                                     │
00:19:14 verbose #27407 > > │       UH0_1                                                                  │
00:19:14 verbose #27408 > > │         (2,                                                                  │
00:19:14 verbose #27409 > > │          UH0_1                                                               │
00:19:14 verbose #27410 > > │            (3,                                                               │
00:19:14 verbose #27411 > > │             UH0_1                                                            │
00:19:14 verbose #27412 > > │               (4, UH0_1 (5, UH0_1 (6, UH0_1 (7, UH0_1 (8, UH0_1 (9,          │
00:19:14 verbose #27413 > > │ UH0_0))))))))))                                                              │
00:19:14 verbose #27414 > > │                                                                              │
00:19:14 verbose #27415 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:14 verbose #27416 > >
00:19:14 verbose #27417 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:14 verbose #27418 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:14 verbose #27419 > > │ ### from_array                                                               │
00:19:14 verbose #27420 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:14 verbose #27421 > >
00:19:14 verbose #27422 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:14 verbose #27423 > > inl from_array forall dim {number; int} el. (array : a dim el) : seq dim el =
00:19:14 verbose #27424 > >     fun n =>
00:19:14 verbose #27425 > >         if n >= length array
00:19:14 verbose #27426 > >         then None
00:19:14 verbose #27427 > >         else index array n |> Some
00:19:14 verbose #27428 > >
00:19:14 verbose #27429 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:14 verbose #27430 > > //// test
00:19:14 verbose #27431 > >
00:19:14 verbose #27432 > > a ;[[ 1; 2; 3 ]]
00:19:14 verbose #27433 > > |> from_array
00:19:14 verbose #27434 > > |> try_item 1i32
00:19:14 verbose #27435 > > |> _assert_eq (Some 2i32)
00:19:15 verbose #27436 > >
00:19:15 verbose #27437 > > ╭─[ 561.88ms - stdout ]────────────────────────────────────────────────────────╮
00:19:15 verbose #27438 > > │ __assert_eq / actual: US0_0 2 / expected: US0_0 2                            │
00:19:15 verbose #27439 > > │                                                                              │
00:19:15 verbose #27440 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:15 verbose #27441 > >
00:19:15 verbose #27442 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:15 verbose #27443 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:15 verbose #27444 > > │ ### to_array                                                                 │
00:19:15 verbose #27445 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:15 verbose #27446 > >
00:19:15 verbose #27447 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:15 verbose #27448 > > inl to_array seq =
00:19:15 verbose #27449 > >     inl ar = a ;[[]] |> mut
00:19:15 verbose #27450 > >     ((), seq)
00:19:15 verbose #27451 > >     ||> fold fun _ x =>
00:19:15 verbose #27452 > >         ar <- *ar ++ a ;[[x]]
00:19:15 verbose #27453 > >     *ar
00:19:15 verbose #27454 > >
00:19:15 verbose #27455 > > inl to_array_ seq =
00:19:15 verbose #27456 > >     inl ar = a ;[[]] |> mut
00:19:15 verbose #27457 > >     ((), seq)
00:19:15 verbose #27458 > >     ||> fold_ fun _ x =>
00:19:15 verbose #27459 > >         ar <- *ar ++ a ;[[x]]
00:19:15 verbose #27460 > >     *ar
00:19:15 verbose #27461 > >
00:19:15 verbose #27462 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:15 verbose #27463 > > //// test
00:19:15 verbose #27464 > >
00:19:15 verbose #27465 > > listm.init 10i32 id
00:19:15 verbose #27466 > > |> from_list
00:19:15 verbose #27467 > > |> fun (x : i32 -> _) => x
00:19:15 verbose #27468 > > |> to_array
00:19:15 verbose #27469 > > |> _assert_eq (a ;[[ 0; 1; 2; 3; 4; 5; 6; 7; 8; 9 ]] : _ i32 _)
00:19:15 verbose #27470 > >
00:19:15 verbose #27471 > > ╭─[ 296.61ms - stdout ]────────────────────────────────────────────────────────╮
00:19:15 verbose #27472 > > │ __assert_eq / actual: [|0; 1; 2; 3; 4; 5; 6; 7; 8; 9|] / expected: [|0; 1;   │
00:19:15 verbose #27473 > > │ 2; 3; 4; 5; 6; 7; 8; 9|]                                                     │
00:19:15 verbose #27474 > > │                                                                              │
00:19:15 verbose #27475 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:15 verbose #27476 > >
00:19:15 verbose #27477 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:15 verbose #27478 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:15 verbose #27479 > > │ ### take_while                                                               │
00:19:15 verbose #27480 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:15 verbose #27481 > >
00:19:15 verbose #27482 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:15 verbose #27483 > > inl take_while cond seq =
00:19:15 verbose #27484 > >     inl rec loop acc i =
00:19:15 verbose #27485 > >         match seq i with
00:19:15 verbose #27486 > >         | Some st when cond st i => loop (st :: acc) (i + 1)
00:19:15 verbose #27487 > >         | _ => acc |> listm.rev
00:19:15 verbose #27488 > >     loop [[]] 0
00:19:15 verbose #27489 > >
00:19:15 verbose #27490 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:15 verbose #27491 > > //// test
00:19:15 verbose #27492 > >
00:19:15 verbose #27493 > > listm.init 10i32 id
00:19:15 verbose #27494 > > |> from_list
00:19:15 verbose #27495 > > |> take_while (fun n (_ : i32) => n < 5)
00:19:15 verbose #27496 > > |> listm'.sum
00:19:15 verbose #27497 > > |> _assert_eq 10
00:19:15 verbose #27498 > >
00:19:15 verbose #27499 > > ╭─[ 110.52ms - stdout ]────────────────────────────────────────────────────────╮
00:19:15 verbose #27500 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:19:15 verbose #27501 > > │                                                                              │
00:19:15 verbose #27502 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:15 verbose #27503 > >
00:19:15 verbose #27504 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:15 verbose #27505 > > //// test
00:19:15 verbose #27506 > >
00:19:15 verbose #27507 > > stream.new_finite_stream print_and_return 10i32
00:19:15 verbose #27508 > > |> flip stream.try_item
00:19:15 verbose #27509 > > |> take_while (fun n (_ : i32) => n < 5)
00:19:15 verbose #27510 > > |> listm'.sum
00:19:15 verbose #27511 > > |> _assert_eq 10
00:19:15 verbose #27512 > >
00:19:15 verbose #27513 > > ╭─[ 122.83ms - stdout ]────────────────────────────────────────────────────────╮
00:19:15 verbose #27514 > > │ print_and_return / x: 0                                                      │
00:19:15 verbose #27515 > > │ print_and_return / x: 1                                                      │
00:19:15 verbose #27516 > > │ print_and_return / x: 1                                                      │
00:19:15 verbose #27517 > > │ print_and_return / x: 2                                                      │
00:19:15 verbose #27518 > > │ print_and_return / x: 1                                                      │
00:19:15 verbose #27519 > > │ print_and_return / x: 2                                                      │
00:19:15 verbose #27520 > > │ print_and_return / x: 3                                                      │
00:19:15 verbose #27521 > > │ print_and_return / x: 1                                                      │
00:19:15 verbose #27522 > > │ print_and_return / x: 2                                                      │
00:19:15 verbose #27523 > > │ print_and_return / x: 3                                                      │
00:19:15 verbose #27524 > > │ print_and_return / x: 4                                                      │
00:19:15 verbose #27525 > > │ print_and_return / x: 1                                                      │
00:19:15 verbose #27526 > > │ print_and_return / x: 2                                                      │
00:19:15 verbose #27527 > > │ print_and_return / x: 3                                                      │
00:19:15 verbose #27528 > > │ print_and_return / x: 4                                                      │
00:19:15 verbose #27529 > > │ print_and_return / x: 5                                                      │
00:19:15 verbose #27530 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:19:15 verbose #27531 > > │                                                                              │
00:19:15 verbose #27532 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:15 verbose #27533 > >
00:19:15 verbose #27534 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:15 verbose #27535 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:15 verbose #27536 > > │ ### take_while_                                                              │
00:19:15 verbose #27537 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:15 verbose #27538 > >
00:19:15 verbose #27539 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:15 verbose #27540 > > inl take_while_ cond seq =
00:19:15 verbose #27541 > >     let rec loop acc i =
00:19:15 verbose #27542 > >         match seq i with
00:19:15 verbose #27543 > >         | Some st when cond st i => loop (st :: acc) (i + 1)
00:19:15 verbose #27544 > >         | _ => acc |> listm.rev
00:19:15 verbose #27545 > >     loop [[]] 0
00:19:15 verbose #27546 > >
00:19:15 verbose #27547 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:15 verbose #27548 > > //// test
00:19:15 verbose #27549 > >
00:19:15 verbose #27550 > > stream.new_infinite_stream_ print_and_return
00:19:15 verbose #27551 > > |> flip stream.try_item
00:19:15 verbose #27552 > > |> take_while_ (fun n (_ : i32) => n < 5i32)
00:19:15 verbose #27553 > > |> listm'.sum
00:19:15 verbose #27554 > > |> _assert_eq 10
00:19:16 verbose #27555 > >
00:19:16 verbose #27556 > > ╭─[ 225.03ms - stdout ]────────────────────────────────────────────────────────╮
00:19:16 verbose #27557 > > │ print_and_return / x: 0                                                      │
00:19:16 verbose #27558 > > │ print_and_return / x: 1                                                      │
00:19:16 verbose #27559 > > │ print_and_return / x: 1                                                      │
00:19:16 verbose #27560 > > │ print_and_return / x: 2                                                      │
00:19:16 verbose #27561 > > │ print_and_return / x: 1                                                      │
00:19:16 verbose #27562 > > │ print_and_return / x: 2                                                      │
00:19:16 verbose #27563 > > │ print_and_return / x: 3                                                      │
00:19:16 verbose #27564 > > │ print_and_return / x: 1                                                      │
00:19:16 verbose #27565 > > │ print_and_return / x: 2                                                      │
00:19:16 verbose #27566 > > │ print_and_return / x: 3                                                      │
00:19:16 verbose #27567 > > │ print_and_return / x: 4                                                      │
00:19:16 verbose #27568 > > │ print_and_return / x: 1                                                      │
00:19:16 verbose #27569 > > │ print_and_return / x: 2                                                      │
00:19:16 verbose #27570 > > │ print_and_return / x: 3                                                      │
00:19:16 verbose #27571 > > │ print_and_return / x: 4                                                      │
00:19:16 verbose #27572 > > │ print_and_return / x: 5                                                      │
00:19:16 verbose #27573 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:19:16 verbose #27574 > > │                                                                              │
00:19:16 verbose #27575 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:16 verbose #27576 > >
00:19:16 verbose #27577 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:16 verbose #27578 > > //// test
00:19:16 verbose #27579 > >
00:19:16 verbose #27580 > > stream.new_infinite_stream_ print_and_return
00:19:16 verbose #27581 > > |> stream.memoize
00:19:16 verbose #27582 > > |> fun list =>
00:19:16 verbose #27583 > >     inl list = list ()
00:19:16 verbose #27584 > >     fun n =>
00:19:16 verbose #27585 > >         list |> stream.try_item n
00:19:16 verbose #27586 > > |> take_while_ (fun n (_ : i32) => n < 5i32)
00:19:16 verbose #27587 > > |> listm'.sum
00:19:16 verbose #27588 > > |> _assert_eq 10
00:19:16 verbose #27589 > >
00:19:16 verbose #27590 > > ╭─[ 175.20ms - stdout ]────────────────────────────────────────────────────────╮
00:19:16 verbose #27591 > > │ print_and_return / x: 0                                                      │
00:19:16 verbose #27592 > > │ print_and_return / x: 1                                                      │
00:19:16 verbose #27593 > > │ print_and_return / x: 2                                                      │
00:19:16 verbose #27594 > > │ print_and_return / x: 3                                                      │
00:19:16 verbose #27595 > > │ print_and_return / x: 4                                                      │
00:19:16 verbose #27596 > > │ print_and_return / x: 5                                                      │
00:19:16 verbose #27597 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:19:16 verbose #27598 > > │                                                                              │
00:19:16 verbose #27599 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:16 verbose #27600 > >
00:19:16 verbose #27601 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:16 verbose #27602 > > //// test
00:19:16 verbose #27603 > >
00:19:16 verbose #27604 > > stream.new_finite_stream print_and_return 10i32
00:19:16 verbose #27605 > > |> stream.memoize
00:19:16 verbose #27606 > > |> fun list =>
00:19:16 verbose #27607 > >     inl list = list ()
00:19:16 verbose #27608 > >     fun n =>
00:19:16 verbose #27609 > >         list |> stream.try_item n
00:19:16 verbose #27610 > > |> take_while_ (fun n (_ : i32) => n < 5)
00:19:16 verbose #27611 > > |> listm'.sum
00:19:16 verbose #27612 > > |> _assert_eq 10
00:19:16 verbose #27613 > >
00:19:16 verbose #27614 > > ╭─[ 201.67ms - stdout ]────────────────────────────────────────────────────────╮
00:19:16 verbose #27615 > > │ print_and_return / x: 0                                                      │
00:19:16 verbose #27616 > > │ print_and_return / x: 1                                                      │
00:19:16 verbose #27617 > > │ print_and_return / x: 2                                                      │
00:19:16 verbose #27618 > > │ print_and_return / x: 3                                                      │
00:19:16 verbose #27619 > > │ print_and_return / x: 4                                                      │
00:19:16 verbose #27620 > > │ print_and_return / x: 5                                                      │
00:19:16 verbose #27621 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:19:16 verbose #27622 > > │                                                                              │
00:19:16 verbose #27623 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:16 verbose #27624 > >
00:19:16 verbose #27625 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:16 verbose #27626 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:16 verbose #27627 > > │ ### memoize                                                                  │
00:19:16 verbose #27628 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:16 verbose #27629 > >
00:19:16 verbose #27630 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:16 verbose #27631 > > inl memoize seq =
00:19:16 verbose #27632 > >     inl state = mut [[]]
00:19:16 verbose #27633 > >     fun n =>
00:19:16 verbose #27634 > >         match *state |> listm'.try_find (fun (n', _) => n' = n) with
00:19:16 verbose #27635 > >         | Some (_, v) => v
00:19:16 verbose #27636 > >         | None =>
00:19:16 verbose #27637 > >             inl new_state = seq n
00:19:16 verbose #27638 > >             state <- (n, new_state) :: *state
00:19:16 verbose #27639 > >             new_state
00:19:16 verbose #27640 > >
00:19:16 verbose #27641 > > inl memoize_ seq =
00:19:16 verbose #27642 > >     inl state = mut [[]]
00:19:16 verbose #27643 > >     fun n =>
00:19:16 verbose #27644 > >         match *state |> listm'.try_find_ (fun (n', _) => n' = n) with
00:19:16 verbose #27645 > >         | Some (_, v) => v
00:19:16 verbose #27646 > >         | None =>
00:19:16 verbose #27647 > >             inl new_state = seq n
00:19:16 verbose #27648 > >             state <- (n, new_state) :: *state
00:19:16 verbose #27649 > >             new_state
00:19:16 verbose #27650 > >
00:19:16 verbose #27651 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:16 verbose #27652 > > //// test
00:19:16 verbose #27653 > >
00:19:16 verbose #27654 > > inl seq =
00:19:16 verbose #27655 > >     fun n =>
00:19:16 verbose #27656 > >         n |> print_and_return |> Some
00:19:16 verbose #27657 > >     |> memoize_
00:19:16 verbose #27658 > >
00:19:16 verbose #27659 > > seq
00:19:16 verbose #27660 > > |> take_while_ (fun n (_ : i32) => n < 5)
00:19:16 verbose #27661 > > |> listm'.sum
00:19:16 verbose #27662 > > |> _assert_eq 10
00:19:16 verbose #27663 > >
00:19:16 verbose #27664 > > seq
00:19:16 verbose #27665 > > |> take_while_ (fun n _ => n < 5)
00:19:16 verbose #27666 > > |> listm'.sum
00:19:16 verbose #27667 > > |> _assert_eq 10
00:19:16 verbose #27668 > >
00:19:16 verbose #27669 > > ╭─[ 242.20ms - stdout ]────────────────────────────────────────────────────────╮
00:19:16 verbose #27670 > > │ print_and_return / x: 0                                                      │
00:19:16 verbose #27671 > > │ print_and_return / x: 1                                                      │
00:19:16 verbose #27672 > > │ print_and_return / x: 2                                                      │
00:19:16 verbose #27673 > > │ print_and_return / x: 3                                                      │
00:19:16 verbose #27674 > > │ print_and_return / x: 4                                                      │
00:19:16 verbose #27675 > > │ print_and_return / x: 5                                                      │
00:19:16 verbose #27676 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:19:16 verbose #27677 > > │ __assert_eq / actual: 10 / expected: 10                                      │
00:19:16 verbose #27678 > > │                                                                              │
00:19:16 verbose #27679 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:16 verbose #27680 > >
00:19:16 verbose #27681 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:16 verbose #27682 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:16 verbose #27683 > > │ ### iterate                                                                  │
00:19:16 verbose #27684 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:16 verbose #27685 > >
00:19:16 verbose #27686 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:16 verbose #27687 > > inl iterate f x0 num_steps =
00:19:16 verbose #27688 > >     inl rec loop x n =
00:19:16 verbose #27689 > >         if n <= 0
00:19:16 verbose #27690 > >         then x
00:19:16 verbose #27691 > >         else loop (f x) (n - 1)
00:19:16 verbose #27692 > >     loop x0 num_steps
00:19:16 verbose #27693 > >
00:19:16 verbose #27694 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:16 verbose #27695 > > //// test
00:19:16 verbose #27696 > >
00:19:16 verbose #27697 > > 10i32 |> iterate ((*) 2) 1i32
00:19:16 verbose #27698 > > |> _assert_eq 1024
00:19:17 verbose #27699 > >
00:19:17 verbose #27700 > > ╭─[ 107.16ms - stdout ]────────────────────────────────────────────────────────╮
00:19:17 verbose #27701 > > │ __assert_eq / actual: 1024 / expected: 1024                                  │
00:19:17 verbose #27702 > > │                                                                              │
00:19:17 verbose #27703 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:17 verbose #27704 > >
00:19:17 verbose #27705 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:17 verbose #27706 > > inl iterate_ f x0 num_steps =
00:19:17 verbose #27707 > >     let rec loop x n =
00:19:17 verbose #27708 > >         if n <= 0
00:19:17 verbose #27709 > >         then x
00:19:17 verbose #27710 > >         else loop (f x) (n - 1)
00:19:17 verbose #27711 > >     loop x0 num_steps
00:19:17 verbose #27712 > >
00:19:17 verbose #27713 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:17 verbose #27714 > > //// test
00:19:17 verbose #27715 > >
00:19:17 verbose #27716 > > 10i32 |> iterate_ ((*) 2) 1i32
00:19:17 verbose #27717 > > |> _assert_eq 1024
00:19:17 verbose #27718 > >
00:19:17 verbose #27719 > > ╭─[ 106.51ms - stdout ]────────────────────────────────────────────────────────╮
00:19:17 verbose #27720 > > │ __assert_eq / actual: 1024 / expected: 1024                                  │
00:19:17 verbose #27721 > > │                                                                              │
00:19:17 verbose #27722 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:17 verbose #27723 > >
00:19:17 verbose #27724 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:17 verbose #27725 > > inl iterate' f x0 num_steps =
00:19:17 verbose #27726 > >     listm.init num_steps id
00:19:17 verbose #27727 > >     |> listm.fold (fun x _ => f x) x0
00:19:17 verbose #27728 > >
00:19:17 verbose #27729 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:17 verbose #27730 > > //// test
00:19:17 verbose #27731 > >
00:19:17 verbose #27732 > > 10i32 |> iterate' ((*) 2) 1i32
00:19:17 verbose #27733 > > |> _assert_eq 1024
00:19:17 verbose #27734 > >
00:19:17 verbose #27735 > > ╭─[ 104.73ms - stdout ]────────────────────────────────────────────────────────╮
00:19:17 verbose #27736 > > │ __assert_eq / actual: 1024 / expected: 1024                                  │
00:19:17 verbose #27737 > > │                                                                              │
00:19:17 verbose #27738 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:17 verbose #27739 > >
00:19:17 verbose #27740 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:17 verbose #27741 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:17 verbose #27742 > > │ ### find_last                                                                │
00:19:17 verbose #27743 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:17 verbose #27744 > >
00:19:17 verbose #27745 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:17 verbose #27746 > > inl find_last forall item result. fold_fn fn target : option result =
00:19:17 verbose #27747 > >     fold_fn (fun (item : item) (result : option result) =>
00:19:17 verbose #27748 > >         match result with
00:19:17 verbose #27749 > >         | None => fn item
00:19:17 verbose #27750 > >         | result => result
00:19:17 verbose #27751 > >     ) target (None : option result)
00:19:17 verbose #27752 > >
00:19:17 verbose #27753 > > inl array_find_last forall item result. (fn : item -> option result) (target : a
00:19:17 verbose #27754 > > i32 item) : option result =
00:19:17 verbose #27755 > >     find_last am.foldBack fn target
00:19:17 verbose #27756 > >
00:19:17 verbose #27757 > > inl list_find_last forall item result. (fn : item -> option result) (target :
00:19:17 verbose #27758 > > list item) : option result =
00:19:17 verbose #27759 > >     find_last listm.foldBack fn target
00:19:17 verbose #27760 > >
00:19:17 verbose #27761 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:17 verbose #27762 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:17 verbose #27763 > > │ ## fsharp                                                                    │
00:19:17 verbose #27764 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:17 verbose #27765 > >
00:19:17 verbose #27766 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:17 verbose #27767 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:17 verbose #27768 > > │ ### seq'                                                                     │
00:19:17 verbose #27769 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:17 verbose #27770 > >
00:19:17 verbose #27771 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:17 verbose #27772 > > nominal seq' t = $"backend_switch `({ Fsharp : $"`t seq"; Python : t })"
00:19:17 verbose #27773 > >
00:19:17 verbose #27774 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:17 verbose #27775 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:17 verbose #27776 > > │ ### of_array'                                                                │
00:19:17 verbose #27777 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:17 verbose #27778 > >
00:19:17 verbose #27779 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:17 verbose #27780 > > inl of_array' forall dim t. (items : a dim t) : seq' t =
00:19:17 verbose #27781 > >     backend_switch {
00:19:17 verbose #27782 > >         Fsharp = fun () => $'seq { for i = 0 to !items.Length - 1 do yield
00:19:17 verbose #27783 > > !items.[[i]] }' : seq' t
00:19:17 verbose #27784 > >         Python = fun () => $'!items ' : seq' t
00:19:17 verbose #27785 > >     }
00:19:17 verbose #27786 > >
00:19:17 verbose #27787 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:17 verbose #27788 > > //// test
00:19:17 verbose #27789 > >
00:19:17 verbose #27790 > > (a ;[[ "a"; "b" ]] : _ i32 _)
00:19:17 verbose #27791 > > |> of_array'
00:19:17 verbose #27792 > >
00:19:17 verbose #27793 > > ╭─[ 224.57ms - return value ]──────────────────────────────────────────────────╮
00:19:17 verbose #27794 > > │ <details open="open" class="dni-treeview"><summary><span                     │
00:19:17 verbose #27795 > > │ class="dni-code-hint"><code>[ a, b                                           │
00:19:17 verbose #27796 > > │ ]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
00:19:17 verbose #27797 > > │ CheckClose</td><td><div                                                      │
00:19:17 verbose #27798 > > │ class="dni-plaintext"><pre>False</pre></div></td></tr><tr><td>LastGenerated< │
00:19:17 verbose #27799 > > │ /td><td><div                                                                 │
00:19:17 verbose #27800 > > │ class="dni-plaintext"><pre>&lt;null&gt;</pre></div></td></tr><tr><td>v2</td> │
00:19:17 verbose #27801 > > │ <td><div class="dni-plaintext"><pre>[ a, b                                   │
00:19:17 verbose #27802 > > │ ]</pre></div></td></tr><tr><td>enum</td><td><div                             │
00:19:17 verbose #27803 > > │ class="dni-plaintext"><pre>&lt;null&gt;</pre></div></td></tr><tr><td>pc</td> │
00:19:17 verbose #27804 > > │ <td><div                                                                     │
00:19:17 verbose #27805 > > │ class="dni-plaintext"><pre>0</pre></div></td></tr><tr><td>current</td><td><d │
00:19:17 verbose #27806 > > │ iv                                                                           │
00:19:17 verbose #27807 > > │ class="dni-plaintext"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><i>(val │
00:19:17 verbose #27808 > > │ ues)</i></td><td><div class="dni-plaintext"><pre>[ a, b                      │
00:19:17 verbose #27809 > > │ ]</pre></div></td></tr></tbody></table></div></details><style>               │
00:19:17 verbose #27810 > > │ .dni-code-hint {                                                             │
00:19:17 verbose #27811 > > │     font-style: italic;                                                      │
00:19:17 verbose #27812 > > │     overflow: hidden;                                                        │
00:19:17 verbose #27813 > > │     white-space: nowrap;                                                     │
00:19:17 verbose #27814 > > │ }                                                                            │
00:19:17 verbose #27815 > > │ .dni-treeview {                                                              │
00:19:17 verbose #27816 > > │     white-space: nowrap;                                                     │
00:19:17 verbose #27817 > > │ }                                                                            │
00:19:17 verbose #27818 > > │ .dni-treeview td {                                                           │
00:19:17 verbose #27819 > > │     vertical-align: top;                                                     │
00:19:17 verbose #27820 > > │     text-align: start;                                                       │
00:19:17 verbose #27821 > > │ }                                                                            │
00:19:17 verbose #27822 > > │ details.dni-treeview {                                                       │
00:19:17 verbose #27823 > > │     padding-left: 1em;                                                       │
00:19:17 verbose #27824 > > │ }                                                                            │
00:19:17 verbose #27825 > > │ table td {                                                                   │
00:19:17 verbose #27826 > > │     text-align: start;                                                       │
00:19:17 verbose #27827 > > │ }                                                                            │
00:19:17 verbose #27828 > > │ table tr {                                                                   │
00:19:17 verbose #27829 > > │     vertical-align: top;                                                     │
00:19:17 verbose #27830 > > │     margin: 0em 0px;                                                         │
00:19:17 verbose #27831 > > │ }                                                                            │
00:19:17 verbose #27832 > > │ table tr td pre                                                              │
00:19:17 verbose #27833 > > │ {                                                                            │
00:19:17 verbose #27834 > > │     vertical-align: top !important;                                          │
00:19:17 verbose #27835 > > │     margin: 0em 0px !important;                                              │
00:19:17 verbose #27836 > > │ }                                                                            │
00:19:17 verbose #27837 > > │ table th {                                                                   │
00:19:17 verbose #27838 > > │     text-align: start;                                                       │
00:19:17 verbose #27839 > > │ }                                                                            │
00:19:17 verbose #27840 > > │ </style>                                                                     │
00:19:17 verbose #27841 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:17 verbose #27842 > >
00:19:17 verbose #27843 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:17 verbose #27844 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:17 verbose #27845 > > │ ### of_array                                                                 │
00:19:17 verbose #27846 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:17 verbose #27847 > >
00:19:17 verbose #27848 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:17 verbose #27849 > > inl of_array forall dim t. (items : a dim t) : seq' t =
00:19:17 verbose #27850 > >     backend_switch {
00:19:17 verbose #27851 > >         Fsharp = fun () => $'!items |> Seq.ofArray' : seq' t
00:19:17 verbose #27852 > >         Python = fun () => $'!items ' : seq' t
00:19:17 verbose #27853 > >     }
00:19:18 verbose #27854 > >
00:19:18 verbose #27855 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:18 verbose #27856 > > //// test
00:19:18 verbose #27857 > >
00:19:18 verbose #27858 > > (a ;[[ "a"; "b" ]] : _ i32 _)
00:19:18 verbose #27859 > > |> of_array
00:19:18 verbose #27860 > >
00:19:18 verbose #27861 > > ╭─[ 119.05ms - return value ]──────────────────────────────────────────────────╮
00:19:18 verbose #27862 > > │ <details open="open" class="dni-treeview"><summary><span                     │
00:19:18 verbose #27863 > > │ class="dni-code-hint"><code>[ a, b                                           │
00:19:18 verbose #27864 > > │ ]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
00:19:18 verbose #27865 > > │ f</td><td><details class="dni-treeview"><summary><span                       │
00:19:18 verbose #27866 > > │ class="dni-code-hint"><code>Microsoft.FSharp.Collections.SeqModule+OfArray@1 │
00:19:18 verbose #27867 > > │ 010[                                                                         │
00:19:18 verbose #27868 > > │ System.String]</code></span></summary><div><table><thead><tr></tr></thead><t │
00:19:18 verbose #27869 > > │ body><tr><td>source</td><td><div class="dni-plaintext"><pre>[ a, b           │
00:19:18 verbose #27870 > > │ ]</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td><i> │
00:19:18 verbose #27871 > > │ (values)</i></td><td><div class="dni-plaintext"><pre>[ a, b                  │
00:19:18 verbose #27872 > > │ ]</pre></div></td></tr></tbody></table></div></details><style>               │
00:19:18 verbose #27873 > > │ .dni-code-hint {                                                             │
00:19:18 verbose #27874 > > │     font-style: italic;                                                      │
00:19:18 verbose #27875 > > │     overflow: hidden;                                                        │
00:19:18 verbose #27876 > > │     white-space: nowrap;                                                     │
00:19:18 verbose #27877 > > │ }                                                                            │
00:19:18 verbose #27878 > > │ .dni-treeview {                                                              │
00:19:18 verbose #27879 > > │     white-space: nowrap;                                                     │
00:19:18 verbose #27880 > > │ }                                                                            │
00:19:18 verbose #27881 > > │ .dni-treeview td {                                                           │
00:19:18 verbose #27882 > > │     vertical-align: top;                                                     │
00:19:18 verbose #27883 > > │     text-align: start;                                                       │
00:19:18 verbose #27884 > > │ }                                                                            │
00:19:18 verbose #27885 > > │ details.dni-treeview {                                                       │
00:19:18 verbose #27886 > > │     padding-left: 1em;                                                       │
00:19:18 verbose #27887 > > │ }                                                                            │
00:19:18 verbose #27888 > > │ table td {                                                                   │
00:19:18 verbose #27889 > > │     text-align: start;                                                       │
00:19:18 verbose #27890 > > │ }                                                                            │
00:19:18 verbose #27891 > > │ table tr {                                                                   │
00:19:18 verbose #27892 > > │     vertical-align: top;                                                     │
00:19:18 verbose #27893 > > │     margin: 0em 0px;                                                         │
00:19:18 verbose #27894 > > │ }                                                                            │
00:19:18 verbose #27895 > > │ table tr td pre                                                              │
00:19:18 verbose #27896 > > │ {                                                                            │
00:19:18 verbose #27897 > > │     vertical-align: top !important;                                          │
00:19:18 verbose #27898 > > │     margin: 0em 0px !important;                                              │
00:19:18 verbose #27899 > > │ }                                                                            │
00:19:18 verbose #27900 > > │ table th {                                                                   │
00:19:18 verbose #27901 > > │     text-align: start;                                                       │
00:19:18 verbose #27902 > > │ }                                                                            │
00:19:18 verbose #27903 > > │ </style>                                                                     │
00:19:18 verbose #27904 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:18 verbose #27905 > >
00:19:18 verbose #27906 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:18 verbose #27907 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:18 verbose #27908 > > │ ### of_array_base                                                            │
00:19:18 verbose #27909 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:18 verbose #27910 > >
00:19:18 verbose #27911 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:18 verbose #27912 > > inl of_array_base forall t. (items : array_base t) : seq' t =
00:19:18 verbose #27913 > >     a items
00:19:18 verbose #27914 > >     |> fun x => x : _ int _
00:19:18 verbose #27915 > >     |> of_array
00:19:18 verbose #27916 > >
00:19:18 verbose #27917 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:18 verbose #27918 > > //// test
00:19:18 verbose #27919 > >
00:19:18 verbose #27920 > > ;[[ "a"; "b" ]]
00:19:18 verbose #27921 > > |> of_array_base
00:19:18 verbose #27922 > >
00:19:18 verbose #27923 > > ╭─[ 99.94ms - return value ]───────────────────────────────────────────────────╮
00:19:18 verbose #27924 > > │ <details open="open" class="dni-treeview"><summary><span                     │
00:19:18 verbose #27925 > > │ class="dni-code-hint"><code>[ a, b                                           │
00:19:18 verbose #27926 > > │ ]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │
00:19:18 verbose #27927 > > │ f</td><td><details class="dni-treeview"><summary><span                       │
00:19:18 verbose #27928 > > │ class="dni-code-hint"><code>Microsoft.FSharp.Collections.SeqModule+OfArray@1 │
00:19:18 verbose #27929 > > │ 010[                                                                         │
00:19:18 verbose #27930 > > │ System.String]</code></span></summary><div><table><thead><tr></tr></thead><t │
00:19:18 verbose #27931 > > │ body><tr><td>source</td><td><div class="dni-plaintext"><pre>[ a, b           │
00:19:18 verbose #27932 > > │ ]</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td><i> │
00:19:18 verbose #27933 > > │ (values)</i></td><td><div class="dni-plaintext"><pre>[ a, b                  │
00:19:18 verbose #27934 > > │ ]</pre></div></td></tr></tbody></table></div></details><style>               │
00:19:18 verbose #27935 > > │ .dni-code-hint {                                                             │
00:19:18 verbose #27936 > > │     font-style: italic;                                                      │
00:19:18 verbose #27937 > > │     overflow: hidden;                                                        │
00:19:18 verbose #27938 > > │     white-space: nowrap;                                                     │
00:19:18 verbose #27939 > > │ }                                                                            │
00:19:18 verbose #27940 > > │ .dni-treeview {                                                              │
00:19:18 verbose #27941 > > │     white-space: nowrap;                                                     │
00:19:18 verbose #27942 > > │ }                                                                            │
00:19:18 verbose #27943 > > │ .dni-treeview td {                                                           │
00:19:18 verbose #27944 > > │     vertical-align: top;                                                     │
00:19:18 verbose #27945 > > │     text-align: start;                                                       │
00:19:18 verbose #27946 > > │ }                                                                            │
00:19:18 verbose #27947 > > │ details.dni-treeview {                                                       │
00:19:18 verbose #27948 > > │     padding-left: 1em;                                                       │
00:19:18 verbose #27949 > > │ }                                                                            │
00:19:18 verbose #27950 > > │ table td {                                                                   │
00:19:18 verbose #27951 > > │     text-align: start;                                                       │
00:19:18 verbose #27952 > > │ }                                                                            │
00:19:18 verbose #27953 > > │ table tr {                                                                   │
00:19:18 verbose #27954 > > │     vertical-align: top;                                                     │
00:19:18 verbose #27955 > > │     margin: 0em 0px;                                                         │
00:19:18 verbose #27956 > > │ }                                                                            │
00:19:18 verbose #27957 > > │ table tr td pre                                                              │
00:19:18 verbose #27958 > > │ {                                                                            │
00:19:18 verbose #27959 > > │     vertical-align: top !important;                                          │
00:19:18 verbose #27960 > > │     margin: 0em 0px !important;                                              │
00:19:18 verbose #27961 > > │ }                                                                            │
00:19:18 verbose #27962 > > │ table th {                                                                   │
00:19:18 verbose #27963 > > │     text-align: start;                                                       │
00:19:18 verbose #27964 > > │ }                                                                            │
00:19:18 verbose #27965 > > │ </style>                                                                     │
00:19:18 verbose #27966 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:18 verbose #27967 > >
00:19:18 verbose #27968 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:18 verbose #27969 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:18 verbose #27970 > > │ ### to_array'                                                                │
00:19:18 verbose #27971 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:18 verbose #27972 > >
00:19:18 verbose #27973 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:18 verbose #27974 > > inl to_array' forall dim t. (items : seq' t) : a dim t =
00:19:18 verbose #27975 > >     backend_switch {
00:19:18 verbose #27976 > >         Fsharp = fun () => items |> $'Seq.toArray' : a dim t
00:19:18 verbose #27977 > >         Python = fun () => $'!items ' : a dim t
00:19:18 verbose #27978 > >     }
00:19:18 verbose #27979 > >
00:19:18 verbose #27980 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:18 verbose #27981 > > //// test
00:19:18 verbose #27982 > >
00:19:18 verbose #27983 > > (a ;[[ "a"; "b" ]] : _ i32 _)
00:19:18 verbose #27984 > > |> of_array'
00:19:18 verbose #27985 > > |> to_array'
00:19:18 verbose #27986 > > |> _assert_eq' (a ;[[ "a"; "b" ]] : _ i32 _)
00:19:18 verbose #27987 > >
00:19:18 verbose #27988 > > ╭─[ 120.55ms - stdout ]────────────────────────────────────────────────────────╮
00:19:18 verbose #27989 > > │ __assert_eq' / actual: [|"a"; "b"|] / expected: [|"a"; "b"|]                 │
00:19:18 verbose #27990 > > │                                                                              │
00:19:18 verbose #27991 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:18 verbose #27992 > >
00:19:18 verbose #27993 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:18 verbose #27994 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:18 verbose #27995 > > │ ### of_list'                                                                 │
00:19:18 verbose #27996 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:18 verbose #27997 > >
00:19:18 verbose #27998 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:18 verbose #27999 > > inl of_list' forall t. (items : listm'.list' t) : seq' t =
00:19:18 verbose #28000 > >     backend_switch {
00:19:18 verbose #28001 > >         Fsharp = fun () => $'seq { for i = 0 to !items.Length - 1 do yield
00:19:18 verbose #28002 > > !items.[[i]] }' : seq' t
00:19:18 verbose #28003 > >         Python = fun () => $'!items ' : seq' t
00:19:18 verbose #28004 > >     }
00:19:18 verbose #28005 > >
00:19:18 verbose #28006 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:18 verbose #28007 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:18 verbose #28008 > > │ ### to_list'                                                                 │
00:19:18 verbose #28009 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:18 verbose #28010 > >
00:19:18 verbose #28011 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:18 verbose #28012 > > inl to_list' forall t. (items : seq' t) : listm'.list' t =
00:19:18 verbose #28013 > >     backend_switch {
00:19:18 verbose #28014 > >         Fsharp = fun () => items |> $'Seq.toList' : listm'.list' t
00:19:18 verbose #28015 > >         Python = fun () => $'!items ' : listm'.list' t
00:19:18 verbose #28016 > >     }
00:19:18 verbose #28017 > >
00:19:18 verbose #28018 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:18 verbose #28019 > > //// test
00:19:18 verbose #28020 > >
00:19:18 verbose #28021 > > (a ;[[ "a"; "b" ]] : _ i32 _)
00:19:18 verbose #28022 > > |> of_array
00:19:18 verbose #28023 > > |> to_list'
00:19:18 verbose #28024 > > |> listm'.unbox
00:19:18 verbose #28025 > > |> _assert_eq ([[ "a"; "b" ]])
00:19:18 verbose #28026 > >
00:19:18 verbose #28027 > > ╭─[ 180.01ms - stdout ]────────────────────────────────────────────────────────╮
00:19:18 verbose #28028 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1      │
00:19:18 verbose #28029 > > │ ("a", UH0_1 ("b", UH0_0))                                                    │
00:19:18 verbose #28030 > > │                                                                              │
00:19:18 verbose #28031 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:18 verbose #28032 > >
00:19:18 verbose #28033 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:18 verbose #28034 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:18 verbose #28035 > > │ ### rev'                                                                     │
00:19:18 verbose #28036 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:18 verbose #28037 > >
00:19:18 verbose #28038 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:18 verbose #28039 > > inl rev'' forall t u. (items : t) : seq' u =
00:19:18 verbose #28040 > >     backend_switch {
00:19:18 verbose #28041 > >         Fsharp = fun () => items |> $'Seq.rev' : seq' u
00:19:18 verbose #28042 > >         Python = fun () => $'reversed(!items)' : seq' u
00:19:18 verbose #28043 > >     }
00:19:19 verbose #28044 > >
00:19:19 verbose #28045 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:19 verbose #28046 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:19 verbose #28047 > > │ ## rust                                                                      │
00:19:19 verbose #28048 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:19 verbose #28049 > >
00:19:19 verbose #28050 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:19 verbose #28051 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:19 verbose #28052 > > │ ### fuse                                                                     │
00:19:19 verbose #28053 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:19 verbose #28054 > >
00:19:19 verbose #28055 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:19 verbose #28056 > > nominal fuse t =
00:19:19 verbose #28057 > >     `(
00:19:19 verbose #28058 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:19 verbose #28059 > > Fable.Core.Emit(\"core::iter::Fuse<$0>\")>]]\n#endif\ntype core_iter_Fuse<'T> =
00:19:19 verbose #28060 > > class end"
00:19:19 verbose #28061 > >         $'' : $'core_iter_Fuse<`t>'
00:19:19 verbose #28062 > >     )
00:19:19 verbose #28063 > 00:00:12 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 61407 }
00:19:19 verbose #28064 > 00:00:12   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:19:19 verbose #28065 >     "nbconvert",
00:19:19 verbose #28066 >     "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb",
00:19:19 verbose #28067 >     "--to",
00:19:19 verbose #28068 >     "html",
00:19:19 verbose #28069 >     "--HTMLExporter.theme=dark",
00:19:19 verbose #28070 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:19 verbose #28071 > 00:00:12 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb to html
00:19:19 verbose #28072 > 00:00:12 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:19:19 verbose #28073 > 00:00:12 verbose #7 !   validate(nb)
00:19:20 verbose #28074 > 00:00:13 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:19:20 verbose #28075 > 00:00:13 verbose #9 !   return _pygments_highlight(
00:19:20 verbose #28076 > 00:00:13 verbose #10 ! [NbConvertApp] Writing 385460 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.html
00:19:20 verbose #28077 > 00:00:13 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 }
00:19:20 verbose #28078 > 00:00:13   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 }
00:19:20 verbose #28079 > 00:00:13   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:19:20 verbose #28080 >     "-c",
00:19:20 verbose #28081 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:19:20 verbose #28082 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:21 verbose #28083 > 00:00:14 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:19:21 verbose #28084 > 00:00:14   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:19:21 verbose #28085 > 00:00:14   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 62356 }
00:19:21   debug #28086 runtime.execute_with_options_async / { exit_code = 0; output_length = 67155 }
00:19:21   debug #32 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path seq.dib --retries 3
00:19:21   debug #28087 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path env.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:21 verbose #28088 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "env.dib", "--retries", "3"])) }
00:19:21 verbose #28089 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:19:21 verbose #28090 >     "repl",
00:19:21 verbose #28091 >     "--exit-after-run",
00:19:21 verbose #28092 >     "--run",
00:19:21 verbose #28093 >     "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib",
00:19:21 verbose #28094 >     "--output-path",
00:19:21 verbose #28095 >     "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb",
00:19:21 verbose #28096 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:19:22 verbose #28097 > >
00:19:22 verbose #28098 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:22 verbose #28099 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:22 verbose #28100 > > │ # env                                                                        │
00:19:22 verbose #28101 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:22 verbose #28102 > >
00:19:22 verbose #28103 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:22 verbose #28104 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:22 verbose #28105 > > │ ## rust                                                                      │
00:19:22 verbose #28106 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:22 verbose #28107 > >
00:19:22 verbose #28108 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:22 verbose #28109 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:22 verbose #28110 > > │ ### var_error                                                                │
00:19:22 verbose #28111 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:24 verbose #28112 > >
00:19:24 verbose #28113 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:24 verbose #28114 > > nominal var_error =
00:19:24 verbose #28115 > >     `(
00:19:24 verbose #28116 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:24 verbose #28117 > > Fable.Core.Emit(\"std::env::VarError\")>]]\n#endif\ntype std_env_VarError =
00:19:24 verbose #28118 > > class end"
00:19:24 verbose #28119 > >         $'' : $'std_env_VarError'
00:19:24 verbose #28120 > >     )
00:19:25 verbose #28121 > >
00:19:25 verbose #28122 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:25 verbose #28123 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:25 verbose #28124 > > │ ### get_environment_variable_comptime                                        │
00:19:25 verbose #28125 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:25 verbose #28126 > >
00:19:25 verbose #28127 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:25 verbose #28128 > > inl get_environment_variable_comptime (var : string) : string =
00:19:25 verbose #28129 > >     run_target_args (fun () => var) function
00:19:25 verbose #28130 > >         | Rust _ => fun var =>
00:19:25 verbose #28131 > >             open rust.rust_operators
00:19:25 verbose #28132 > >             !\($'"env\!(\\\"" + !var + "\\\")"')
00:19:25 verbose #28133 > >             |> sm'.ref_to_std_string
00:19:25 verbose #28134 > >             |> sm'.from_std_string
00:19:25 verbose #28135 > >         | target => fun _ => null ()
00:19:25 verbose #28136 > >
00:19:25 verbose #28137 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:25 verbose #28138 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:25 verbose #28139 > > │ ## python                                                                    │
00:19:25 verbose #28140 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:25 verbose #28141 > >
00:19:25 verbose #28142 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:25 verbose #28143 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:25 verbose #28144 > > │ ### os_environ                                                               │
00:19:25 verbose #28145 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:25 verbose #28146 > >
00:19:25 verbose #28147 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:25 verbose #28148 > > nominal os_environ = any
00:19:25 verbose #28149 > >
00:19:25 verbose #28150 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:25 verbose #28151 > > inl os_environ () : os_environ =
00:19:25 verbose #28152 > >     backend_switch {
00:19:25 verbose #28153 > >         Fsharp = fun () =>
00:19:25 verbose #28154 > >             open python_operators
00:19:25 verbose #28155 > >             global "type IOsEnviron = abstract environ: x: unit -> obj"
00:19:25 verbose #28156 > >             inl os : $'IOsEnviron' = python.import_all "os"
00:19:25 verbose #28157 > >             !\($'"!os.environ"') : os_environ
00:19:25 verbose #28158 > >         Python = fun () =>
00:19:25 verbose #28159 > >             global "import os"
00:19:25 verbose #28160 > >             $'os.environ' : os_environ
00:19:25 verbose #28161 > >     }
00:19:25 verbose #28162 > >
00:19:25 verbose #28163 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:25 verbose #28164 > > inl environ_get (key : string) (os_environ : os_environ) : string =
00:19:25 verbose #28165 > >     backend_switch {
00:19:25 verbose #28166 > >         Fsharp = fun () =>
00:19:25 verbose #28167 > >             open python_operators
00:19:25 verbose #28168 > >             !\\(key, $'"!os_environ.get($0)"') : string
00:19:25 verbose #28169 > >         Python = fun () =>
00:19:25 verbose #28170 > >             $'!os_environ.get(!key)' : string
00:19:25 verbose #28171 > >     }
00:19:25 verbose #28172 > >
00:19:25 verbose #28173 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:25 verbose #28174 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:25 verbose #28175 > > │ ## env                                                                       │
00:19:25 verbose #28176 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:25 verbose #28177 > >
00:19:25 verbose #28178 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:25 verbose #28179 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:25 verbose #28180 > > │ ### get_environment_variable                                                 │
00:19:25 verbose #28181 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:25 verbose #28182 > >
00:19:25 verbose #28183 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:25 verbose #28184 > > let get_environment_variable (var : string) : string =
00:19:25 verbose #28185 > >     run_target function
00:19:25 verbose #28186 > >         | Rust _ => fun () =>
00:19:25 verbose #28187 > >             open rust.rust_operators
00:19:25 verbose #28188 > >             !\\(var, $'"std::env::var(&*$0)"')
00:19:25 verbose #28189 > >             |> fun x => x : resultm.result' sm'.std_string var_error
00:19:25 verbose #28190 > >             |> resultm.map' sm'.from_std_string
00:19:25 verbose #28191 > >             |> resultm.unwrap_or' (join "")
00:19:25 verbose #28192 > >         | Fsharp _ => fun () =>
00:19:25 verbose #28193 > >             var
00:19:25 verbose #28194 > >             |> $'System.Environment.GetEnvironmentVariable'
00:19:25 verbose #28195 > >             |> optionm'.of_obj
00:19:25 verbose #28196 > >             |> optionm'.unbox
00:19:25 verbose #28197 > >             |> optionm'.default_value ""
00:19:25 verbose #28198 > >         | TypeScript _ => fun () =>
00:19:25 verbose #28199 > >             open typescript_operators
00:19:25 verbose #28200 > >             !\\(var, $'"process.env[[$0]] ?? \\\"\\\""')
00:19:25 verbose #28201 > >         | Python _ | Cuda _ => fun () =>
00:19:25 verbose #28202 > >             os_environ ()
00:19:25 verbose #28203 > >             |> environ_get var
00:19:25 verbose #28204 > >             |> optionm'.of_obj
00:19:25 verbose #28205 > >             |> optionm'.unbox
00:19:25 verbose #28206 > >             |> optionm'.default_value ""
00:19:25 verbose #28207 > >         | target => fun () => failwith $'$"env.get_environment_variable
00:19:25 verbose #28208 > > target: {!target} / var: {!var}"'
00:19:26 verbose #28209 > >
00:19:26 verbose #28210 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:26 verbose #28211 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:26 verbose #28212 > > │ ### get_entry_assembly_name                                                  │
00:19:26 verbose #28213 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:26 verbose #28214 > >
00:19:26 verbose #28215 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:26 verbose #28216 > > let get_entry_assembly_name () : string =
00:19:26 verbose #28217 > >     run_target function
00:19:26 verbose #28218 > >         | Rust _ => fun () =>
00:19:26 verbose #28219 > >             (join "CARGO_PKG_NAME") |> get_environment_variable
00:19:26 verbose #28220 > >         | Fsharp _ => fun () =>
00:19:26 verbose #28221 > >             $'System.Reflection.Assembly.GetEntryAssembly().GetName().Name'
00:19:26 verbose #28222 > >         | target => fun () => failwith $'$"env.get_entry_assembly_name / target:
00:19:26 verbose #28223 > > {!target}"'
00:19:26 verbose #28224 > >
00:19:26 verbose #28225 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:26 verbose #28226 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:26 verbose #28227 > > │ ### append_path                                                              │
00:19:26 verbose #28228 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:26 verbose #28229 > >
00:19:26 verbose #28230 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:26 verbose #28231 > > inl append_path (path : string) : option string =
00:19:26 verbose #28232 > >     inl env_path = "PATH" |> get_environment_variable
00:19:26 verbose #28233 > >     if env_path = ""
00:19:26 verbose #28234 > >     then None
00:19:26 verbose #28235 > >     else
00:19:26 verbose #28236 > >         inl env_sep =
00:19:26 verbose #28237 > >             if platform.is_windows ()
00:19:26 verbose #28238 > >             then ";"
00:19:26 verbose #28239 > >             else ":"
00:19:26 verbose #28240 > >         Some $'$"{!path}{!env_sep}{!env_path}"'
00:19:26 verbose #28241 > 00:00:05 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 7692 }
00:19:26 verbose #28242 > 00:00:05   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:19:26 verbose #28243 >     "nbconvert",
00:19:26 verbose #28244 >     "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb",
00:19:26 verbose #28245 >     "--to",
00:19:26 verbose #28246 >     "html",
00:19:26 verbose #28247 >     "--HTMLExporter.theme=dark",
00:19:26 verbose #28248 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:27 verbose #28249 > 00:00:05 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb to html
00:19:27 verbose #28250 > 00:00:05 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:19:27 verbose #28251 > 00:00:05 verbose #7 !   validate(nb)
00:19:27 verbose #28252 > 00:00:06 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:19:27 verbose #28253 > 00:00:06 verbose #9 !   return _pygments_highlight(
00:19:27 verbose #28254 > 00:00:06 verbose #10 ! [NbConvertApp] Writing 291176 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/env.dib.html
00:19:27 verbose #28255 > 00:00:06 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 }
00:19:27 verbose #28256 > 00:00:06   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 }
00:19:27 verbose #28257 > 00:00:06   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:19:27 verbose #28258 >     "-c",
00:19:27 verbose #28259 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:19:27 verbose #28260 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:28 verbose #28261 > 00:00:06 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:19:28 verbose #28262 > 00:00:06   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:19:28 verbose #28263 > 00:00:06   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 8641 }
00:19:28   debug #28264 runtime.execute_with_options_async / { exit_code = 0; output_length = 11744 }
00:19:28   debug #33 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path env.dib --retries 3
00:19:28   debug #28265 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path python.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:28 verbose #28266 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "python.dib", "--retries", "3"])) }
00:19:28 verbose #28267 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:19:28 verbose #28268 >     "repl",
00:19:28 verbose #28269 >     "--exit-after-run",
00:19:28 verbose #28270 >     "--run",
00:19:28 verbose #28271 >     "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib",
00:19:28 verbose #28272 >     "--output-path",
00:19:28 verbose #28273 >     "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb",
00:19:28 verbose #28274 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:19:29 verbose #28275 > >
00:19:29 verbose #28276 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:29 verbose #28277 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:29 verbose #28278 > > │ # python                                                                     │
00:19:29 verbose #28279 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:29 verbose #28280 > >
00:19:29 verbose #28281 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:29 verbose #28282 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:29 verbose #28283 > > │ ### emit_expr                                                                │
00:19:29 verbose #28284 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:31 verbose #28285 > >
00:19:31 verbose #28286 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:31 verbose #28287 > > inl emit_expr forall a t. (args : a) (code : string) : t =
00:19:31 verbose #28288 > >     real
00:19:31 verbose #28289 > >         $'Fable.Core.PyInterop.emitPyExpr !args !code ' : t
00:19:32 verbose #28290 > >
00:19:32 verbose #28291 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:32 verbose #28292 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:32 verbose #28293 > > │ ###                                                                          │
00:19:32 verbose #28294 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:32 verbose #28295 > >
00:19:32 verbose #28296 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:32 verbose #28297 > > inl (~!\) forall t. (code : string) : t =
00:19:32 verbose #28298 > >     emit_expr () code
00:19:32 verbose #28299 > >
00:19:32 verbose #28300 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:32 verbose #28301 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:32 verbose #28302 > > │ ###                                                                          │
00:19:32 verbose #28303 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:32 verbose #28304 > >
00:19:32 verbose #28305 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:32 verbose #28306 > > inl (~!\\) forall t u. ((args : t), (code : string)) : u =
00:19:32 verbose #28307 > >     emit_expr args code
00:19:32 verbose #28308 > >
00:19:32 verbose #28309 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:32 verbose #28310 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:32 verbose #28311 > > │ ###                                                                          │
00:19:32 verbose #28312 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:32 verbose #28313 > >
00:19:32 verbose #28314 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:32 verbose #28315 > > inl import_all forall t. (file : string) : t =
00:19:32 verbose #28316 > >     real
00:19:32 verbose #28317 > >         $'Fable.Core.PyInterop.importAll !file ' : t
00:19:32 verbose #28318 > >
00:19:32 verbose #28319 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:32 verbose #28320 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:32 verbose #28321 > > │ ###                                                                          │
00:19:32 verbose #28322 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:32 verbose #28323 > >
00:19:32 verbose #28324 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:32 verbose #28325 > > inl import forall t. (name : string) (file : string) : t =
00:19:32 verbose #28326 > >     real
00:19:32 verbose #28327 > >         $'Fable.Core.PyInterop.import !name !file ' : t
00:19:32 verbose #28328 > 00:00:04 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 3392 }
00:19:32 verbose #28329 > 00:00:04   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:19:32 verbose #28330 >     "nbconvert",
00:19:32 verbose #28331 >     "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb",
00:19:32 verbose #28332 >     "--to",
00:19:32 verbose #28333 >     "html",
00:19:32 verbose #28334 >     "--HTMLExporter.theme=dark",
00:19:32 verbose #28335 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:33 verbose #28336 > 00:00:05 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb to html
00:19:33 verbose #28337 > 00:00:05 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:19:33 verbose #28338 > 00:00:05 verbose #7 !   validate(nb)
00:19:33 verbose #28339 > 00:00:05 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:19:33 verbose #28340 > 00:00:05 verbose #9 !   return _pygments_highlight(
00:19:33 verbose #28341 > 00:00:05 verbose #10 ! [NbConvertApp] Writing 278614 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/python.dib.html
00:19:33 verbose #28342 > 00:00:05 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 }
00:19:33 verbose #28343 > 00:00:05   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 }
00:19:33 verbose #28344 > 00:00:05   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:19:33 verbose #28345 >     "-c",
00:19:33 verbose #28346 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:19:33 verbose #28347 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:34 verbose #28348 > 00:00:06 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:19:34 verbose #28349 > 00:00:06   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:19:34 verbose #28350 > 00:00:06   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 4347 }
00:19:34   debug #28351 runtime.execute_with_options_async / { exit_code = 0; output_length = 7295 }
00:19:34   debug #34 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path python.dib --retries 3
00:19:34   debug #28352 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path typescript.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:34 verbose #28353 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "typescript.dib", "--retries", "3"])) }
00:19:34 verbose #28354 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:19:34 verbose #28355 >     "repl",
00:19:34 verbose #28356 >     "--exit-after-run",
00:19:34 verbose #28357 >     "--run",
00:19:34 verbose #28358 >     "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib",
00:19:34 verbose #28359 >     "--output-path",
00:19:34 verbose #28360 >     "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb",
00:19:34 verbose #28361 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:19:35 verbose #28362 > >
00:19:35 verbose #28363 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:35 verbose #28364 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:35 verbose #28365 > > │ # typescript                                                                 │
00:19:35 verbose #28366 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:35 verbose #28367 > >
00:19:35 verbose #28368 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:35 verbose #28369 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:35 verbose #28370 > > │ ### emit_expr                                                                │
00:19:35 verbose #28371 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:38 verbose #28372 > >
00:19:38 verbose #28373 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:38 verbose #28374 > > inl emit_expr forall a t. (args : a) (code : string) : t =
00:19:38 verbose #28375 > >     real
00:19:38 verbose #28376 > >         $'Fable.Core.JsInterop.emitJsExpr !args !code ' : t
00:19:38 verbose #28377 > >
00:19:38 verbose #28378 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:38 verbose #28379 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:38 verbose #28380 > > │ ###                                                                          │
00:19:38 verbose #28381 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:38 verbose #28382 > >
00:19:38 verbose #28383 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:38 verbose #28384 > > inl (~!\) forall t. (code : string) : t =
00:19:38 verbose #28385 > >     emit_expr () code
00:19:38 verbose #28386 > >
00:19:38 verbose #28387 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:38 verbose #28388 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:38 verbose #28389 > > │ ###                                                                          │
00:19:38 verbose #28390 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:38 verbose #28391 > >
00:19:38 verbose #28392 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:38 verbose #28393 > > inl (~!\\) forall t u. ((args : t), (code : string)) : u =
00:19:38 verbose #28394 > >     emit_expr args code
00:19:38 verbose #28395 > >
00:19:38 verbose #28396 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:38 verbose #28397 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:38 verbose #28398 > > │ ###                                                                          │
00:19:38 verbose #28399 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:38 verbose #28400 > >
00:19:38 verbose #28401 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:38 verbose #28402 > > inl import_all forall t. (file : string) : t =
00:19:38 verbose #28403 > >     real
00:19:38 verbose #28404 > >         $'Fable.Core.JsInterop.importAll !file ' : t
00:19:39 verbose #28405 > >
00:19:39 verbose #28406 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:39 verbose #28407 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:39 verbose #28408 > > │ ###                                                                          │
00:19:39 verbose #28409 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:39 verbose #28410 > >
00:19:39 verbose #28411 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:39 verbose #28412 > > inl import forall t. (name : string) (file : string) : t =
00:19:39 verbose #28413 > >     real
00:19:39 verbose #28414 > >         $'Fable.Core.JsInterop.import !name !file ' : t
00:19:39 verbose #28415 > 00:00:04 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 3392 }
00:19:39 verbose #28416 > 00:00:04   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:19:39 verbose #28417 >     "nbconvert",
00:19:39 verbose #28418 >     "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb",
00:19:39 verbose #28419 >     "--to",
00:19:39 verbose #28420 >     "html",
00:19:39 verbose #28421 >     "--HTMLExporter.theme=dark",
00:19:39 verbose #28422 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:39 verbose #28423 > 00:00:05 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb to html
00:19:39 verbose #28424 > 00:00:05 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:19:39 verbose #28425 > 00:00:05 verbose #7 !   validate(nb)
00:19:40 verbose #28426 > 00:00:05 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:19:40 verbose #28427 > 00:00:05 verbose #9 !   return _pygments_highlight(
00:19:40 verbose #28428 > 00:00:05 verbose #10 ! [NbConvertApp] Writing 278630 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.html
00:19:40 verbose #28429 > 00:00:06 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 }
00:19:40 verbose #28430 > 00:00:06   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 }
00:19:40 verbose #28431 > 00:00:06   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:19:40 verbose #28432 >     "-c",
00:19:40 verbose #28433 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:19:40 verbose #28434 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:40 verbose #28435 > 00:00:06 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:19:40 verbose #28436 > 00:00:06   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:19:40 verbose #28437 > 00:00:06   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 4355 }
00:19:40   debug #28438 runtime.execute_with_options_async / { exit_code = 0; output_length = 7339 }
00:19:40   debug #35 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path typescript.dib --retries 3
00:19:40   debug #28439 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path file_system.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:19:40 verbose #28440 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "file_system.dib", "--retries", "3"])) }
00:19:40 verbose #28441 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:19:40 verbose #28442 >     "repl",
00:19:40 verbose #28443 >     "--exit-after-run",
00:19:40 verbose #28444 >     "--run",
00:19:40 verbose #28445 >     "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib",
00:19:40 verbose #28446 >     "--output-path",
00:19:40 verbose #28447 >     "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb",
00:19:40 verbose #28448 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:19:42 verbose #28449 > >
00:19:42 verbose #28450 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:42 verbose #28451 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:42 verbose #28452 > > │ # file_system                                                                │
00:19:42 verbose #28453 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:44 verbose #28454 > >
00:19:44 verbose #28455 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:44 verbose #28456 > > open sm'_operators
00:19:44 verbose #28457 > > open rust
00:19:44 verbose #28458 > > open rust_operators
00:19:45 verbose #28459 > >
00:19:45 verbose #28460 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:45 verbose #28461 > > //// test
00:19:45 verbose #28462 > >
00:19:45 verbose #28463 > > open testing
00:19:45 verbose #28464 > >
00:19:45 verbose #28465 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:45 verbose #28466 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:45 verbose #28467 > > │ ## fsharp                                                                    │
00:19:45 verbose #28468 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:45 verbose #28469 > >
00:19:45 verbose #28470 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:45 verbose #28471 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:45 verbose #28472 > > │ ### file_mode                                                                │
00:19:45 verbose #28473 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:45 verbose #28474 > >
00:19:45 verbose #28475 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:45 verbose #28476 > > nominal file_mode' = $'System.IO.FileMode'
00:19:45 verbose #28477 > >
00:19:45 verbose #28478 > > union file_mode =
00:19:45 verbose #28479 > >     | ModeCreateNew
00:19:45 verbose #28480 > >     | ModeCreate
00:19:45 verbose #28481 > >     | ModeOpen
00:19:45 verbose #28482 > >     | ModeOpenOrCreate
00:19:45 verbose #28483 > >     | Truncate
00:19:45 verbose #28484 > >     | Append
00:19:45 verbose #28485 > >
00:19:45 verbose #28486 > > inl file_mode = function
00:19:45 verbose #28487 > >     | ModeCreateNew => $'System.IO.FileMode.CreateNew' : file_mode'
00:19:45 verbose #28488 > >     | ModeCreate => $'System.IO.FileMode.Create' : file_mode'
00:19:45 verbose #28489 > >     | ModeOpen => $'System.IO.FileMode.Open' : file_mode'
00:19:45 verbose #28490 > >     | ModeOpenOrCreate => $'System.IO.FileMode.OpenOrCreate' : file_mode'
00:19:45 verbose #28491 > >     | Truncate => $'System.IO.FileMode.Truncate' : file_mode'
00:19:45 verbose #28492 > >     | Append => $'System.IO.FileMode.Append' : file_mode'
00:19:45 verbose #28493 > >
00:19:45 verbose #28494 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:45 verbose #28495 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:45 verbose #28496 > > │ ### file_access                                                              │
00:19:45 verbose #28497 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:45 verbose #28498 > >
00:19:45 verbose #28499 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:45 verbose #28500 > > nominal file_access' = $'System.IO.FileAccess'
00:19:45 verbose #28501 > >
00:19:45 verbose #28502 > > union file_access =
00:19:45 verbose #28503 > >     | AccessRead
00:19:45 verbose #28504 > >     | AccessWrite
00:19:45 verbose #28505 > >     | AccessReadWrite
00:19:45 verbose #28506 > >
00:19:45 verbose #28507 > > inl file_access = function
00:19:45 verbose #28508 > >     | AccessRead => $'System.IO.FileAccess.Read' : file_access'
00:19:45 verbose #28509 > >     | AccessWrite => $'System.IO.FileAccess.ReadWrite' : file_access'
00:19:45 verbose #28510 > >     | AccessReadWrite => $'System.IO.FileAccess.ReadWrite' : file_access'
00:19:45 verbose #28511 > >
00:19:45 verbose #28512 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:45 verbose #28513 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:45 verbose #28514 > > │ ### file_share                                                               │
00:19:45 verbose #28515 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:45 verbose #28516 > >
00:19:45 verbose #28517 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:45 verbose #28518 > > nominal file_share' = $'System.IO.FileShare'
00:19:45 verbose #28519 > >
00:19:45 verbose #28520 > > union file_share =
00:19:45 verbose #28521 > >     | ShareNone
00:19:45 verbose #28522 > >     | ShareRead
00:19:45 verbose #28523 > >     | ShareWrite
00:19:45 verbose #28524 > >     | ShareReadWrite
00:19:45 verbose #28525 > >     | ShareDelete
00:19:45 verbose #28526 > >
00:19:45 verbose #28527 > > inl file_share = function
00:19:45 verbose #28528 > >     | ShareNone => $'System.IO.FileShare.None' : file_share'
00:19:45 verbose #28529 > >     | ShareRead => $'System.IO.FileShare.Read' : file_share'
00:19:45 verbose #28530 > >     | ShareWrite => $'System.IO.FileShare.Write' : file_share'
00:19:45 verbose #28531 > >     | ShareReadWrite => $'System.IO.FileShare.ReadWrite' : file_share'
00:19:45 verbose #28532 > >     | ShareDelete => $'System.IO.FileShare.Delete' : file_share'
00:19:45 verbose #28533 > >
00:19:45 verbose #28534 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:45 verbose #28535 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:45 verbose #28536 > > │ ### file_stream                                                              │
00:19:45 verbose #28537 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:45 verbose #28538 > >
00:19:45 verbose #28539 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:45 verbose #28540 > > nominal file_stream' = $'System.IO.FileStream'
00:19:45 verbose #28541 > >
00:19:45 verbose #28542 > > inl file_stream (path : string) mode access share : file_stream' =
00:19:45 verbose #28543 > >     run_target function
00:19:45 verbose #28544 > >         | Fsharp (Native) => fun () =>
00:19:45 verbose #28545 > >             inl mode = mode |> file_mode
00:19:45 verbose #28546 > >             inl access = access |> file_access
00:19:45 verbose #28547 > >             inl share = share |> file_share
00:19:45 verbose #28548 > >             $'new System.IO.FileStream (!path, !mode, !access, !share)'
00:19:45 verbose #28549 > >         | _ => fun () => null ()
00:19:45 verbose #28550 > >
00:19:45 verbose #28551 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:45 verbose #28552 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:45 verbose #28553 > > │ ### directory_info                                                           │
00:19:45 verbose #28554 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:45 verbose #28555 > >
00:19:45 verbose #28556 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:45 verbose #28557 > > nominal directory_info = $'System.IO.DirectoryInfo'
00:19:45 verbose #28558 > >
00:19:45 verbose #28559 > > inl directory_info (path : string) : directory_info =
00:19:45 verbose #28560 > >     path |> $'`directory_info '
00:19:46 verbose #28561 > >
00:19:46 verbose #28562 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:46 verbose #28563 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:46 verbose #28564 > > │ ### directory_info_exists                                                    │
00:19:46 verbose #28565 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:46 verbose #28566 > >
00:19:46 verbose #28567 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:46 verbose #28568 > > inl directory_info_exists (info : directory_info) : bool =
00:19:46 verbose #28569 > >     run_target function
00:19:46 verbose #28570 > >         | Fsharp (Native) => fun () =>
00:19:46 verbose #28571 > >             $'!info.Exists'
00:19:46 verbose #28572 > >         | _ => fun () => null ()
00:19:46 verbose #28573 > >
00:19:46 verbose #28574 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:46 verbose #28575 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:46 verbose #28576 > > │ ### directory_info_creation_time                                             │
00:19:46 verbose #28577 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:46 verbose #28578 > >
00:19:46 verbose #28579 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:46 verbose #28580 > > inl directory_info_creation_time (info : directory_info) : date_time.date_time =
00:19:46 verbose #28581 > >     run_target function
00:19:46 verbose #28582 > >         | Fsharp (Native) => fun () =>
00:19:46 verbose #28583 > >             $'!info.CreationTime'
00:19:46 verbose #28584 > >         | _ => fun () => null ()
00:19:46 verbose #28585 > >
00:19:46 verbose #28586 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:46 verbose #28587 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:46 verbose #28588 > > │ ### directory_info_name                                                      │
00:19:46 verbose #28589 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:46 verbose #28590 > >
00:19:46 verbose #28591 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:46 verbose #28592 > > inl directory_info_name (info : directory_info) : string =
00:19:46 verbose #28593 > >     run_target function
00:19:46 verbose #28594 > >         | Fsharp (Native) => fun () =>
00:19:46 verbose #28595 > >             $'!info.Name'
00:19:46 verbose #28596 > >         | _ => fun () => null ()
00:19:46 verbose #28597 > >
00:19:46 verbose #28598 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:46 verbose #28599 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:46 verbose #28600 > > │ ### directory_info_full_name                                                 │
00:19:46 verbose #28601 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:46 verbose #28602 > >
00:19:46 verbose #28603 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:46 verbose #28604 > > inl directory_info_full_name (info : directory_info) : string =
00:19:46 verbose #28605 > >     run_target function
00:19:46 verbose #28606 > >         | Fsharp (Native) => fun () =>
00:19:46 verbose #28607 > >             $'!info.FullName'
00:19:46 verbose #28608 > >         | _ => fun () => null ()
00:19:46 verbose #28609 > >
00:19:46 verbose #28610 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:46 verbose #28611 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:46 verbose #28612 > > │ ### create_directory                                                         │
00:19:46 verbose #28613 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:46 verbose #28614 > >
00:19:46 verbose #28615 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:46 verbose #28616 > > inl create_directory (path : string) : directory_info =
00:19:46 verbose #28617 > >     run_target function
00:19:46 verbose #28618 > >         | Fsharp (Native) => fun () =>
00:19:46 verbose #28619 > >             path |> $'System.IO.Directory.CreateDirectory'
00:19:46 verbose #28620 > >         | _ => fun () => null ()
00:19:46 verbose #28621 > >
00:19:46 verbose #28622 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:46 verbose #28623 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:46 verbose #28624 > > │ ### directory_get_files                                                      │
00:19:46 verbose #28625 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:46 verbose #28626 > >
00:19:46 verbose #28627 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:46 verbose #28628 > > inl directory_get_files (path : string) : array_base string =
00:19:46 verbose #28629 > >     run_target function
00:19:46 verbose #28630 > >         | Fsharp (Native) => fun () =>
00:19:46 verbose #28631 > >             path |> $'System.IO.Directory.GetFiles'
00:19:46 verbose #28632 > >         | _ => fun () => null ()
00:19:46 verbose #28633 > >
00:19:46 verbose #28634 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:46 verbose #28635 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:46 verbose #28636 > > │ ### file_move                                                                │
00:19:46 verbose #28637 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:46 verbose #28638 > >
00:19:46 verbose #28639 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:46 verbose #28640 > > inl file_move (new_path : string) (old_path : string) : () =
00:19:46 verbose #28641 > >     run_target function
00:19:46 verbose #28642 > >         | Fsharp (Native) => fun () =>
00:19:46 verbose #28643 > >             $'System.IO.File.Move (!old_path, !new_path)'
00:19:46 verbose #28644 > >         | _ => fun () => ()
00:19:46 verbose #28645 > >
00:19:46 verbose #28646 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:46 verbose #28647 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:46 verbose #28648 > > │ ### read_all_text_async                                                      │
00:19:46 verbose #28649 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:46 verbose #28650 > >
00:19:46 verbose #28651 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:46 verbose #28652 > > inl read_all_text_async (path : string) : _ string =
00:19:46 verbose #28653 > >     run_target function
00:19:46 verbose #28654 > >         | Fsharp (Native) => fun () =>
00:19:46 verbose #28655 > >             path |> $'System.IO.File.ReadAllTextAsync' |> async.await_task
00:19:46 verbose #28656 > >         | _ => fun () => null ()
00:19:46 verbose #28657 > >
00:19:46 verbose #28658 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:46 verbose #28659 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:46 verbose #28660 > > │ ### write_all_text_async                                                     │
00:19:46 verbose #28661 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:46 verbose #28662 > >
00:19:46 verbose #28663 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:46 verbose #28664 > > inl write_all_text_async (path : string) (text : string) : _ () =
00:19:46 verbose #28665 > >     run_target function
00:19:46 verbose #28666 > >         | Fsharp (Native) => fun () =>
00:19:46 verbose #28667 > >             $'System.IO.File.WriteAllTextAsync (!path, !text)' |>
00:19:46 verbose #28668 > > async.await_task
00:19:46 verbose #28669 > >         | _ => fun () => null ()
00:19:46 verbose #28670 > >
00:19:46 verbose #28671 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:46 verbose #28672 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:46 verbose #28673 > > │ ### file_system_info                                                         │
00:19:46 verbose #28674 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:46 verbose #28675 > >
00:19:46 verbose #28676 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:46 verbose #28677 > > nominal file_system_info = $'System.IO.FileSystemInfo'
00:19:46 verbose #28678 > >
00:19:46 verbose #28679 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:46 verbose #28680 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:46 verbose #28681 > > │ ### get_source_directory                                                     │
00:19:46 verbose #28682 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:46 verbose #28683 > >
00:19:46 verbose #28684 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:46 verbose #28685 > > inl get_source_directory () =
00:19:46 verbose #28686 > >     $'__SOURCE_DIRECTORY__' : string
00:19:46 verbose #28687 > >
00:19:46 verbose #28688 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:46 verbose #28689 > > //// test
00:19:46 verbose #28690 > >
00:19:46 verbose #28691 > > get_source_directory ()
00:19:46 verbose #28692 > > |> directory_info
00:19:46 verbose #28693 > > |> directory_info_name
00:19:46 verbose #28694 > > |> _assert_eq "spiral"
00:19:47 verbose #28695 > >
00:19:47 verbose #28696 > > ╭─[ 599.72ms - stdout ]────────────────────────────────────────────────────────╮
00:19:47 verbose #28697 > > │ __assert_eq / actual: "spiral" / expected: "spiral"                          │
00:19:47 verbose #28698 > > │                                                                              │
00:19:47 verbose #28699 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:47 verbose #28700 > >
00:19:47 verbose #28701 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:47 verbose #28702 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:47 verbose #28703 > > │ ## rust                                                                      │
00:19:47 verbose #28704 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:47 verbose #28705 > >
00:19:47 verbose #28706 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:47 verbose #28707 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:47 verbose #28708 > > │ ### display                                                                  │
00:19:47 verbose #28709 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:47 verbose #28710 > >
00:19:47 verbose #28711 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:47 verbose #28712 > > nominal display =
00:19:47 verbose #28713 > >     `(
00:19:47 verbose #28714 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:47 verbose #28715 > > Fable.Core.Emit(\"std::path::Display\")>]]\n#endif\ntype std_path_Display =
00:19:47 verbose #28716 > > class end"
00:19:47 verbose #28717 > >         $'' : $'std_path_Display'
00:19:47 verbose #28718 > >     )
00:19:47 verbose #28719 > >
00:19:47 verbose #28720 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:47 verbose #28721 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:47 verbose #28722 > > │ ### path                                                                     │
00:19:47 verbose #28723 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:47 verbose #28724 > >
00:19:47 verbose #28725 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:47 verbose #28726 > > nominal path =
00:19:47 verbose #28727 > >     `(
00:19:47 verbose #28728 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:47 verbose #28729 > > Fable.Core.Emit(\"std::path::Path\")>]]\n#endif\ntype std_path_Path = class end"
00:19:47 verbose #28730 > >         $'' : $'std_path_Path'
00:19:47 verbose #28731 > >     )
00:19:47 verbose #28732 > >
00:19:47 verbose #28733 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:47 verbose #28734 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:47 verbose #28735 > > │ ### path_buf                                                                 │
00:19:47 verbose #28736 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:47 verbose #28737 > >
00:19:47 verbose #28738 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:47 verbose #28739 > > nominal path_buf =
00:19:47 verbose #28740 > >     `(
00:19:47 verbose #28741 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:47 verbose #28742 > > Fable.Core.Emit(\"std::path::PathBuf\")>]]\n#endif\ntype std_path_PathBuf =
00:19:47 verbose #28743 > > class end"
00:19:47 verbose #28744 > >         $'' : $'std_path_PathBuf'
00:19:47 verbose #28745 > >     )
00:19:47 verbose #28746 > >
00:19:47 verbose #28747 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:47 verbose #28748 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:47 verbose #28749 > > │ ### new_path_buf                                                             │
00:19:47 verbose #28750 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:47 verbose #28751 > >
00:19:47 verbose #28752 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:47 verbose #28753 > > inl new_path_buf (path : sm'.std_string) : path_buf =
00:19:47 verbose #28754 > >     !\\(path, $'"std::path::PathBuf::from($0)"')
00:19:47 verbose #28755 > >
00:19:47 verbose #28756 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:47 verbose #28757 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:47 verbose #28758 > > │ ### path_buf_from                                                            │
00:19:47 verbose #28759 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:47 verbose #28760 > >
00:19:47 verbose #28761 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:47 verbose #28762 > > inl path_buf_from (path : rust.box path) : path_buf =
00:19:47 verbose #28763 > >     !\\(path, $'"std::path::PathBuf::from($0)"')
00:19:48 verbose #28764 > >
00:19:48 verbose #28765 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:48 verbose #28766 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:48 verbose #28767 > > │ ### path_buf_join                                                            │
00:19:48 verbose #28768 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:48 verbose #28769 > >
00:19:48 verbose #28770 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:48 verbose #28771 > > inl path_buf_join (s : string) (path_buf : path_buf) : path_buf =
00:19:48 verbose #28772 > >     !\\((path_buf, s |> sm'.to_std_string), $'"$0.join($1)"')
00:19:48 verbose #28773 > >
00:19:48 verbose #28774 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:48 verbose #28775 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:48 verbose #28776 > > │ ### path_buf_strip_prefix                                                    │
00:19:48 verbose #28777 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:48 verbose #28778 > >
00:19:48 verbose #28779 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:48 verbose #28780 > > inl path_buf_strip_prefix (s : string) (path_buf : path_buf) : path_buf =
00:19:48 verbose #28781 > >     !\\((path_buf, s |> sm'.to_std_string),
00:19:48 verbose #28782 > > $'"$0.strip_prefix($1).unwrap().to_path_buf()"')
00:19:48 verbose #28783 > >
00:19:48 verbose #28784 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:48 verbose #28785 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:48 verbose #28786 > > │ ### path_display                                                             │
00:19:48 verbose #28787 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:48 verbose #28788 > >
00:19:48 verbose #28789 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:48 verbose #28790 > > inl path_display (path : rust.ref path) : display =
00:19:48 verbose #28791 > >     !\\(path, $'"$0.display()"')
00:19:48 verbose #28792 > >
00:19:48 verbose #28793 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:48 verbose #28794 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:48 verbose #28795 > > │ ### path_buf_display                                                         │
00:19:48 verbose #28796 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:48 verbose #28797 > >
00:19:48 verbose #28798 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:48 verbose #28799 > > inl path_buf_display (path_buf : path_buf) : display =
00:19:48 verbose #28800 > >     !\\(path_buf, $'"$0.display()"')
00:19:48 verbose #28801 > >
00:19:48 verbose #28802 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:48 verbose #28803 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:48 verbose #28804 > > │ ### path_buf_file_name                                                       │
00:19:48 verbose #28805 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:48 verbose #28806 > >
00:19:48 verbose #28807 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:48 verbose #28808 > > inl path_buf_file_name (path : path_buf) : optionm'.option' (rust.ref
00:19:48 verbose #28809 > > sm'.os_str) =
00:19:48 verbose #28810 > >     !\($'"!path.file_name()"')
00:19:48 verbose #28811 > >
00:19:48 verbose #28812 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:48 verbose #28813 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:48 verbose #28814 > > │ ### path_buf_exists                                                          │
00:19:48 verbose #28815 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:48 verbose #28816 > >
00:19:48 verbose #28817 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:48 verbose #28818 > > inl path_buf_exists (path_buf : path_buf) : bool =
00:19:48 verbose #28819 > >     !\\(path_buf, $'"$0.exists()"')
00:19:48 verbose #28820 > >
00:19:48 verbose #28821 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:48 verbose #28822 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:48 verbose #28823 > > │ ### path_buf_is_dir                                                          │
00:19:48 verbose #28824 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:48 verbose #28825 > >
00:19:48 verbose #28826 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:48 verbose #28827 > > inl path_buf_is_dir (path_buf : path_buf) : bool =
00:19:48 verbose #28828 > >     !\\(path_buf, $'"$0.is_dir()"')
00:19:48 verbose #28829 > >
00:19:48 verbose #28830 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:48 verbose #28831 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:48 verbose #28832 > > │ ### path_buf_is_file                                                         │
00:19:48 verbose #28833 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:48 verbose #28834 > >
00:19:48 verbose #28835 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:48 verbose #28836 > > inl path_buf_is_file (path_buf : path_buf) : bool =
00:19:48 verbose #28837 > >     !\\(path_buf, $'"$0.is_file()"')
00:19:48 verbose #28838 > >
00:19:48 verbose #28839 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:48 verbose #28840 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:48 verbose #28841 > > │ ### path_buf_is_symlink                                                      │
00:19:48 verbose #28842 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:48 verbose #28843 > >
00:19:48 verbose #28844 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:48 verbose #28845 > > inl path_buf_is_symlink (path_buf : path_buf) : bool =
00:19:48 verbose #28846 > >     !\\(path_buf, $'"$0.is_symlink()"')
00:19:48 verbose #28847 > >
00:19:48 verbose #28848 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:48 verbose #28849 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:48 verbose #28850 > > │ ### path_buf_parent                                                          │
00:19:48 verbose #28851 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:48 verbose #28852 > >
00:19:48 verbose #28853 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:48 verbose #28854 > > inl path_buf_parent (path_buf : path_buf) : optionm'.option' path_buf =
00:19:48 verbose #28855 > >     !\\(path_buf, $'"$0.parent().map(std::path::PathBuf::from)"')
00:19:48 verbose #28856 > >
00:19:48 verbose #28857 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:48 verbose #28858 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:48 verbose #28859 > > │ ### dir_entry                                                                │
00:19:48 verbose #28860 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:48 verbose #28861 > >
00:19:48 verbose #28862 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:48 verbose #28863 > > nominal dir_entry =
00:19:48 verbose #28864 > >     `(
00:19:48 verbose #28865 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:48 verbose #28866 > > Fable.Core.Emit(\"async_walkdir::DirEntry\")>]]\n#endif\ntype
00:19:48 verbose #28867 > > async_walkdir_DirEntry = class end"
00:19:48 verbose #28868 > >         $'' : $'async_walkdir_DirEntry'
00:19:48 verbose #28869 > >     )
00:19:48 verbose #28870 > >
00:19:48 verbose #28871 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:48 verbose #28872 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:48 verbose #28873 > > │ ### walk_dir                                                                 │
00:19:48 verbose #28874 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:48 verbose #28875 > >
00:19:48 verbose #28876 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:48 verbose #28877 > > nominal walk_dir =
00:19:48 verbose #28878 > >     `(
00:19:48 verbose #28879 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:48 verbose #28880 > > Fable.Core.Emit(\"async_walkdir::WalkDir\")>]]\n#endif\ntype
00:19:48 verbose #28881 > > async_walkdir_WalkDir = class end"
00:19:48 verbose #28882 > >         $'' : $'async_walkdir_WalkDir'
00:19:48 verbose #28883 > >     )
00:19:49 verbose #28884 > >
00:19:49 verbose #28885 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:49 verbose #28886 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:49 verbose #28887 > > │ ### async_walkdir_filtering                                                  │
00:19:49 verbose #28888 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:49 verbose #28889 > >
00:19:49 verbose #28890 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:49 verbose #28891 > > nominal async_walkdir_filtering =
00:19:49 verbose #28892 > >     `(
00:19:49 verbose #28893 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:49 verbose #28894 > > Fable.Core.Emit(\"async_walkdir::Filtering\")>]]\n#endif\ntype
00:19:49 verbose #28895 > > async_walkdir_Filtering = class end"
00:19:49 verbose #28896 > >         $'' : $'async_walkdir_Filtering'
00:19:49 verbose #28897 > >     )
00:19:49 verbose #28898 > >
00:19:49 verbose #28899 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:49 verbose #28900 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:49 verbose #28901 > > │ ### filtering                                                                │
00:19:49 verbose #28902 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:49 verbose #28903 > >
00:19:49 verbose #28904 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:49 verbose #28905 > > union filtering =
00:19:49 verbose #28906 > >     | Ignore
00:19:49 verbose #28907 > >     | IgnoreDir
00:19:49 verbose #28908 > >     | Continue
00:19:49 verbose #28909 > >
00:19:49 verbose #28910 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:49 verbose #28911 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:49 verbose #28912 > > │ ### async_walkdir_error                                                      │
00:19:49 verbose #28913 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:49 verbose #28914 > >
00:19:49 verbose #28915 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:49 verbose #28916 > > nominal async_walkdir_error =
00:19:49 verbose #28917 > >     `(
00:19:49 verbose #28918 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:49 verbose #28919 > > Fable.Core.Emit(\"async_walkdir::Error\")>]]\n#endif\ntype async_walkdir_Error =
00:19:49 verbose #28920 > > class end"
00:19:49 verbose #28921 > >         $'' : $'async_walkdir_Error'
00:19:49 verbose #28922 > >     )
00:19:49 verbose #28923 > >
00:19:49 verbose #28924 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:49 verbose #28925 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:49 verbose #28926 > > │ ### new_walk_dir                                                             │
00:19:49 verbose #28927 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:49 verbose #28928 > >
00:19:49 verbose #28929 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:49 verbose #28930 > > inl new_walk_dir (dir : string) : walk_dir =
00:19:49 verbose #28931 > >     !\\(dir, $'"async_walkdir::WalkDir::new(&*$0)"')
00:19:49 verbose #28932 > >     // inl walk_dir : walk_dir = walk_dir |> rust.to_mut
00:19:49 verbose #28933 > >     // (!\($'"true; let mut !walk_dir = !walk_dir"') : bool) |> ignore
00:19:49 verbose #28934 > >
00:19:49 verbose #28935 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:49 verbose #28936 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:49 verbose #28937 > > │ ### walk_dir_filter                                                          │
00:19:49 verbose #28938 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:49 verbose #28939 > >
00:19:49 verbose #28940 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:49 verbose #28941 > > inl walk_dir_filter (fn : dir_entry -> async.future_pin_send filtering)
00:19:49 verbose #28942 > > (walk_dir : walk_dir) : walk_dir =
00:19:49 verbose #28943 > >     inl fn entry = async.new_future_send fun () =>
00:19:49 verbose #28944 > >         inl result = fn entry |> async.await_send
00:19:49 verbose #28945 > >         inl filtering : async_walkdir_filtering =
00:19:49 verbose #28946 > >             match result with
00:19:49 verbose #28947 > >             | Ignore => !\($'"async_walkdir::Filtering::Ignore"')
00:19:49 verbose #28948 > >             | IgnoreDir => !\($'"async_walkdir::Filtering::IgnoreDir"')
00:19:49 verbose #28949 > >             | Continue => !\($'"async_walkdir::Filtering::Continue"')
00:19:49 verbose #28950 > >         filtering
00:19:49 verbose #28951 > >     !\\((walk_dir, fn), $'"async_walkdir::WalkDir::filter($0, |x| $1(x))"')
00:19:49 verbose #28952 > >
00:19:49 verbose #28953 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:49 verbose #28954 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:49 verbose #28955 > > │ ### file_type                                                                │
00:19:49 verbose #28956 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:49 verbose #28957 > >
00:19:49 verbose #28958 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:49 verbose #28959 > > nominal file_type =
00:19:49 verbose #28960 > >     `(
00:19:49 verbose #28961 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:49 verbose #28962 > > Fable.Core.Emit(\"std::fs::FileType\")>]]\n#endif\ntype std_fs_FileType = class
00:19:49 verbose #28963 > > end"
00:19:49 verbose #28964 > >         $'' : $'std_fs_FileType'
00:19:49 verbose #28965 > >     )
00:19:49 verbose #28966 > >
00:19:49 verbose #28967 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:49 verbose #28968 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:49 verbose #28969 > > │ ### dir_entry_file_type                                                      │
00:19:49 verbose #28970 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:49 verbose #28971 > >
00:19:49 verbose #28972 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:49 verbose #28973 > > inl dir_entry_file_type (dir_entry : dir_entry) : async.future_pin_send
00:19:49 verbose #28974 > > (resultm.result' file_type stream.io_error) =
00:19:49 verbose #28975 > >     inl dir_entry = join dir_entry
00:19:49 verbose #28976 > >     !\($'"Box::pin(async_walkdir::DirEntry::file_type(&!dir_entry))"')
00:19:49 verbose #28977 > >
00:19:49 verbose #28978 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:49 verbose #28979 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:49 verbose #28980 > > │ ### file_type_is_dir                                                         │
00:19:49 verbose #28981 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:49 verbose #28982 > >
00:19:49 verbose #28983 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:49 verbose #28984 > > inl file_type_is_dir (file_type : file_type) : bool =
00:19:49 verbose #28985 > >     inl file_type = join file_type
00:19:49 verbose #28986 > >     !\($'"std::fs::FileType::is_dir(&!file_type)"')
00:19:49 verbose #28987 > >
00:19:49 verbose #28988 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:49 verbose #28989 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:49 verbose #28990 > > │ ### file                                                                     │
00:19:49 verbose #28991 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:49 verbose #28992 > >
00:19:49 verbose #28993 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:49 verbose #28994 > > nominal file =
00:19:49 verbose #28995 > >     `(
00:19:49 verbose #28996 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:19:49 verbose #28997 > > Fable.Core.Emit(\"std::fs::File\")>]]\n#endif\ntype std_fs_File = class end"
00:19:49 verbose #28998 > >         $'' : $'std_fs_File'
00:19:49 verbose #28999 > >     )
00:19:49 verbose #29000 > >
00:19:49 verbose #29001 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:49 verbose #29002 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:49 verbose #29003 > > │ ### file_open                                                                │
00:19:49 verbose #29004 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:49 verbose #29005 > >
00:19:49 verbose #29006 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:49 verbose #29007 > > inl file_open (path : string) : resultm.result' file stream.io_error =
00:19:49 verbose #29008 > >     !\($'"std::fs::File::open(&*!path)"')
00:19:50 verbose #29009 > >
00:19:50 verbose #29010 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:50 verbose #29011 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:50 verbose #29012 > > │ ### rename                                                                   │
00:19:50 verbose #29013 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:50 verbose #29014 > >
00:19:50 verbose #29015 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:50 verbose #29016 > > inl rename (to : string) (path : string) : resultm.result' () stream.io_error =
00:19:50 verbose #29017 > >     !\($'"std::fs::rename(&*!path, &*!to)"')
00:19:50 verbose #29018 > >
00:19:50 verbose #29019 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:50 verbose #29020 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:50 verbose #29021 > > │ ### dir_entry_path                                                           │
00:19:50 verbose #29022 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:50 verbose #29023 > >
00:19:50 verbose #29024 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:50 verbose #29025 > > inl dir_entry_path (dir_entry : dir_entry) : path_buf =
00:19:50 verbose #29026 > >     !\\(dir_entry, $'"async_walkdir::DirEntry::path(&$0)"')
00:19:50 verbose #29027 > >
00:19:50 verbose #29028 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:50 verbose #29029 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:50 verbose #29030 > > │ ### create_dir_all                                                           │
00:19:50 verbose #29031 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:50 verbose #29032 > >
00:19:50 verbose #29033 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:50 verbose #29034 > > inl create_dir_all (path : string) : resultm.result' () stream.io_error =
00:19:50 verbose #29035 > >     !\\(path, $'"std::fs::create_dir_all(&*$0)"')
00:19:50 verbose #29036 > >
00:19:50 verbose #29037 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:50 verbose #29038 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:50 verbose #29039 > > │ ### read_link                                                                │
00:19:50 verbose #29040 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:50 verbose #29041 > >
00:19:50 verbose #29042 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:50 verbose #29043 > > inl read_link (path : string) : resultm.result' path_buf stream.io_error =
00:19:50 verbose #29044 > >     !\\(path, $'"std::fs::read_link(&*$0)"')
00:19:50 verbose #29045 > >
00:19:50 verbose #29046 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:50 verbose #29047 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:50 verbose #29048 > > │ ### read                                                                     │
00:19:50 verbose #29049 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:50 verbose #29050 > >
00:19:50 verbose #29051 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:50 verbose #29052 > > inl read (path : string) : resultm.result' (am'.vec u8) stream.io_error =
00:19:50 verbose #29053 > >     !\\(path, $'"std::fs::read(&*$0)"')
00:19:50 verbose #29054 > >
00:19:50 verbose #29055 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:50 verbose #29056 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:50 verbose #29057 > > │ ## typescript                                                                │
00:19:50 verbose #29058 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:50 verbose #29059 > >
00:19:50 verbose #29060 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:50 verbose #29061 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:50 verbose #29062 > > │ ### ts_path_join                                                             │
00:19:50 verbose #29063 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:50 verbose #29064 > >
00:19:50 verbose #29065 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:50 verbose #29066 > > inl ts_path_join (b : string) (a : string) : string =
00:19:50 verbose #29067 > >     open typescript_operators
00:19:50 verbose #29068 > >     global "type IPathJoin = abstract join: [[<System.ParamArray>]] paths:
00:19:50 verbose #29069 > > string[[]] -> string"
00:19:50 verbose #29070 > >     inl path : $'IPathJoin' = typescript.import_all "path"
00:19:50 verbose #29071 > >     !\\((join a, join b), $'"!path.join($0, $1)"')
00:19:50 verbose #29072 > >
00:19:50 verbose #29073 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:50 verbose #29074 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:50 verbose #29075 > > │ ## file_system                                                               │
00:19:50 verbose #29076 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:50 verbose #29077 > >
00:19:50 verbose #29078 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:50 verbose #29079 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:50 verbose #29080 > > │ ### (< />)                                                                   │
00:19:50 verbose #29081 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:50 verbose #29082 > >
00:19:50 verbose #29083 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:50 verbose #29084 > > let (</>) (a : string) (b : string) : string =
00:19:50 verbose #29085 > >     run_target function
00:19:50 verbose #29086 > >         | Rust (Contract) => fun () => null ()
00:19:50 verbose #29087 > >         | Rust (Native) => fun () =>
00:19:50 verbose #29088 > >             a
00:19:50 verbose #29089 > >             |> sm'.to_std_string
00:19:50 verbose #29090 > >             |> new_path_buf
00:19:50 verbose #29091 > >             |> path_buf_join b
00:19:50 verbose #29092 > >             |> path_buf_display
00:19:50 verbose #29093 > >             |> sm'.format'
00:19:50 verbose #29094 > >             |> sm'.from_std_string
00:19:50 verbose #29095 > >         | TypeScript (Native) => fun () =>
00:19:50 verbose #29096 > >             a |> ts_path_join b
00:19:50 verbose #29097 > >         | Fsharp (Native) => fun () =>
00:19:50 verbose #29098 > >             $'System.IO.Path.Combine (!a, !b)'
00:19:50 verbose #29099 > >         | target => fun () => failwith $'$"file_system.(</>) / target: {!target}
00:19:50 verbose #29100 > > / a: {!a} / b: {!b}"'
00:19:50 verbose #29101 > >
00:19:50 verbose #29102 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:50 verbose #29103 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:50 verbose #29104 > > │ ### get_temp_path                                                            │
00:19:50 verbose #29105 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:50 verbose #29106 > >
00:19:50 verbose #29107 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:50 verbose #29108 > > let get_temp_path () : string =
00:19:50 verbose #29109 > >     run_target function
00:19:50 verbose #29110 > >         | Rust (Contract) => fun () => null ()
00:19:50 verbose #29111 > >         | Rust (Native) => fun () =>
00:19:50 verbose #29112 > >             !\($'"std::env::temp_dir()"')
00:19:50 verbose #29113 > >             |> path_buf_display
00:19:50 verbose #29114 > >             |> sm'.format'
00:19:50 verbose #29115 > >             |> sm'.from_std_string
00:19:50 verbose #29116 > >         | Fsharp (Native) => fun () =>
00:19:50 verbose #29117 > >             $'System.IO.Path.GetTempPath' ()
00:19:50 verbose #29118 > >         | target => fun () => failwith $'$"file_system.get_temp_path / target:
00:19:50 verbose #29119 > > {!target}"'
00:19:50 verbose #29120 > >
00:19:50 verbose #29121 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:50 verbose #29122 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:50 verbose #29123 > > │ ### get_file_name                                                            │
00:19:50 verbose #29124 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:50 verbose #29125 > >
00:19:50 verbose #29126 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:50 verbose #29127 > > let get_file_name (path : string) : string =
00:19:50 verbose #29128 > >     run_target function
00:19:50 verbose #29129 > >         | Rust (Contract) => fun () => null ()
00:19:50 verbose #29130 > >         | Rust (Native) => fun () =>
00:19:50 verbose #29131 > >             inl path_buf = path |> sm'.to_std_string |> new_path_buf
00:19:50 verbose #29132 > >             !\\(path_buf, $'"$0.file_name()"')
00:19:50 verbose #29133 > >             |> optionm'.unwrap
00:19:50 verbose #29134 > >             |> sm'.from_os_str_ref
00:19:50 verbose #29135 > >         | Fsharp (Native) => fun () =>
00:19:50 verbose #29136 > >             path |> $'System.IO.Path.GetFileName'
00:19:50 verbose #29137 > >         | target => fun () => failwith $'$"file_system.get_file_name / target:
00:19:50 verbose #29138 > > {!target} / path: {!path}"'
00:19:50 verbose #29139 > >
00:19:50 verbose #29140 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:50 verbose #29141 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:50 verbose #29142 > > │ ### get_file_name_without_extension                                          │
00:19:50 verbose #29143 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:50 verbose #29144 > >
00:19:50 verbose #29145 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:50 verbose #29146 > > let get_file_name_without_extension (path : string) : string =
00:19:50 verbose #29147 > >     run_target function
00:19:50 verbose #29148 > >         | Rust (Contract) => fun () => null ()
00:19:50 verbose #29149 > >         | Rust (Native) => fun () =>
00:19:50 verbose #29150 > >             inl path_buf = path |> sm'.to_std_string |> new_path_buf
00:19:50 verbose #29151 > >             !\\(path_buf, $'"$0.file_stem()"')
00:19:50 verbose #29152 > >             |> optionm'.unwrap
00:19:50 verbose #29153 > >             |> sm'.from_os_str_ref
00:19:50 verbose #29154 > >         | _ => fun () =>
00:19:50 verbose #29155 > >             path |> $'System.IO.Path.GetFileNameWithoutExtension'
00:19:51 verbose #29156 > >
00:19:51 verbose #29157 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:51 verbose #29158 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:51 verbose #29159 > > │ ### get_directory_name                                                       │
00:19:51 verbose #29160 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:51 verbose #29161 > >
00:19:51 verbose #29162 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:51 verbose #29163 > > let get_directory_name (path : string) : string =
00:19:51 verbose #29164 > >     run_target function
00:19:51 verbose #29165 > >         | Rust (Contract) => fun () => null ()
00:19:51 verbose #29166 > >         | Rust (Native) => fun () =>
00:19:51 verbose #29167 > >             inl path_buf = path |> sm'.to_std_string |> new_path_buf
00:19:51 verbose #29168 > >             !\\(path_buf, $'"$0.parent()"')
00:19:51 verbose #29169 > >             |> optionm'.unwrap
00:19:51 verbose #29170 > >             |> path_display
00:19:51 verbose #29171 > >             |> sm'.format'
00:19:51 verbose #29172 > >             |> sm'.from_std_string
00:19:51 verbose #29173 > >         | _ => fun () =>
00:19:51 verbose #29174 > >             path |> $'System.IO.Path.GetDirectoryName'
00:19:51 verbose #29175 > >
00:19:51 verbose #29176 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:51 verbose #29177 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:51 verbose #29178 > > │ ### get_extension                                                            │
00:19:51 verbose #29179 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:51 verbose #29180 > >
00:19:51 verbose #29181 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:51 verbose #29182 > > let get_extension (path : string) : string =
00:19:51 verbose #29183 > >     run_target function
00:19:51 verbose #29184 > >         | Rust (Contract) => fun () => null ()
00:19:51 verbose #29185 > >         | Rust (Native) => fun () =>
00:19:51 verbose #29186 > >             inl path_buf = path |> sm'.to_std_string |> new_path_buf
00:19:51 verbose #29187 > >             !\\(path_buf, $'"$0.extension()"')
00:19:51 verbose #29188 > >             |> optionm'.unwrap
00:19:51 verbose #29189 > >             |> sm'.from_os_str_ref
00:19:51 verbose #29190 > >         | _ => fun () =>
00:19:51 verbose #29191 > >             path |> $'System.IO.Path.GetExtension'
00:19:51 verbose #29192 > >
00:19:51 verbose #29193 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:51 verbose #29194 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:51 verbose #29195 > > │ ### directory_separator_char                                                 │
00:19:51 verbose #29196 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:51 verbose #29197 > >
00:19:51 verbose #29198 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:51 verbose #29199 > > let directory_separator_char () : char =
00:19:51 verbose #29200 > >     run_target function
00:19:51 verbose #29201 > >         | Rust (Native) => fun () =>
00:19:51 verbose #29202 > >             !\($'"std::path::MAIN_SEPARATOR"')
00:19:51 verbose #29203 > >         | _ => fun () =>
00:19:51 verbose #29204 > >             $'System.IO.Path.DirectorySeparatorChar'
00:19:51 verbose #29205 > >
00:19:51 verbose #29206 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:51 verbose #29207 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:51 verbose #29208 > > │ ### get_current_directory                                                    │
00:19:51 verbose #29209 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:51 verbose #29210 > >
00:19:51 verbose #29211 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:51 verbose #29212 > > let get_current_directory () : string =
00:19:51 verbose #29213 > >     run_target function
00:19:51 verbose #29214 > >         | Rust (Contract | Wasm) => fun () => null ()
00:19:51 verbose #29215 > >         | Rust (Native) => fun () =>
00:19:51 verbose #29216 > >             inl current_dir = !\($'"std::env::current_dir()"') : resultm.result'
00:19:51 verbose #29217 > > path_buf stream.io_error
00:19:51 verbose #29218 > >             current_dir
00:19:51 verbose #29219 > >             |> resultm.unwrap'
00:19:51 verbose #29220 > >             |> path_buf_display
00:19:51 verbose #29221 > >             |> sm'.format'
00:19:51 verbose #29222 > >             |> sm'.from_std_string
00:19:51 verbose #29223 > >         | Fsharp (Native) => fun () =>
00:19:51 verbose #29224 > >             $'System.IO.Directory.GetCurrentDirectory' ()
00:19:51 verbose #29225 > >         | _ => fun () => null ()
00:19:51 verbose #29226 > >
00:19:51 verbose #29227 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:51 verbose #29228 > > //// test
00:19:51 verbose #29229 > >
00:19:51 verbose #29230 > > get_current_directory ()
00:19:51 verbose #29231 > > |> _assert_contains (directory_separator_char ())
00:19:52 verbose #29232 > >
00:19:52 verbose #29233 > > ╭─[ 488.84ms - stdout ]────────────────────────────────────────────────────────╮
00:19:52 verbose #29234 > > │ __assert_contains / actual: "/home/runner/work/polyglot/polyglot/lib/spiral" │
00:19:52 verbose #29235 > > │ / expected: '/'                                                              │
00:19:52 verbose #29236 > > │                                                                              │
00:19:52 verbose #29237 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:52 verbose #29238 > >
00:19:52 verbose #29239 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:52 verbose #29240 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:52 verbose #29241 > > │ ### normalize_path                                                           │
00:19:52 verbose #29242 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:52 verbose #29243 > >
00:19:52 verbose #29244 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:52 verbose #29245 > > let normalize_path (path : string) : string =
00:19:52 verbose #29246 > >     if path = ""
00:19:52 verbose #29247 > >     then ""
00:19:52 verbose #29248 > >     else
00:19:52 verbose #29249 > >         inl path = path |> sm'.replace_regex @"^\\\\\?\\" ""
00:19:52 verbose #29250 > >         $'$"{!path.[[0]] |> string |> _.ToLower()}{!path.[[1..]]}"' |>
00:19:52 verbose #29251 > > sm'.replace "\\" "/"
00:19:52 verbose #29252 > >
00:19:52 verbose #29253 > > ── markdown ────────────────────────────────────────────────────────────────────
00:19:52 verbose #29254 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:19:52 verbose #29255 > > │ ### get_full_path                                                            │
00:19:52 verbose #29256 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:52 verbose #29257 > >
00:19:52 verbose #29258 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:52 verbose #29259 > > let get_full_path (path : string) : string =
00:19:52 verbose #29260 > >     run_target_args (fun () => path) function
00:19:52 verbose #29261 > >         | Fsharp (Native) => fun path =>
00:19:52 verbose #29262 > >             path |> $'System.IO.Path.GetFullPath'
00:19:52 verbose #29263 > >         | Rust (Native) => fun path =>
00:19:52 verbose #29264 > >             inl path_buf = path |> sm'.to_std_string |> new_path_buf
00:19:52 verbose #29265 > >             if path_buf |> path_buf_exists |> not then
00:19:52 verbose #29266 > >                 inl current_dir = get_current_directory ()
00:19:52 verbose #29267 > >                 current_dir </> path
00:19:52 verbose #29268 > >                 |> normalize_path
00:19:52 verbose #29269 > >                 |> sm'.split "/"
00:19:52 verbose #29270 > >                 |> fun x =>
00:19:52 verbose #29271 > >                     ((a x : _ i32 _), (0i32, (a ;[[]] : _ i32 _)))
00:19:52 verbose #29272 > >                     ||> am.foldBack fun x level, acc =>
00:19:52 verbose #29273 > >                         match x, level with
00:19:52 verbose #29274 > >                         | "..", _ => level + 1, acc
00:19:52 verbose #29275 > >                         | ".", _ => level, acc
00:19:52 verbose #29276 > >                         | _, 0 when x |> sm'.ends_with ":" => 0, a ;[[
00:19:52 verbose #29277 > > $'$"{!current_dir.[[0]]}:"' ]] ++ acc
00:19:52 verbose #29278 > >                         | _, 0 => 0, a ;[[ x ]] ++ acc
00:19:52 verbose #29279 > >                         | _ => level - 1, acc
00:19:52 verbose #29280 > >                 |> snd
00:19:52 verbose #29281 > >                 |> seq.of_array'
00:19:52 verbose #29282 > >                 |> sm'.concat (directory_separator_char () |> sm'.obj_to_string)
00:19:52 verbose #29283 > >             else
00:19:52 verbose #29284 > >                 inl path = !\\(path, $'"std::fs::canonicalize(&*$0)"') :
00:19:52 verbose #29285 > > resultm.result' path_buf stream.io_error
00:19:52 verbose #29286 > >                 path
00:19:52 verbose #29287 > >                 |> resultm.unwrap'
00:19:52 verbose #29288 > >                 |> path_buf_display
00:19:52 verbose #29289 > >                 |> sm'.format'
00:19:52 verbose #29290 > >                 |> sm'.from_std_string
00:19:52 verbose #29291 > >         | _ => fun _ => null ()
00:19:52 verbose #29292 > >
00:19:52 verbose #29293 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:52 verbose #29294 > > //// test
00:19:52 verbose #29295 > >
00:19:52 verbose #29296 > > "."
00:19:52 verbose #29297 > > |> get_full_path
00:19:52 verbose #29298 > > |> directory_info
00:19:52 verbose #29299 > > |> directory_info_name
00:19:52 verbose #29300 > > |> _assert_eq "spiral"
00:19:52 verbose #29301 > >
00:19:52 verbose #29302 > > ╭─[ 355.58ms - stdout ]────────────────────────────────────────────────────────╮
00:19:52 verbose #29303 > > │ __assert_eq / actual: "spiral" / expected: "spiral"                          │
00:19:52 verbose #29304 > > │                                                                              │
00:19:52 verbose #29305 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:52 verbose #29306 > >
00:19:52 verbose #29307 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:52 verbose #29308 > > //// test
00:19:52 verbose #29309 > >
00:19:52 verbose #29310 > > "dir/.././._file"
00:19:52 verbose #29311 > > |> get_full_path
00:19:52 verbose #29312 > > |> _assert_eq (get_current_directory () </> "._file")
00:19:53 verbose #29313 > >
00:19:53 verbose #29314 > > ╭─[ 235.22ms - stdout ]────────────────────────────────────────────────────────╮
00:19:53 verbose #29315 > > │ __assert_eq / actual:                                                        │
00:19:53 verbose #29316 > > │ "/home/runner/work/polyglot/polyglot/lib/spiral/._file" / expected:          │
00:19:53 verbose #29317 > > │ "/home/runner/work/polyglot/polyglot/lib/spiral/._file"                      │
00:19:53 verbose #29318 > > │                                                                              │
00:19:53 verbose #29319 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:19:53 verbose #29320 > >
00:19:53 verbose #29321 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:19:53 verbose #29322 > > //// test
00:19:53 verbose #29323 > > ///! rust -d regex
00:19:53 verbose #29324 > >
00:19:53 verbose #29325 > > "."
00:19:53 verbose #29326 > > |> get_full_path
00:19:53 verbose #29327 > > |> sm'.to_std_string
00:19:53 verbose #29328 > > |> new_path_buf
00:19:53 verbose #29329 > > |> path_buf_file_name
00:19:53 verbose #29330 > > |> optionm'.unwrap
00:19:53 verbose #29331 > > |> sm'.from_os_str_ref
00:19:53 verbose #29332 > > |> _assert_eq "spiral"
00:20:01 verbose #29333 > >
00:20:01 verbose #29334 > > ╭─[ 7.98s - return value ]─────────────────────────────────────────────────────╮
00:20:01 verbose #29335 > > │ __assert_eq / actual: "spiral" / expected: "spiral"                          │
00:20:01 verbose #29336 > > │                                                                              │
00:20:01 verbose #29337 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:01 verbose #29338 > >
00:20:01 verbose #29339 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:01 verbose #29340 > > //// test
00:20:01 verbose #29341 > > ///! rust -d regex
00:20:01 verbose #29342 > >
00:20:01 verbose #29343 > > "dir/.././._file"
00:20:01 verbose #29344 > > |> get_full_path
00:20:01 verbose #29345 > > |> _assert_eq (get_current_directory () </> "._file")
00:20:08 verbose #29346 > >
00:20:08 verbose #29347 > > ╭─[ 7.61s - return value ]─────────────────────────────────────────────────────╮
00:20:08 verbose #29348 > > │ __assert_eq / actual:                                                        │
00:20:08 verbose #29349 > > │ "/home/runner/work/polyglot/polyglot/lib/spiral/._file" / expected:          │
00:20:08 verbose #29350 > > │ "/home/runner/work/polyglot/polyglot/lib/spiral/._file"                      │
00:20:08 verbose #29351 > > │                                                                              │
00:20:08 verbose #29352 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:08 verbose #29353 > >
00:20:08 verbose #29354 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:08 verbose #29355 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:08 verbose #29356 > > │ ### create_temp_path'                                                        │
00:20:08 verbose #29357 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:08 verbose #29358 > >
00:20:08 verbose #29359 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:08 verbose #29360 > > let create_temp_path' (guid : guid.guid) =
00:20:08 verbose #29361 > >     run_target function
00:20:08 verbose #29362 > >         | Rust (Contract) => fun () => null ()
00:20:08 verbose #29363 > >         | _ => fun () =>
00:20:08 verbose #29364 > >             get_temp_path ()
00:20:08 verbose #29365 > >             </> (join "!create_temp_path_")
00:20:08 verbose #29366 > >             </> (env.get_entry_assembly_name ())
00:20:08 verbose #29367 > >             </> (guid |> sm'.obj_to_string)
00:20:08 verbose #29368 > >
00:20:08 verbose #29369 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:08 verbose #29370 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:08 verbose #29371 > > │ ### create_temp_path                                                         │
00:20:08 verbose #29372 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:08 verbose #29373 > >
00:20:08 verbose #29374 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:08 verbose #29375 > > let create_temp_path () =
00:20:08 verbose #29376 > >     run_target function
00:20:08 verbose #29377 > >         | Rust (Contract) => fun () => null ()
00:20:08 verbose #29378 > >         | _ => fun () =>
00:20:08 verbose #29379 > >             date_time.now ()
00:20:08 verbose #29380 > >             |> date_time.new_guid_from_date_time
00:20:08 verbose #29381 > >             |> create_temp_path'
00:20:08 verbose #29382 > >
00:20:08 verbose #29383 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:08 verbose #29384 > > //// test
00:20:08 verbose #29385 > > ///! fsharp
00:20:08 verbose #29386 > > ///! rust -d chrono
00:20:08 verbose #29387 > >
00:20:08 verbose #29388 > > create_temp_path ()
00:20:08 verbose #29389 > > |> _assert_contains (directory_separator_char ())
00:20:16 verbose #29390 > >
00:20:16 verbose #29391 > > ╭─[ 8.01s - return value ]─────────────────────────────────────────────────────╮
00:20:16 verbose #29392 > > │ .rs output (rust -d chrono):                                                 │
00:20:16 verbose #29393 > > │ __assert_contains / actual:                                                  │
00:20:16 verbose #29394 > > │ "/tmp/!create_temp_path_/spiral_builder_283d6cdc19e521971f64a774311f04e4b9f7 │
00:20:16 verbose #29395 > > │ 262beea335634a50e16ace236d25/20240906-1503-5101-8162-00000095c71a" /         │
00:20:16 verbose #29396 > > │ expected: '/'                                                                │
00:20:16 verbose #29397 > > │                                                                              │
00:20:16 verbose #29398 > > │                                                                              │
00:20:16 verbose #29399 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:16 verbose #29400 > >
00:20:16 verbose #29401 > > ╭─[ 8.01s - stdout ]───────────────────────────────────────────────────────────╮
00:20:16 verbose #29402 > > │ .fsx output:                                                                 │
00:20:16 verbose #29403 > > │ __assert_contains / actual:                                                  │
00:20:16 verbose #29404 > > │ "/tmp/!create_temp_path_/dotnet-repl/20240906-1503-5127-2701-20000025e003" / │
00:20:16 verbose #29405 > > │ expected: '/'                                                                │
00:20:16 verbose #29406 > > │                                                                              │
00:20:16 verbose #29407 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:16 verbose #29408 > >
00:20:16 verbose #29409 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:16 verbose #29410 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:16 verbose #29411 > > │ ### directory_exists                                                         │
00:20:16 verbose #29412 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:16 verbose #29413 > >
00:20:16 verbose #29414 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:16 verbose #29415 > > let directory_exists (path : string) : bool =
00:20:16 verbose #29416 > >     run_target function
00:20:16 verbose #29417 > >         | Fsharp (Native) => fun () =>
00:20:16 verbose #29418 > >             path |> $'System.IO.Directory.Exists'
00:20:16 verbose #29419 > >         | Rust (Native) => fun () =>
00:20:16 verbose #29420 > >             inl path = path |> sm'.to_std_string |> new_path_buf
00:20:16 verbose #29421 > >             path_buf_exists path || path_buf_is_dir path || path_buf_is_symlink
00:20:16 verbose #29422 > > path
00:20:16 verbose #29423 > >         | TypeScript (Native) => fun () =>
00:20:16 verbose #29424 > >             global "type IFsExistsSync = abstract existsSync: path: string ->
00:20:16 verbose #29425 > > bool"
00:20:16 verbose #29426 > >             open typescript_operators
00:20:16 verbose #29427 > >             inl fs : $'IFsExistsSync' = typescript.import_all "fs"
00:20:16 verbose #29428 > >             !\\((fs, path), $'"$0.existsSync($1)"')
00:20:16 verbose #29429 > >         | _ => fun () => null ()
00:20:16 verbose #29430 > >
00:20:16 verbose #29431 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:16 verbose #29432 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:16 verbose #29433 > > │ ### directory_get_parent                                                     │
00:20:16 verbose #29434 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:16 verbose #29435 > >
00:20:16 verbose #29436 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:16 verbose #29437 > > let directory_get_parent (path : string) : optionm'.option' string =
00:20:16 verbose #29438 > >     run_target function
00:20:16 verbose #29439 > >         | Fsharp (Native) => fun () =>
00:20:16 verbose #29440 > >             inl parent : directory_info = path |>
00:20:16 verbose #29441 > > $'System.IO.Directory.GetParent'
00:20:16 verbose #29442 > >             if parent =. null ()
00:20:16 verbose #29443 > >             then None
00:20:16 verbose #29444 > >             else parent |> directory_info_full_name |> Some
00:20:16 verbose #29445 > >         | Rust (Native) => fun () =>
00:20:16 verbose #29446 > >             path
00:20:16 verbose #29447 > >             |> sm'.to_std_string
00:20:16 verbose #29448 > >             |> new_path_buf
00:20:16 verbose #29449 > >             |> path_buf_parent
00:20:16 verbose #29450 > >             |> optionm'.try'
00:20:16 verbose #29451 > >             |> path_buf_display
00:20:16 verbose #29452 > >             |> sm'.format'
00:20:16 verbose #29453 > >             |> sm'.from_std_string
00:20:16 verbose #29454 > >             |> Some
00:20:16 verbose #29455 > >         | TypeScript _ => fun () =>
00:20:16 verbose #29456 > >             open typescript_operators
00:20:16 verbose #29457 > >             global "type IPathDirname = abstract dirname: path: string ->
00:20:16 verbose #29458 > > string"
00:20:16 verbose #29459 > >             inl fs : $'IPathDirname' = typescript.import_all "path"
00:20:16 verbose #29460 > >             !\\(path, $'"!fs.dirname($0)"') |> Some
00:20:16 verbose #29461 > >         | _ => fun () => null ()
00:20:16 verbose #29462 > >     |> optionm'.box
00:20:17 verbose #29463 > >
00:20:17 verbose #29464 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:17 verbose #29465 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:17 verbose #29466 > > │ ### file_copy                                                                │
00:20:17 verbose #29467 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:17 verbose #29468 > >
00:20:17 verbose #29469 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:17 verbose #29470 > > let file_copy (new_path : string) (old_path : string) : () =
00:20:17 verbose #29471 > >     run_target function
00:20:17 verbose #29472 > >         | Fsharp (Native) => fun () =>
00:20:17 verbose #29473 > >             $'System.IO.File.Copy (!old_path, !new_path, true)'
00:20:17 verbose #29474 > >         | Rust (Native) => fun () =>
00:20:17 verbose #29475 > >             inl new_path = join new_path
00:20:17 verbose #29476 > >             !\\(old_path, $'"std::fs::copy(&*$0, &*!new_path)"')
00:20:17 verbose #29477 > >             |> fun x => x : _ u64 stream.io_error
00:20:17 verbose #29478 > >             |> resultm.unwrap'
00:20:17 verbose #29479 > >             |> ignore
00:20:17 verbose #29480 > >         | _ => fun () => ()
00:20:17 verbose #29481 > >
00:20:17 verbose #29482 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:17 verbose #29483 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:17 verbose #29484 > > │ ### file_exists                                                              │
00:20:17 verbose #29485 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:17 verbose #29486 > >
00:20:17 verbose #29487 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:17 verbose #29488 > > let file_exists (path : string) : bool =
00:20:17 verbose #29489 > >     run_target function
00:20:17 verbose #29490 > >         | Fsharp (Native) => fun () =>
00:20:17 verbose #29491 > >             path |> $'System.IO.File.Exists'
00:20:17 verbose #29492 > >         | Rust (Native) => fun () =>
00:20:17 verbose #29493 > >             inl path_buf = path |> sm'.to_std_string |> new_path_buf
00:20:17 verbose #29494 > >             path_buf_exists path_buf && path_buf_is_file path_buf
00:20:17 verbose #29495 > >         | TypeScript (Native) => fun () =>
00:20:17 verbose #29496 > >             open typescript_operators
00:20:17 verbose #29497 > >             global "type IFsExistsSync = abstract existsSync: path: string ->
00:20:17 verbose #29498 > > bool"
00:20:17 verbose #29499 > >             inl fs : $'IFsExistsSync' = typescript.import_all "fs"
00:20:17 verbose #29500 > >             !\\((fs, path), $'"$0.existsSync($1)"')
00:20:17 verbose #29501 > >         | _ => fun () => null ()
00:20:17 verbose #29502 > >
00:20:17 verbose #29503 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:17 verbose #29504 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:17 verbose #29505 > > │ ### directory_delete                                                         │
00:20:17 verbose #29506 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:17 verbose #29507 > >
00:20:17 verbose #29508 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:17 verbose #29509 > > let directory_delete recursive (path : string) : () =
00:20:17 verbose #29510 > >     run_target function
00:20:17 verbose #29511 > >         | Fsharp (Native) => fun () =>
00:20:17 verbose #29512 > >             $'System.IO.Directory.Delete (!path, !recursive)'
00:20:17 verbose #29513 > >         | Rust (Native) => fun () =>
00:20:17 verbose #29514 > >             inl path = join path
00:20:17 verbose #29515 > >             if path |> directory_exists then
00:20:17 verbose #29516 > >                 if recursive
00:20:17 verbose #29517 > >                 then !\\(path, $'"std::fs::remove_dir_all(&*$0).unwrap()"')
00:20:17 verbose #29518 > >                 else !\\(path, $'"std::fs::remove_dir(&*$0).unwrap()"')
00:20:17 verbose #29519 > >         | _ => fun () => ()
00:20:17 verbose #29520 > >
00:20:17 verbose #29521 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:17 verbose #29522 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:17 verbose #29523 > > │ ### write_all_text                                                           │
00:20:17 verbose #29524 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:17 verbose #29525 > >
00:20:17 verbose #29526 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:17 verbose #29527 > > inl write_all_text (path : string) (text : string) : () =
00:20:17 verbose #29528 > >     run_target function
00:20:17 verbose #29529 > >         | Fsharp (Native) => fun () =>
00:20:17 verbose #29530 > >             inl text = join text
00:20:17 verbose #29531 > >             $'System.IO.File.WriteAllText (!path, !text)'
00:20:17 verbose #29532 > >         | Rust (Native) => fun () =>
00:20:17 verbose #29533 > >             !\\((path, text), $'"std::fs::write(&*$0, &*$1).unwrap()"')
00:20:17 verbose #29534 > >         | _ => fun () => ()
00:20:17 verbose #29535 > >
00:20:17 verbose #29536 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:17 verbose #29537 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:17 verbose #29538 > > │ ### read_all_bytes                                                           │
00:20:17 verbose #29539 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:17 verbose #29540 > >
00:20:17 verbose #29541 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:17 verbose #29542 > > inl read_all_bytes (path : string) : am'.vec u8 =
00:20:17 verbose #29543 > >     run_target function
00:20:17 verbose #29544 > >         | Fsharp (Native) => fun () =>
00:20:17 verbose #29545 > >             $'!path |> System.IO.File.ReadAllBytes'
00:20:17 verbose #29546 > >             |> am'.to_vec
00:20:17 verbose #29547 > >         | Rust (Native) => fun () =>
00:20:17 verbose #29548 > >             path |> read |> resultm.unwrap'
00:20:17 verbose #29549 > >         | _ => fun () => null ()
00:20:17 verbose #29550 > >
00:20:17 verbose #29551 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:17 verbose #29552 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:17 verbose #29553 > > │ ### read_all_text                                                            │
00:20:17 verbose #29554 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:17 verbose #29555 > >
00:20:17 verbose #29556 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:17 verbose #29557 > > inl read_all_text (path : string) : string =
00:20:17 verbose #29558 > >     run_target function
00:20:17 verbose #29559 > >         | Fsharp (Native) => fun () =>
00:20:17 verbose #29560 > >             $'!path |> System.IO.File.ReadAllText'
00:20:17 verbose #29561 > >         | Rust (Native) => fun () =>
00:20:17 verbose #29562 > >             path
00:20:17 verbose #29563 > >             |> read_all_bytes
00:20:17 verbose #29564 > >             |> sm'.string_from_utf8
00:20:17 verbose #29565 > >             |> resultm.unwrap'
00:20:17 verbose #29566 > >             |> sm'.from_std_string
00:20:17 verbose #29567 > >         | _ => fun () => null ()
00:20:17 verbose #29568 > >
00:20:17 verbose #29569 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:17 verbose #29570 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:17 verbose #29571 > > │ ### directory_create_symbolic_link                                           │
00:20:17 verbose #29572 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:17 verbose #29573 > >
00:20:17 verbose #29574 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:17 verbose #29575 > > inl directory_create_symbolic_link (target : string) (path : string) : () =
00:20:17 verbose #29576 > >     run_target function
00:20:17 verbose #29577 > >         | Fsharp (Native) => fun () =>
00:20:17 verbose #29578 > >             ($'System.IO.Directory.CreateSymbolicLink (!path, !target)' :
00:20:17 verbose #29579 > > file_system_info)
00:20:17 verbose #29580 > >             |> ignore
00:20:17 verbose #29581 > >         | Rust (Native) => fun () =>
00:20:17 verbose #29582 > >             platform.run_platform function
00:20:17 verbose #29583 > >                 | Windows => fun () => !\\((target, path),
00:20:17 verbose #29584 > > $'"std::os::windows::fs::symlink_dir(&*$0, &*$1).unwrap()"')
00:20:17 verbose #29585 > >                 | _ => fun () => !\\((target, path),
00:20:17 verbose #29586 > > $'"std::os::unix::fs::symlink(&*$0, &*$1).unwrap()"')
00:20:17 verbose #29587 > >         | _ => fun () => ()
00:20:17 verbose #29588 > >
00:20:17 verbose #29589 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:17 verbose #29590 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:17 verbose #29591 > > │ ### find_parent                                                              │
00:20:17 verbose #29592 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:17 verbose #29593 > >
00:20:17 verbose #29594 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:17 verbose #29595 > > inl find_parent name is_file root_dir =
00:20:17 verbose #29596 > >     let rec loop dir =
00:20:17 verbose #29597 > >         if dir </> name |> (if is_file then file_exists else directory_exists)
00:20:17 verbose #29598 > >         then dir |> Ok
00:20:17 verbose #29599 > >         else
00:20:17 verbose #29600 > >             inl result = dir |> (join directory_get_parent)
00:20:17 verbose #29601 > >             match result |> optionm'.unbox with
00:20:17 verbose #29602 > >             | Some parent => parent |> loop
00:20:17 verbose #29603 > >             | None => ($'$"""No parent for {if !is_file then "file" else "dir"}
00:20:17 verbose #29604 > > \'{!name}\' at \'{!root_dir}\' (until \'{!dir}\')"""' : string) |> Error
00:20:17 verbose #29605 > >     loop root_dir
00:20:17 verbose #29606 > >
00:20:17 verbose #29607 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:17 verbose #29608 > > //// test
00:20:17 verbose #29609 > >
00:20:17 verbose #29610 > > a ;[[ ".paket", false; "paket.dependencies", true ]]
00:20:17 verbose #29611 > > |> am.map fun (file, is_file) =>
00:20:17 verbose #29612 > >     get_source_directory ()
00:20:17 verbose #29613 > >     |> find_parent file is_file
00:20:17 verbose #29614 > >     |> resultm.get
00:20:17 verbose #29615 > >     |> directory_info
00:20:17 verbose #29616 > >     |> directory_info_name
00:20:17 verbose #29617 > > |> am'.distinct
00:20:17 verbose #29618 > > |> fun (a x : _ int _) => x
00:20:17 verbose #29619 > > |> _assert_eq' ;[[ "polyglot" ]]
00:20:18 verbose #29620 > >
00:20:18 verbose #29621 > > ╭─[ 298.49ms - stdout ]────────────────────────────────────────────────────────╮
00:20:18 verbose #29622 > > │ __assert_eq' / actual: [|"polyglot"|] / expected: [|"polyglot"|]             │
00:20:18 verbose #29623 > > │                                                                              │
00:20:18 verbose #29624 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:18 verbose #29625 > >
00:20:18 verbose #29626 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:18 verbose #29627 > > //// test
00:20:18 verbose #29628 > > ///! rust
00:20:18 verbose #29629 > >
00:20:18 verbose #29630 > > a ;[[ ".paket", false; "paket.dependencies", true ]]
00:20:18 verbose #29631 > > |> am.map fun (file, is_file) =>
00:20:18 verbose #29632 > >     fun () =>
00:20:18 verbose #29633 > >         join
00:20:18 verbose #29634 > >             get_source_directory ()
00:20:18 verbose #29635 > >             |> find_parent file is_file
00:20:18 verbose #29636 > >             |> resultm.get
00:20:18 verbose #29637 > >             |> sm'.to_std_string
00:20:18 verbose #29638 > >             |> new_path_buf
00:20:18 verbose #29639 > >             |> path_buf_file_name
00:20:18 verbose #29640 > >             |> optionm'.try'
00:20:18 verbose #29641 > >             |> sm'.from_os_str_ref
00:20:18 verbose #29642 > >             |> Some
00:20:18 verbose #29643 > >             |> optionm'.box
00:20:18 verbose #29644 > >     |> fun x => x () |> optionm'.unbox
00:20:18 verbose #29645 > >     |> optionm'.default_value ""
00:20:18 verbose #29646 > > |> am'.distinct
00:20:18 verbose #29647 > > |> fun result =>
00:20:18 verbose #29648 > >     result |> am'.length |> _assert_eq 1i32
00:20:18 verbose #29649 > >     index result 0i32 |> _assert_eq "polyglot"
00:20:25 verbose #29650 > >
00:20:25 verbose #29651 > > ╭─[ 7.80s - return value ]─────────────────────────────────────────────────────╮
00:20:25 verbose #29652 > > │ __assert_eq / actual: 1 / expected: 1                                        │
00:20:25 verbose #29653 > > │ __assert_eq / actual: "polyglot" / expected: "polyglot"                      │
00:20:25 verbose #29654 > > │                                                                              │
00:20:25 verbose #29655 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:25 verbose #29656 > >
00:20:25 verbose #29657 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:25 verbose #29658 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:25 verbose #29659 > > │ ### get_workspace_root                                                       │
00:20:25 verbose #29660 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:25 verbose #29661 > >
00:20:25 verbose #29662 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:25 verbose #29663 > > inl get_workspace_root () =
00:20:25 verbose #29664 > >     (None, [[ get_source_directory; get_current_directory ]])
00:20:25 verbose #29665 > >     ||> listm.fold fun acc path =>
00:20:25 verbose #29666 > >         match acc with
00:20:25 verbose #29667 > >         | Some path => Some path
00:20:25 verbose #29668 > >         | None =>
00:20:25 verbose #29669 > >             path ()
00:20:25 verbose #29670 > >             |> find_parent ("polyglot" </> ".devcontainer") false
00:20:25 verbose #29671 > >             |> function
00:20:25 verbose #29672 > >                 | Ok path => Some path
00:20:25 verbose #29673 > >                 | Error error =>
00:20:25 verbose #29674 > >                     trace Warning
00:20:25 verbose #29675 > >                         fun () => "file_system.get_workspace_root"
00:20:25 verbose #29676 > >                         fun () => { error }
00:20:25 verbose #29677 > >                     None
00:20:25 verbose #29678 > >     |> optionm.value
00:20:25 verbose #29679 > >     |> fun root => root </> "polyglot"
00:20:26 verbose #29680 > >
00:20:26 verbose #29681 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:26 verbose #29682 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:26 verbose #29683 > > │ ### get_workspace_root_external                                              │
00:20:26 verbose #29684 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:26 verbose #29685 > >
00:20:26 verbose #29686 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:26 verbose #29687 > > inl get_workspace_root_external () =
00:20:26 verbose #29688 > >     inl workspace_root = get_workspace_root ()
00:20:26 verbose #29689 > >     inl current_dir = get_current_directory () |> sm'.to_lower
00:20:26 verbose #29690 > >     inl workspace_root = workspace_root |> sm'.to_lower
00:20:26 verbose #29691 > >     if current_dir |> sm'.starts_with workspace_root
00:20:26 verbose #29692 > >     then Error workspace_root
00:20:26 verbose #29693 > >     else Ok workspace_root
00:20:26 verbose #29694 > >
00:20:26 verbose #29695 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:26 verbose #29696 > > //// test
00:20:26 verbose #29697 > >
00:20:26 verbose #29698 > > get_workspace_root_external ()
00:20:26 verbose #29699 > > |> resultm.unwrap_err
00:20:26 verbose #29700 > > |> get_file_name
00:20:26 verbose #29701 > > |> _assert_eq "polyglot"
00:20:26 verbose #29702 > >
00:20:26 verbose #29703 > > ╭─[ 441.30ms - stdout ]────────────────────────────────────────────────────────╮
00:20:26 verbose #29704 > > │ __assert_eq / actual: "polyglot" / expected: "polyglot"                      │
00:20:26 verbose #29705 > > │                                                                              │
00:20:26 verbose #29706 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:26 verbose #29707 > >
00:20:26 verbose #29708 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:26 verbose #29709 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:26 verbose #29710 > > │ ### standardize_path                                                         │
00:20:26 verbose #29711 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:26 verbose #29712 > >
00:20:26 verbose #29713 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:26 verbose #29714 > > let standardize_path path =
00:20:26 verbose #29715 > >     path |> get_full_path |> normalize_path
00:20:26 verbose #29716 > >
00:20:26 verbose #29717 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:26 verbose #29718 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:26 verbose #29719 > > │ ### absolute_path                                                            │
00:20:26 verbose #29720 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:26 verbose #29721 > >
00:20:26 verbose #29722 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:26 verbose #29723 > > let absolute_path path =
00:20:26 verbose #29724 > >     inl current_dir = get_current_directory ()
00:20:26 verbose #29725 > >     current_dir </> path |> standardize_path
00:20:26 verbose #29726 > >
00:20:26 verbose #29727 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:26 verbose #29728 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:26 verbose #29729 > > │ ### new_file_uri                                                             │
00:20:26 verbose #29730 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:26 verbose #29731 > >
00:20:26 verbose #29732 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:26 verbose #29733 > > inl new_file_uri (path : string) : string =
00:20:26 verbose #29734 > >     inl path = path |> sm'.trim_start [[ '/' ]]
00:20:26 verbose #29735 > >     $'$"file:///{!path}"'
00:20:26 verbose #29736 > >
00:20:26 verbose #29737 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:26 verbose #29738 > > //// test
00:20:26 verbose #29739 > >
00:20:26 verbose #29740 > > @"\\?\C:\test"
00:20:26 verbose #29741 > > |> normalize_path
00:20:26 verbose #29742 > > |> new_file_uri
00:20:26 verbose #29743 > > |> _assert_eq "file:///c:/test"
00:20:27 verbose #29744 > >
00:20:27 verbose #29745 > > ╭─[ 121.43ms - stdout ]────────────────────────────────────────────────────────╮
00:20:27 verbose #29746 > > │ __assert_eq / actual: "file:///c:/test" / expected: "file:///c:/test"        │
00:20:27 verbose #29747 > > │                                                                              │
00:20:27 verbose #29748 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:27 verbose #29749 > >
00:20:27 verbose #29750 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:27 verbose #29751 > > //// test
00:20:27 verbose #29752 > > ///! rust -d regex
00:20:27 verbose #29753 > >
00:20:27 verbose #29754 > > @"\\?\C:\test"
00:20:27 verbose #29755 > > |> normalize_path
00:20:27 verbose #29756 > > |> new_file_uri
00:20:27 verbose #29757 > > |> _assert_eq "file:///c:/test"
00:20:34 verbose #29758 > >
00:20:34 verbose #29759 > > ╭─[ 7.05s - return value ]─────────────────────────────────────────────────────╮
00:20:34 verbose #29760 > > │ __assert_eq / actual: "file:///c:/test" / expected: "file:///c:/test"        │
00:20:34 verbose #29761 > > │                                                                              │
00:20:34 verbose #29762 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:34 verbose #29763 > >
00:20:34 verbose #29764 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:34 verbose #29765 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:34 verbose #29766 > > │ ### file_delete                                                              │
00:20:34 verbose #29767 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:34 verbose #29768 > >
00:20:34 verbose #29769 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:34 verbose #29770 > > inl file_delete (path : string) : () =
00:20:34 verbose #29771 > >     run_target function
00:20:34 verbose #29772 > >         | Fsharp (Native) => fun () =>
00:20:34 verbose #29773 > >             path |> $'System.IO.File.Delete'
00:20:34 verbose #29774 > >         | Rust (Native) => fun () =>
00:20:34 verbose #29775 > >             !\\(path, $'"std::fs::remove_file(&*$0).unwrap()"')
00:20:34 verbose #29776 > >         | _ => fun () => ()
00:20:34 verbose #29777 > >
00:20:34 verbose #29778 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:34 verbose #29779 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:34 verbose #29780 > > │ ## fsharp                                                                    │
00:20:34 verbose #29781 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:34 verbose #29782 > >
00:20:34 verbose #29783 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:34 verbose #29784 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:34 verbose #29785 > > │ ### file_exists_content_async                                                │
00:20:34 verbose #29786 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:34 verbose #29787 > >
00:20:34 verbose #29788 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:34 verbose #29789 > > inl file_exists_content_async path content : async.async bool =
00:20:34 verbose #29790 > >     run_target function
00:20:34 verbose #29791 > >         | Fsharp (Native) => fun () =>
00:20:34 verbose #29792 > >             fun () =>
00:20:34 verbose #29793 > >                 fix_condition
00:20:34 verbose #29794 > >                     fun () => path |> file_exists |> not
00:20:34 verbose #29795 > >                     fun () => false |> return
00:20:34 verbose #29796 > >                     fun () =>
00:20:34 verbose #29797 > >                         inl existing_content = path |> read_all_text_async |>
00:20:34 verbose #29798 > > async.let'
00:20:34 verbose #29799 > >                         content = existing_content |> return
00:20:34 verbose #29800 > >             |> async.new_async_unit
00:20:34 verbose #29801 > >         | _ => fun () => null ()
00:20:34 verbose #29802 > >
00:20:34 verbose #29803 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:34 verbose #29804 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:34 verbose #29805 > > │ ### write_all_text_exists_async                                              │
00:20:34 verbose #29806 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:34 verbose #29807 > >
00:20:34 verbose #29808 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:34 verbose #29809 > > inl write_all_text_exists_async path contents =
00:20:34 verbose #29810 > >     fun () =>
00:20:34 verbose #29811 > >         inl exists' = contents |> file_exists_content_async path |> async.let'
00:20:34 verbose #29812 > >         if not exists'
00:20:34 verbose #29813 > >         then contents |> write_all_text_async path |> async.do
00:20:34 verbose #29814 > >     |> async.new_async
00:20:34 verbose #29815 > >
00:20:34 verbose #29816 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:34 verbose #29817 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:34 verbose #29818 > > │ ### delete_directory_async                                                   │
00:20:34 verbose #29819 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:34 verbose #29820 > >
00:20:34 verbose #29821 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:34 verbose #29822 > > inl delete_directory_async path : _ i64 =
00:20:34 verbose #29823 > >     run_target function
00:20:34 verbose #29824 > >         | Fsharp (Native) => fun () =>
00:20:34 verbose #29825 > >             let rec loop (retry : i64) =
00:20:34 verbose #29826 > >                 fun () =>
00:20:34 verbose #29827 > >                     try_unit
00:20:34 verbose #29828 > >                         fun () =>
00:20:34 verbose #29829 > >                             path |> directory_delete true
00:20:34 verbose #29830 > >                             retry |> return
00:20:34 verbose #29831 > >                         fun ex =>
00:20:34 verbose #29832 > >                             if retry % 100i64 = 0 then
00:20:34 verbose #29833 > >                                 inl ex = ex |> sm'.format_exception
00:20:34 verbose #29834 > >                                 trace Debug
00:20:34 verbose #29835 > >                                     fun () =>
00:20:34 verbose #29836 > > "file_system.delete_directory_async"
00:20:34 verbose #29837 > >                                     fun () => { ex path = path |> get_file_name
00:20:34 verbose #29838 > > }
00:20:34 verbose #29839 > >                             async.sleep 10i32 |> async.do
00:20:34 verbose #29840 > >                             loop (retry + 1) |> async.return_await
00:20:34 verbose #29841 > >                 |> async.new_async
00:20:34 verbose #29842 > >             loop 0
00:20:34 verbose #29843 > >         | _ => fun () => null ()
00:20:34 verbose #29844 > >
00:20:34 verbose #29845 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:34 verbose #29846 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:34 verbose #29847 > > │ ### trace_file                                                               │
00:20:34 verbose #29848 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:34 verbose #29849 > >
00:20:34 verbose #29850 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:34 verbose #29851 > > let rec trace_file text =
00:20:34 verbose #29852 > >     run_target function
00:20:34 verbose #29853 > >     | Fsharp (Native) => fun () =>
00:20:34 verbose #29854 > >         try_unit
00:20:34 verbose #29855 > >             fun () =>
00:20:34 verbose #29856 > >                 inl assembly_name = env.get_entry_assembly_name ()
00:20:34 verbose #29857 > >                 inl guid = date_time.now () |> date_time.new_guid_from_date_time
00:20:34 verbose #29858 > >                 inl file_name = $'$"{!assembly_name}_{!guid}.txt"'
00:20:34 verbose #29859 > >
00:20:34 verbose #29860 > >                 inl workspace_root = get_workspace_root ()
00:20:34 verbose #29861 > >                 inl trace_dir = workspace_root </> "target/trace"
00:20:34 verbose #29862 > >                 trace_dir |> create_directory |> ignore
00:20:34 verbose #29863 > >                 inl path = trace_dir </> file_name
00:20:34 verbose #29864 > >                 text |> write_all_text_async path |> async.run_synchronously
00:20:34 verbose #29865 > >             fun ex =>
00:20:34 verbose #29866 > >                 trace_file $'$"file_system.trace_file / ex: %A{!ex}"'
00:20:34 verbose #29867 > >     | _ => fun () => ()
00:20:35 verbose #29868 > >
00:20:35 verbose #29869 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:35 verbose #29870 > > //// test
00:20:35 verbose #29871 > >
00:20:35 verbose #29872 > > inl get_count dir : i64 =
00:20:35 verbose #29873 > >     inl files = dir |> directory_get_files
00:20:35 verbose #29874 > >     a files |> am'.length
00:20:35 verbose #29875 > >
00:20:35 verbose #29876 > > inl trace_dir = get_workspace_root () </> "target/trace"
00:20:35 verbose #29877 > > trace_dir |> create_directory |> ignore
00:20:35 verbose #29878 > >
00:20:35 verbose #29879 > > inl count = get_count trace_dir
00:20:35 verbose #29880 > >
00:20:35 verbose #29881 > > trace_file "test"
00:20:35 verbose #29882 > >
00:20:35 verbose #29883 > > get_count trace_dir
00:20:35 verbose #29884 > > |> _assert_eq (count + 1)
00:20:35 verbose #29885 > >
00:20:35 verbose #29886 > > ╭─[ 681.27ms - stdout ]────────────────────────────────────────────────────────╮
00:20:35 verbose #29887 > > │ __assert_eq / actual: 1L / expected: 1L                                      │
00:20:35 verbose #29888 > > │                                                                              │
00:20:35 verbose #29889 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:35 verbose #29890 > >
00:20:35 verbose #29891 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:35 verbose #29892 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:35 verbose #29893 > > │ ### init_trace_file                                                          │
00:20:35 verbose #29894 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:35 verbose #29895 > >
00:20:35 verbose #29896 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:35 verbose #29897 > > inl init_trace_file enabled =
00:20:35 verbose #29898 > >     inl state_trace_file = get_trace_state_or_init None .trace_file
00:20:35 verbose #29899 > >     state_trace_file <- if enabled then trace_file else ignore
00:20:36 verbose #29900 > >
00:20:36 verbose #29901 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:36 verbose #29902 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:36 verbose #29903 > > │ ## file_system                                                               │
00:20:36 verbose #29904 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:36 verbose #29905 > >
00:20:36 verbose #29906 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:36 verbose #29907 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:36 verbose #29908 > > │ ### create_dir                                                               │
00:20:36 verbose #29909 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:36 verbose #29910 > >
00:20:36 verbose #29911 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:36 verbose #29912 > > let create_dir dir =
00:20:36 verbose #29913 > >     run_target function
00:20:36 verbose #29914 > >         | Rust (Contract | Wasm) => fun () => null ()
00:20:36 verbose #29915 > >         | Rust (Native) => fun () =>
00:20:36 verbose #29916 > >             inl dir = join dir
00:20:36 verbose #29917 > >             match dir |> create_dir_all |> resultm.map_error' sm'.format' |>
00:20:36 verbose #29918 > > resultm.unbox with
00:20:36 verbose #29919 > >             | Ok () =>
00:20:36 verbose #29920 > >                 trace Verbose
00:20:36 verbose #29921 > >                     fun () => "file_system.create_dir"
00:20:36 verbose #29922 > >                     fun () => { dir }
00:20:36 verbose #29923 > >             | Error error =>
00:20:36 verbose #29924 > >                 trace Critical
00:20:36 verbose #29925 > >                     fun () => "file_system.create_dir"
00:20:36 verbose #29926 > >                     fun () => { dir error }
00:20:36 verbose #29927 > >             inl disposable : _ () = new_disposable fun () =>
00:20:36 verbose #29928 > >                 dir
00:20:36 verbose #29929 > >                 |> directory_delete true
00:20:36 verbose #29930 > >             disposable
00:20:36 verbose #29931 > >         | _ => fun () =>
00:20:36 verbose #29932 > >             inl directory_info = dir |> create_directory
00:20:36 verbose #29933 > >             inl exists' = directory_info |> directory_info_exists
00:20:36 verbose #29934 > >             if not exists' then
00:20:36 verbose #29935 > >                 inl creation_time = directory_info |>
00:20:36 verbose #29936 > > directory_info_creation_time
00:20:36 verbose #29937 > >                 inl result = ($'{| Exists = !exists'; CreationTime =
00:20:36 verbose #29938 > > !creation_time |}' : any) |> sm'.format_debug
00:20:36 verbose #29939 > >                 trace Debug
00:20:36 verbose #29940 > >                     fun () => "file_system.create_dir"
00:20:36 verbose #29941 > >                     fun () => { dir result }
00:20:36 verbose #29942 > >             inl disposable : _ () = new_disposable fun () =>
00:20:36 verbose #29943 > >                 dir
00:20:36 verbose #29944 > >                 |> delete_directory_async
00:20:36 verbose #29945 > >                 |> async.ignore
00:20:36 verbose #29946 > >                 |> async.run_synchronously
00:20:36 verbose #29947 > >             disposable
00:20:36 verbose #29948 > >
00:20:36 verbose #29949 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:36 verbose #29950 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:36 verbose #29951 > > │ ### create_temp_dir                                                          │
00:20:36 verbose #29952 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:36 verbose #29953 > >
00:20:36 verbose #29954 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:36 verbose #29955 > > inl create_temp_dir () =
00:20:36 verbose #29956 > >     inl dir = create_temp_path ()
00:20:36 verbose #29957 > >     dir, dir |> create_dir
00:20:36 verbose #29958 > >
00:20:36 verbose #29959 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:36 verbose #29960 > > //// test
00:20:36 verbose #29961 > >
00:20:36 verbose #29962 > > inl path, disposable = create_temp_dir ()
00:20:36 verbose #29963 > > disposable |> use |> ignore
00:20:36 verbose #29964 > > path
00:20:36 verbose #29965 > > |> directory_exists
00:20:36 verbose #29966 > > |> _assert_eq true
00:20:37 verbose #29967 > >
00:20:37 verbose #29968 > > ╭─[ 1.07s - stdout ]───────────────────────────────────────────────────────────╮
00:20:37 verbose #29969 > > │ __assert_eq / actual: true / expected: true                                  │
00:20:37 verbose #29970 > > │                                                                              │
00:20:37 verbose #29971 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:37 verbose #29972 > >
00:20:37 verbose #29973 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:37 verbose #29974 > > //// test
00:20:37 verbose #29975 > > ///! rust -d chrono
00:20:37 verbose #29976 > >
00:20:37 verbose #29977 > > inl path, disposable = create_temp_dir ()
00:20:37 verbose #29978 > > path
00:20:37 verbose #29979 > > |> directory_exists
00:20:37 verbose #29980 > > |> _assert_eq true
00:20:37 verbose #29981 > > disposable |> use |> ignore
00:20:37 verbose #29982 > > path
00:20:37 verbose #29983 > > |> directory_exists
00:20:37 verbose #29984 > > |> _assert_eq false
00:20:46 verbose #29985 > >
00:20:46 verbose #29986 > > ╭─[ 9.49s - return value ]─────────────────────────────────────────────────────╮
00:20:46 verbose #29987 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir =                   │
00:20:46 verbose #29988 > > │ /tmp/!create_temp_path_/spiral_builder_417efae6e3e0b7903daa864fe88076f7085ba │
00:20:46 verbose #29989 > > │ ea43c2ba01bdd048789e4febd8f/20240906-1504-2130-9690-000000c7ef36 }           │
00:20:46 verbose #29990 > > │ __assert_eq / actual: true / expected: true                                  │
00:20:46 verbose #29991 > > │ __assert_eq / actual: false / expected: false                                │
00:20:46 verbose #29992 > > │                                                                              │
00:20:46 verbose #29993 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:46 verbose #29994 > >
00:20:46 verbose #29995 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:46 verbose #29996 > > //// test
00:20:46 verbose #29997 > >
00:20:46 verbose #29998 > > inl lock_directory path =
00:20:46 verbose #29999 > >     fun () =>
00:20:46 verbose #30000 > >         trace Debug (fun () => "_1") id
00:20:46 verbose #30001 > >         "0" |> write_all_text_async (path </> "test.txt") |> async.do
00:20:46 verbose #30002 > >         file_stream
00:20:46 verbose #30003 > >             (path </> "test.txt")
00:20:46 verbose #30004 > >             ModeOpen
00:20:46 verbose #30005 > >             AccessReadWrite
00:20:46 verbose #30006 > >             ShareNone
00:20:46 verbose #30007 > >         |> use
00:20:46 verbose #30008 > >         |> ignore
00:20:46 verbose #30009 > >         trace Debug (fun () => "_2") id
00:20:46 verbose #30010 > >         async.sleep 2000 |> async.do
00:20:46 verbose #30011 > >         trace Debug (fun () => "_3") id
00:20:46 verbose #30012 > >         () |> return
00:20:46 verbose #30013 > >     |> async.new_async
00:20:46 verbose #30014 > >
00:20:46 verbose #30015 > > inl temp_dir, disposable = create_temp_dir ()
00:20:46 verbose #30016 > > disposable |> use |> ignore
00:20:46 verbose #30017 > > inl path = temp_dir </> "test"
00:20:46 verbose #30018 > >
00:20:46 verbose #30019 > > fun () =>
00:20:46 verbose #30020 > >     trace Debug (fun () => "1") id
00:20:46 verbose #30021 > >     path |> create_directory |> ignore
00:20:46 verbose #30022 > >     trace Debug (fun () => "2") id
00:20:46 verbose #30023 > >     inl child = path |> lock_directory |> async.start_child |> async.let'
00:20:46 verbose #30024 > >     trace Debug (fun () => "3") id
00:20:46 verbose #30025 > >     async.sleep 60 |> async.do
00:20:46 verbose #30026 > >     trace Debug (fun () => "4") id
00:20:46 verbose #30027 > >     inl retries = path |> delete_directory_async |> async.let'
00:20:46 verbose #30028 > >     trace Debug (fun () => "5") id
00:20:46 verbose #30029 > >     child |> async.do
00:20:46 verbose #30030 > >     trace Debug (fun () => "6") id
00:20:46 verbose #30031 > >     retries |> return
00:20:46 verbose #30032 > > |> async.new_async_unit
00:20:46 verbose #30033 > > |> async.run_with_timeout 3000
00:20:46 verbose #30034 > > |> fun x => x : _ i64
00:20:46 verbose #30035 > > |> function
00:20:46 verbose #30036 > >     | Some (retries : i64) =>
00:20:46 verbose #30037 > >         retries
00:20:46 verbose #30038 > >         |> _assert_between
00:20:46 verbose #30039 > >             (if platform.is_windows () then 50 else 0)
00:20:46 verbose #30040 > >             (if platform.is_windows () then 180 else 0)
00:20:46 verbose #30041 > >
00:20:46 verbose #30042 > >         true
00:20:46 verbose #30043 > >     | _ => false
00:20:46 verbose #30044 > > |> _assert_eq true
00:20:51 verbose #30045 > >
00:20:51 verbose #30046 > > ╭─[ 4.28s - stdout ]───────────────────────────────────────────────────────────╮
00:20:51 verbose #30047 > > │ 00:00:00   debug #1 1                                                   │
00:20:51 verbose #30048 > > │ 00:00:00   debug #2 2                                                   │
00:20:51 verbose #30049 > > │ 00:00:00   debug #4 3                                                   │
00:20:51 verbose #30050 > > │ 00:00:00   debug #4 _1                                                  │
00:20:51 verbose #30051 > > │ 00:00:00   debug #5 _2                                                  │
00:20:51 verbose #30052 > > │ 00:00:00   debug #6 4                                                   │
00:20:51 verbose #30053 > > │ 00:00:00   debug #7 5                                                   │
00:20:51 verbose #30054 > > │ 00:00:02   debug #8 _3                                                  │
00:20:51 verbose #30055 > > │ 00:00:02   debug #9 6                                                   │
00:20:51 verbose #30056 > > │ __assert_between / actual: 0L / expected: struct (0L, 0L)                    │
00:20:51 verbose #30057 > > │ __assert_eq / actual: true / expected: true                                  │
00:20:51 verbose #30058 > > │                                                                              │
00:20:51 verbose #30059 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:51 verbose #30060 > >
00:20:51 verbose #30061 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:51 verbose #30062 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:51 verbose #30063 > > │ ### create_temp_dir'                                                         │
00:20:51 verbose #30064 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:51 verbose #30065 > >
00:20:51 verbose #30066 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:51 verbose #30067 > > inl create_temp_dir' (hash : string) =
00:20:51 verbose #30068 > >     inl dir = hash |> guid.hash_guid |> create_temp_path'
00:20:51 verbose #30069 > >     dir, dir |> create_dir
00:20:51 verbose #30070 > >
00:20:51 verbose #30071 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:51 verbose #30072 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:51 verbose #30073 > > │ ### link_directory                                                           │
00:20:51 verbose #30074 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:51 verbose #30075 > >
00:20:51 verbose #30076 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:51 verbose #30077 > > let link_directory target_path path =
00:20:51 verbose #30078 > >     if target_path |> directory_exists |> not
00:20:51 verbose #30079 > >     then target_path |> create_dir |> ignore
00:20:51 verbose #30080 > >
00:20:51 verbose #30081 > >     inl lib_dir_path = path |> get_directory_name
00:20:51 verbose #30082 > >     if lib_dir_path |> directory_exists |> not
00:20:51 verbose #30083 > >     then lib_dir_path |> create_dir |> ignore
00:20:51 verbose #30084 > >
00:20:51 verbose #30085 > >     if (path |> directory_exists)
00:20:51 verbose #30086 > >         && (path |> read_link |> resultm.is_err) then
00:20:51 verbose #30087 > >         path |> directory_delete true
00:20:51 verbose #30088 > >
00:20:51 verbose #30089 > >     if path |> directory_exists |> not then
00:20:51 verbose #30090 > >         path |> directory_create_symbolic_link target_path
00:20:51 verbose #30091 > >
00:20:51 verbose #30092 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:51 verbose #30093 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:51 verbose #30094 > > │ ## rust                                                                      │
00:20:51 verbose #30095 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:51 verbose #30096 > >
00:20:51 verbose #30097 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:51 verbose #30098 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:51 verbose #30099 > > │ ### file_exists_content                                                      │
00:20:51 verbose #30100 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:51 verbose #30101 > >
00:20:51 verbose #30102 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:51 verbose #30103 > > let file_exists_content path content : bool =
00:20:51 verbose #30104 > >     run_target function
00:20:51 verbose #30105 > >         | Rust (Native) => fun () =>
00:20:51 verbose #30106 > >             if path |> file_exists |> not
00:20:51 verbose #30107 > >             then false
00:20:51 verbose #30108 > >             else
00:20:51 verbose #30109 > >                 inl existing_content = path |> read_all_text
00:20:51 verbose #30110 > >                 content = existing_content
00:20:51 verbose #30111 > >         | _ => fun () => null ()
00:20:51 verbose #30112 > >
00:20:51 verbose #30113 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:51 verbose #30114 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:51 verbose #30115 > > │ ### write_all_text_exists                                                    │
00:20:51 verbose #30116 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:51 verbose #30117 > >
00:20:51 verbose #30118 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:51 verbose #30119 > > let write_all_text_exists path contents =
00:20:51 verbose #30120 > >     inl exists' = contents |> file_exists_content path
00:20:51 verbose #30121 > >     if not exists' then
00:20:51 verbose #30122 > >         inl dir = path |> get_directory_name
00:20:51 verbose #30123 > >         if dir |> directory_exists |> not
00:20:51 verbose #30124 > >         then dir |> create_dir |> ignore
00:20:51 verbose #30125 > >         contents |> write_all_text path
00:20:51 verbose #30126 > >
00:20:51 verbose #30127 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:51 verbose #30128 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:51 verbose #30129 > > │ ## fsharp                                                                    │
00:20:51 verbose #30130 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:51 verbose #30131 > >
00:20:51 verbose #30132 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:51 verbose #30133 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:51 verbose #30134 > > │ ### wait_for_file_access                                                     │
00:20:51 verbose #30135 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:51 verbose #30136 > >
00:20:51 verbose #30137 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:51 verbose #30138 > > inl wait_for_file_access access path =
00:20:51 verbose #30139 > >     run_target function
00:20:51 verbose #30140 > >         | Fsharp (Native) => fun () =>
00:20:51 verbose #30141 > >             inl file_access, file_share =
00:20:51 verbose #30142 > >                 access
00:20:51 verbose #30143 > >                 |> optionm'.default_value (AccessReadWrite, ShareRead)
00:20:51 verbose #30144 > >             let rec loop (retry : i64) : _ i64 =
00:20:51 verbose #30145 > >                 fun () =>
00:20:51 verbose #30146 > >                     try_unit
00:20:51 verbose #30147 > >                         fun () =>
00:20:51 verbose #30148 > >                             file_stream
00:20:51 verbose #30149 > >                                 path
00:20:51 verbose #30150 > >                                 ModeOpen
00:20:51 verbose #30151 > >                                 file_access
00:20:51 verbose #30152 > >                                 file_share
00:20:51 verbose #30153 > >                             |> use
00:20:51 verbose #30154 > >                             |> ignore
00:20:51 verbose #30155 > >                             retry |> return
00:20:51 verbose #30156 > >                         fun ex =>
00:20:51 verbose #30157 > >                             if retry > 0 && retry % 100i64 = 0 then
00:20:51 verbose #30158 > >                                 inl ex = ex |> sm'.format_exception
00:20:51 verbose #30159 > >                                 trace Debug
00:20:51 verbose #30160 > >                                     fun () => "file_system.wait_for_file_access"
00:20:51 verbose #30161 > >                                     fun () => { path = path |> get_file_name;
00:20:51 verbose #30162 > > retry ex }
00:20:51 verbose #30163 > >                             async.sleep 10i32 |> async.do
00:20:51 verbose #30164 > >                             loop (retry + 1) |> async.return_await
00:20:51 verbose #30165 > >                 |> async.new_async
00:20:51 verbose #30166 > >             loop 0
00:20:51 verbose #30167 > >         | _ => fun () => null ()
00:20:51 verbose #30168 > >
00:20:51 verbose #30169 > > inl wait_for_file_access_read path =
00:20:51 verbose #30170 > >     path
00:20:51 verbose #30171 > >     |> wait_for_file_access (Some (
00:20:51 verbose #30172 > >         AccessRead,
00:20:51 verbose #30173 > >         ShareRead
00:20:51 verbose #30174 > >     ))
00:20:51 verbose #30175 > >
00:20:51 verbose #30176 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:51 verbose #30177 > > //// test
00:20:51 verbose #30178 > >
00:20:51 verbose #30179 > > inl lock_file path =
00:20:51 verbose #30180 > >     fun () =>
00:20:51 verbose #30181 > >         trace Debug (fun () => "_1") id
00:20:51 verbose #30182 > >         inl stream : file_stream' =
00:20:51 verbose #30183 > >             file_stream
00:20:51 verbose #30184 > >                 path
00:20:51 verbose #30185 > >                 ModeOpen
00:20:51 verbose #30186 > >                 AccessReadWrite
00:20:51 verbose #30187 > >                 ShareNone
00:20:51 verbose #30188 > >             |> use
00:20:51 verbose #30189 > >         trace Debug (fun () => "_2") id
00:20:51 verbose #30190 > >         async.sleep 2000 |> async.do
00:20:51 verbose #30191 > >         trace Debug (fun () => "_3") id
00:20:51 verbose #30192 > >         ($'!stream.Seek (0L, System.IO.SeekOrigin.Begin)' : i64) |> ignore
00:20:51 verbose #30193 > >         trace Debug (fun () => "_4") id
00:20:51 verbose #30194 > >         $'!stream.WriteByte' 49u8
00:20:51 verbose #30195 > >         trace Debug (fun () => "_5") id
00:20:51 verbose #30196 > >         stream |> $'_.Flush()'
00:20:51 verbose #30197 > >         trace Debug (fun () => "_6") id
00:20:51 verbose #30198 > >     |> async.new_async
00:20:51 verbose #30199 > >
00:20:51 verbose #30200 > > inl file_name = "test.txt"
00:20:51 verbose #30201 > > inl text = "0"
00:20:51 verbose #30202 > >
00:20:51 verbose #30203 > > inl temp_dir, disposable =
00:20:51 verbose #30204 > >     (file_name, text)
00:20:51 verbose #30205 > >     |> sm'.format_debug
00:20:51 verbose #30206 > >     |> crypto.hash_text
00:20:51 verbose #30207 > >     |> create_temp_dir'
00:20:51 verbose #30208 > > disposable |> use |> ignore
00:20:51 verbose #30209 > > inl path = temp_dir </> file_name
00:20:51 verbose #30210 > >
00:20:51 verbose #30211 > > fun () =>
00:20:51 verbose #30212 > >     trace Debug (fun () => "1") id
00:20:51 verbose #30213 > >     text |> write_all_text_async path |> async.do
00:20:51 verbose #30214 > >     trace Debug (fun () => "2") id
00:20:51 verbose #30215 > >     inl child = path |> lock_file |> async.start_child |> async.let'
00:20:51 verbose #30216 > >     trace Debug (fun () => "3") id
00:20:51 verbose #30217 > >     async.sleep 1 |> async.do
00:20:51 verbose #30218 > >     trace Debug (fun () => "4") id
00:20:51 verbose #30219 > >     inl retries = path |> wait_for_file_access None |> async.let'
00:20:51 verbose #30220 > >     trace Debug (fun () => "5") id
00:20:51 verbose #30221 > >     inl text = path |> read_all_text_async |> async.let'
00:20:51 verbose #30222 > >     trace Debug (fun () => "6") id
00:20:51 verbose #30223 > >     child |> async.do
00:20:51 verbose #30224 > >     trace Debug (fun () => "7") id
00:20:51 verbose #30225 > >     (retries, text) |> return
00:20:51 verbose #30226 > > |> async.new_async_unit
00:20:51 verbose #30227 > > |> async.run_with_timeout 3000
00:20:51 verbose #30228 > > |> function
00:20:51 verbose #30229 > >     | Some ((retries : i64), text) =>
00:20:51 verbose #30230 > >         retries
00:20:51 verbose #30231 > >         |> _assert_between
00:20:51 verbose #30232 > >             (if platform.is_windows () then 50 else 100)
00:20:51 verbose #30233 > >             (if platform.is_windows () then 180 else 200)
00:20:51 verbose #30234 > >
00:20:51 verbose #30235 > >         text |> _assert_eq (join "1")
00:20:51 verbose #30236 > >
00:20:51 verbose #30237 > >         true
00:20:51 verbose #30238 > >     | _ => false
00:20:51 verbose #30239 > > |> _assert_eq true
00:20:56 verbose #30240 > >
00:20:56 verbose #30241 > > ╭─[ 5.02s - stdout ]───────────────────────────────────────────────────────────╮
00:20:56 verbose #30242 > > │ 00:00:00   debug #1 1                                                   │
00:20:56 verbose #30243 > > │ 00:00:00   debug #2 2                                                   │
00:20:56 verbose #30244 > > │ 00:00:00   debug #4 3                                                   │
00:20:56 verbose #30245 > > │ 00:00:00   debug #4 _1                                                  │
00:20:56 verbose #30246 > > │ 00:00:00   debug #5 _2                                                  │
00:20:56 verbose #30247 > > │ 00:00:00   debug #6 4                                                   │
00:20:56 verbose #30248 > > │ 00:00:01   debug #7 file_system.wait_for_file_access / { path =         │
00:20:56 verbose #30249 > > │ test.txt; retry = 100; ex = System.IO.IOException: The process cannot access │
00:20:56 verbose #30250 > > │ the file                                                                     │
00:20:56 verbose #30251 > > │ '/tmp/!create_temp_path_/dotnet-repl/613830ed-016e-d959-8d21-02dc1c63c252/te │
00:20:56 verbose #30252 > > │ st.txt' because it is being used by another process. }                       │
00:20:56 verbose #30253 > > │ 00:00:02   debug #8 _3                                                  │
00:20:56 verbose #30254 > > │ 00:00:02   debug #9 _4                                                  │
00:20:56 verbose #30255 > > │ 00:00:02   debug #10 _5                                                 │
00:20:56 verbose #30256 > > │ 00:00:02   debug #11 _6                                                 │
00:20:56 verbose #30257 > > │ 00:00:02   debug #12 5                                                  │
00:20:56 verbose #30258 > > │ 00:00:02   debug #13 6                                                  │
00:20:56 verbose #30259 > > │ 00:00:02   debug #14 7                                                  │
00:20:56 verbose #30260 > > │ __assert_between / actual: 167L / expected: struct (100L, 200L)              │
00:20:56 verbose #30261 > > │ __assert_eq / actual: "1" / expected: "1"                                    │
00:20:56 verbose #30262 > > │ __assert_eq / actual: true / expected: true                                  │
00:20:56 verbose #30263 > > │                                                                              │
00:20:56 verbose #30264 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:56 verbose #30265 > >
00:20:56 verbose #30266 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:56 verbose #30267 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:56 verbose #30268 > > │ ### read_all_text_retry_async                                                │
00:20:56 verbose #30269 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:56 verbose #30270 > >
00:20:56 verbose #30271 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:56 verbose #30272 > > inl read_all_text_retry_async full_path : async.async (optionm'.option' string)
00:20:56 verbose #30273 > > =
00:20:56 verbose #30274 > >     run_target function
00:20:56 verbose #30275 > >         | Fsharp (Native) => fun () =>
00:20:56 verbose #30276 > >             let rec loop (retry : i64) =
00:20:56 verbose #30277 > >                 fun () =>
00:20:56 verbose #30278 > >                     try_unit
00:20:56 verbose #30279 > >                         fun () =>
00:20:56 verbose #30280 > >                             if retry > 0
00:20:56 verbose #30281 > >                             then
00:20:56 verbose #30282 > >                                 full_path
00:20:56 verbose #30283 > >                                 |> wait_for_file_access_read
00:20:56 verbose #30284 > >                                 |> async.run_with_timeout_async 1000
00:20:56 verbose #30285 > >                                 |> async.ignore
00:20:56 verbose #30286 > >                                 |> async.do
00:20:56 verbose #30287 > >                             full_path |> read_all_text_async |> async.map (Some
00:20:56 verbose #30288 > > >> optionm'.box) |> async.return_await
00:20:56 verbose #30289 > >                         fun ex =>
00:20:56 verbose #30290 > >                             fix_condition
00:20:56 verbose #30291 > >                                 fun () => retry <> 0
00:20:56 verbose #30292 > >                                 fun () =>
00:20:56 verbose #30293 > >                                     inl ex = ex |> sm'.format_exception
00:20:56 verbose #30294 > >                                     trace Debug
00:20:56 verbose #30295 > >                                         fun () => $'"read_all_text_retry_async"'
00:20:56 verbose #30296 > >                                         fun () => { retry ex }
00:20:56 verbose #30297 > >                                     (None : _ string) |> optionm'.box |> return
00:20:56 verbose #30298 > >                                 fun () =>
00:20:56 verbose #30299 > >                                     loop (retry + 1) |> async.return_await
00:20:56 verbose #30300 > >                 |> async.new_async
00:20:56 verbose #30301 > >             loop 0
00:20:56 verbose #30302 > >         | _ => fun () => null ()
00:20:57 verbose #30303 > >
00:20:57 verbose #30304 > > ── markdown ────────────────────────────────────────────────────────────────────
00:20:57 verbose #30305 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:20:57 verbose #30306 > > │ ### move_file_async                                                          │
00:20:57 verbose #30307 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:20:57 verbose #30308 > >
00:20:57 verbose #30309 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:57 verbose #30310 > > inl move_file_async new_path old_path : _ i64 =
00:20:57 verbose #30311 > >     run_target function
00:20:57 verbose #30312 > >         | Fsharp (Native) => fun () =>
00:20:57 verbose #30313 > >             let rec loop (retry : i64) =
00:20:57 verbose #30314 > >                 fun () =>
00:20:57 verbose #30315 > >                     try_unit
00:20:57 verbose #30316 > >                         fun () =>
00:20:57 verbose #30317 > >                             old_path |> file_move new_path
00:20:57 verbose #30318 > >                             return retry
00:20:57 verbose #30319 > >                         fun ex =>
00:20:57 verbose #30320 > >                             if retry % 100 = 0 then
00:20:57 verbose #30321 > >
00:20:57 verbose #30322 > >                                 trace Warning
00:20:57 verbose #30323 > >                                     fun () => "move_file_async"
00:20:57 verbose #30324 > >                                     fun () => {
00:20:57 verbose #30325 > >                                         old_path = old_path |> get_file_name
00:20:57 verbose #30326 > >                                         new_path = new_path |> get_file_name
00:20:57 verbose #30327 > >                                         ex
00:20:57 verbose #30328 > >                                     }
00:20:57 verbose #30329 > >                             async.sleep 10 |> async.do
00:20:57 verbose #30330 > >                             loop (retry + 1) |> async.return_await
00:20:57 verbose #30331 > >                 |> async.new_async_unit
00:20:57 verbose #30332 > >             loop 0
00:20:57 verbose #30333 > >         | _ => fun () => null ()
00:20:57 verbose #30334 > >
00:20:57 verbose #30335 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:20:57 verbose #30336 > > //// test
00:20:57 verbose #30337 > >
00:20:57 verbose #30338 > > inl lock_file path =
00:20:57 verbose #30339 > >     fun () =>
00:20:57 verbose #30340 > >         trace Debug (fun () => "_1") id
00:20:57 verbose #30341 > >         file_stream
00:20:57 verbose #30342 > >             path
00:20:57 verbose #30343 > >             ModeOpen
00:20:57 verbose #30344 > >             AccessReadWrite
00:20:57 verbose #30345 > >             ShareNone
00:20:57 verbose #30346 > >         |> use
00:20:57 verbose #30347 > >         |> ignore
00:20:57 verbose #30348 > >         trace Debug (fun () => "_2") id
00:20:57 verbose #30349 > >         async.sleep 2000 |> async.do
00:20:57 verbose #30350 > >         trace Debug (fun () => "_3") id
00:20:57 verbose #30351 > >     |> async.new_async
00:20:57 verbose #30352 > >
00:20:57 verbose #30353 > > fun () =>
00:20:57 verbose #30354 > >     inl file_name = "test.txt"
00:20:57 verbose #30355 > >     inl text = "0"
00:20:57 verbose #30356 > >
00:20:57 verbose #30357 > >     inl temp_dir, disposable =
00:20:57 verbose #30358 > >         (file_name, text)
00:20:57 verbose #30359 > >         |> sm'.format_debug
00:20:57 verbose #30360 > >         |> crypto.hash_text
00:20:57 verbose #30361 > >         |> create_temp_dir'
00:20:57 verbose #30362 > >     disposable |> use |> ignore
00:20:57 verbose #30363 > >     let path = temp_dir </> file_name
00:20:57 verbose #30364 > >     let new_path = temp_dir </> "test2.txt"
00:20:57 verbose #30365 > >
00:20:57 verbose #30366 > >     trace Debug (fun () => "1") id
00:20:57 verbose #30367 > >     text |> write_all_text_async path |> async.do
00:20:57 verbose #30368 > >     trace Debug (fun () => "2") id
00:20:57 verbose #30369 > >     inl child = lock_file path |> async.start_child |> async.let'
00:20:57 verbose #30370 > >     trace Debug (fun () => "3") id
00:20:57 verbose #30371 > >     async.sleep 1 |> async.do
00:20:57 verbose #30372 > >     trace Debug (fun () => "4") id
00:20:57 verbose #30373 > >     inl retries1 = path |> move_file_async new_path |> async.let'
00:20:57 verbose #30374 > >     trace Debug (fun () => "5") id
00:20:57 verbose #30375 > >     inl retries2 = new_path |> wait_for_file_access None |> async.let'
00:20:57 verbose #30376 > >     trace Debug (fun () => "6") id
00:20:57 verbose #30377 > >     inl text = new_path |> read_all_text_async |> async.let'
00:20:57 verbose #30378 > >     trace Debug (fun () => "7") id
00:20:57 verbose #30379 > >     child |> async.do
00:20:57 verbose #30380 > >     trace Debug (fun () => "8") id
00:20:57 verbose #30381 > >     (retries1, retries2, text) |> return
00:20:57 verbose #30382 > > |> async.new_async_unit
00:20:57 verbose #30383 > > |> async.run_with_timeout 3000
00:20:57 verbose #30384 > > |> function
00:20:57 verbose #30385 > >     | Some (retries1, retries2, text) =>
00:20:57 verbose #30386 > >         retries1
00:20:57 verbose #30387 > >         |> _assert_between
00:20:57 verbose #30388 > >             (if platform.is_windows () then 50i64 else 0)
00:20:57 verbose #30389 > >             (if platform.is_windows () then 200 else 0)
00:20:57 verbose #30390 > >
00:20:57 verbose #30391 > >         retries2
00:20:57 verbose #30392 > >         |> _assert_between
00:20:57 verbose #30393 > >             (if platform.is_windows () then 0i64 else 100)
00:20:57 verbose #30394 > >             (if platform.is_windows () then 0 else 200)
00:20:57 verbose #30395 > >
00:20:57 verbose #30396 > >         text |> _assert_eq (join "0")
00:20:57 verbose #30397 > >
00:20:57 verbose #30398 > >         true
00:20:57 verbose #30399 > >     | _ => false
00:20:57 verbose #30400 > > |> _assert_eq true
00:21:02 verbose #30401 > >
00:21:02 verbose #30402 > > ╭─[ 5.09s - stdout ]───────────────────────────────────────────────────────────╮
00:21:02 verbose #30403 > > │ 00:00:00   debug #1 1                                                   │
00:21:02 verbose #30404 > > │ 00:00:00   debug #2 2                                                   │
00:21:02 verbose #30405 > > │ 00:00:00   debug #4 3                                                   │
00:21:02 verbose #30406 > > │ 00:00:00   debug #4 _1                                                  │
00:21:02 verbose #30407 > > │ 00:00:00   debug #5 _2                                                  │
00:21:02 verbose #30408 > > │ 00:00:00   debug #6 4                                                   │
00:21:02 verbose #30409 > > │ 00:00:00   debug #7 5                                                   │
00:21:02 verbose #30410 > > │ 00:00:01   debug #8 file_system.wait_for_file_access / { path =         │
00:21:02 verbose #30411 > > │ test2.txt; retry = 100; ex = System.IO.IOException: The process cannot       │
00:21:02 verbose #30412 > > │ access the file                                                              │
00:21:02 verbose #30413 > > │ '/tmp/!create_temp_path_/dotnet-repl/613830ed-016e-d959-8d21-02dc1c63c252/te │
00:21:02 verbose #30414 > > │ st2.txt' because it is being used by another process. }                      │
00:21:02 verbose #30415 > > │ 00:00:02   debug #9 _3                                                  │
00:21:02 verbose #30416 > > │ 00:00:02   debug #10 6                                                  │
00:21:02 verbose #30417 > > │ 00:00:02   debug #11 7                                                  │
00:21:02 verbose #30418 > > │ 00:00:02   debug #12 8                                                  │
00:21:02 verbose #30419 > > │ __assert_between / actual: 0L / expected: struct (0L, 0L)                    │
00:21:02 verbose #30420 > > │ __assert_between / actual: 167L / expected: struct (100L, 200L)              │
00:21:02 verbose #30421 > > │ __assert_eq / actual: "0" / expected: "0"                                    │
00:21:02 verbose #30422 > > │ __assert_eq / actual: true / expected: true                                  │
00:21:02 verbose #30423 > > │                                                                              │
00:21:02 verbose #30424 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:02 verbose #30425 > >
00:21:02 verbose #30426 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:02 verbose #30427 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:02 verbose #30428 > > │ ### delete_file_async                                                        │
00:21:02 verbose #30429 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:02 verbose #30430 > >
00:21:02 verbose #30431 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:02 verbose #30432 > > inl delete_file_async path : _ i64 =
00:21:02 verbose #30433 > >     run_target function
00:21:02 verbose #30434 > >         | Fsharp (Native) => fun () =>
00:21:02 verbose #30435 > >             let rec loop (retry : i64) =
00:21:02 verbose #30436 > >                 fun () =>
00:21:02 verbose #30437 > >                     try_unit
00:21:02 verbose #30438 > >                         fun () =>
00:21:02 verbose #30439 > >                             path |> file_delete
00:21:02 verbose #30440 > >                             return retry
00:21:02 verbose #30441 > >                         fun ex =>
00:21:02 verbose #30442 > >                             if retry % 100 = 0 then
00:21:02 verbose #30443 > >                                 trace Warning
00:21:02 verbose #30444 > >                                     fun () => "delete_file_async"
00:21:02 verbose #30445 > >                                     fun () => { path = path |> get_file_name; ex
00:21:02 verbose #30446 > > = ex |> sm'.format_exception }
00:21:02 verbose #30447 > >                             async.sleep 10 |> async.do
00:21:02 verbose #30448 > >                             loop (retry + 1) |> async.return_await
00:21:02 verbose #30449 > >                 |> async.new_async
00:21:02 verbose #30450 > >             loop 0
00:21:02 verbose #30451 > >         | _ => fun () => null ()
00:21:02 verbose #30452 > >
00:21:02 verbose #30453 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:02 verbose #30454 > > //// test
00:21:02 verbose #30455 > >
00:21:02 verbose #30456 > > inl lock_file path =
00:21:02 verbose #30457 > >     fun () =>
00:21:02 verbose #30458 > >         trace Debug (fun () => "_1") id
00:21:02 verbose #30459 > >         file_stream
00:21:02 verbose #30460 > >             path
00:21:02 verbose #30461 > >             ModeOpen
00:21:02 verbose #30462 > >             AccessReadWrite
00:21:02 verbose #30463 > >             ShareNone
00:21:02 verbose #30464 > >         |> use
00:21:02 verbose #30465 > >         |> ignore
00:21:02 verbose #30466 > >         trace Debug (fun () => "_2") id
00:21:02 verbose #30467 > >         async.sleep 2000 |> async.do
00:21:02 verbose #30468 > >         trace Debug (fun () => "_3") id
00:21:02 verbose #30469 > >     |> async.new_async
00:21:02 verbose #30470 > >
00:21:02 verbose #30471 > > fun () =>
00:21:02 verbose #30472 > >     inl file_name = "test.txt"
00:21:02 verbose #30473 > >     inl text = "0"
00:21:02 verbose #30474 > >
00:21:02 verbose #30475 > >     inl temp_dir, disposable =
00:21:02 verbose #30476 > >         (file_name, text)
00:21:02 verbose #30477 > >         |> sm'.format_debug
00:21:02 verbose #30478 > >         |> crypto.hash_text
00:21:02 verbose #30479 > >         |> create_temp_dir'
00:21:02 verbose #30480 > >     disposable |> use |> ignore
00:21:02 verbose #30481 > >     inl path = temp_dir </> file_name
00:21:02 verbose #30482 > >
00:21:02 verbose #30483 > >     trace Debug (fun () => "1") id
00:21:02 verbose #30484 > >     text |> write_all_text_async path |> async.do
00:21:02 verbose #30485 > >     trace Debug (fun () => "2") id
00:21:02 verbose #30486 > >     inl child = lock_file path |> async.start_child |> async.let'
00:21:02 verbose #30487 > >     trace Debug (fun () => "3") id
00:21:02 verbose #30488 > >     async.sleep 1 |> async.do
00:21:02 verbose #30489 > >     trace Debug (fun () => "4") id
00:21:02 verbose #30490 > >     inl retries = delete_file_async path |> async.let'
00:21:02 verbose #30491 > >     trace Debug (fun () => "5") id
00:21:02 verbose #30492 > >     child |> async.do
00:21:02 verbose #30493 > >     trace Debug (fun () => "6") id
00:21:02 verbose #30494 > >     return retries
00:21:02 verbose #30495 > > |> async.new_async_unit
00:21:02 verbose #30496 > > |> async.run_with_timeout 3000
00:21:02 verbose #30497 > > |> function
00:21:02 verbose #30498 > >     | Some (retries : i64) =>
00:21:02 verbose #30499 > >         retries
00:21:02 verbose #30500 > >         |> _assert_between
00:21:02 verbose #30501 > >             (if platform.is_windows () then 50 else 0)
00:21:02 verbose #30502 > >             (if platform.is_windows () then 180 else 0)
00:21:02 verbose #30503 > >
00:21:02 verbose #30504 > >         true
00:21:02 verbose #30505 > >     | _ => false
00:21:02 verbose #30506 > > |> _assert_eq true
00:21:07 verbose #30507 > >
00:21:07 verbose #30508 > > ╭─[ 4.56s - stdout ]───────────────────────────────────────────────────────────╮
00:21:07 verbose #30509 > > │ 00:00:00   debug #1 1                                                   │
00:21:07 verbose #30510 > > │ 00:00:00   debug #2 2                                                   │
00:21:07 verbose #30511 > > │ 00:00:00   debug #4 3                                                   │
00:21:07 verbose #30512 > > │ 00:00:00   debug #4 _1                                                  │
00:21:07 verbose #30513 > > │ 00:00:00   debug #5 _2                                                  │
00:21:07 verbose #30514 > > │ 00:00:00   debug #6 4                                                   │
00:21:07 verbose #30515 > > │ 00:00:00   debug #7 5                                                   │
00:21:07 verbose #30516 > > │ 00:00:02   debug #8 _3                                                  │
00:21:07 verbose #30517 > > │ 00:00:02   debug #9 6                                                   │
00:21:07 verbose #30518 > > │ __assert_between / actual: 0L / expected: struct (0L, 0L)                    │
00:21:07 verbose #30519 > > │ __assert_eq / actual: true / expected: true                                  │
00:21:07 verbose #30520 > > │                                                                              │
00:21:07 verbose #30521 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:07 verbose #30522 > >
00:21:07 verbose #30523 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:07 verbose #30524 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:07 verbose #30525 > > │ ## main                                                                      │
00:21:07 verbose #30526 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:07 verbose #30527 > >
00:21:07 verbose #30528 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:07 verbose #30529 > > inl main () =
00:21:07 verbose #30530 > >     init_trace_state None
00:21:07 verbose #30531 > >     $'let delete_directory_async x = !delete_directory_async x' : ()
00:21:07 verbose #30532 > >     $'let wait_for_file_access x = !wait_for_file_access x' : ()
00:21:07 verbose #30533 > >     $'let wait_for_file_access_read x = !wait_for_file_access_read x' : ()
00:21:07 verbose #30534 > >     $'let read_all_text_async x = !read_all_text_async x' : ()
00:21:07 verbose #30535 > >     $'let file_exists_content x = !file_exists_content x' : ()
00:21:07 verbose #30536 > >     $'let write_all_text_async x = !write_all_text_async x' : ()
00:21:07 verbose #30537 > >     $'let write_all_text_exists x = !write_all_text_exists_async x' : ()
00:21:07 verbose #30538 > >     $'let delete_file_async x = !delete_file_async x' : ()
00:21:07 verbose #30539 > >     $'let move_file_async x = !move_file_async x' : ()
00:21:07 verbose #30540 > >     $'let read_all_text_retry_async x = !read_all_text_retry_async x' : ()
00:21:07 verbose #30541 > >     $'let create_temp_path () = !create_temp_path ()' : ()
00:21:07 verbose #30542 > >     $'let create_temp_dir () = !create_temp_dir ()' : ()
00:21:07 verbose #30543 > >     $'let create_temp_dir\' x = !create_temp_dir' x' : ()
00:21:07 verbose #30544 > >     $'let get_source_directory () = !get_source_directory ()' : ()
00:21:07 verbose #30545 > >     $'let normalize_path x = !normalize_path x' : ()
00:21:07 verbose #30546 > >     $'let new_file_uri x = !new_file_uri x' : ()
00:21:07 verbose #30547 > >     $'let get_workspace_root () = !get_workspace_root ()' : ()
00:21:07 verbose #30548 > >     $'let init_trace_file x = !init_trace_file x' : ()
00:21:07 verbose #30549 > >     inl combine x = (</>) x
00:21:07 verbose #30550 > >     $'let (</>) x = !combine x' : ()
00:21:09 verbose #30551 > 00:01:29 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 111199 }
00:21:09 verbose #30552 > 00:01:29   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:21:09 verbose #30553 >     "nbconvert",
00:21:09 verbose #30554 >     "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb",
00:21:09 verbose #30555 >     "--to",
00:21:09 verbose #30556 >     "html",
00:21:09 verbose #30557 >     "--HTMLExporter.theme=dark",
00:21:09 verbose #30558 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:10 verbose #30559 > 00:01:29 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb to html
00:21:10 verbose #30560 > 00:01:29 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:21:10 verbose #30561 > 00:01:29 verbose #7 !   validate(nb)
00:21:10 verbose #30562 > 00:01:30 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:21:10 verbose #30563 > 00:01:30 verbose #9 !   return _pygments_highlight(
00:21:11 verbose #30564 > 00:01:31 verbose #10 ! [NbConvertApp] Writing 582914 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.html
00:21:12 verbose #30565 > 00:01:31 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 906 }
00:21:12 verbose #30566 > 00:01:31   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 906 }
00:21:12 verbose #30567 > 00:01:31   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:21:12 verbose #30568 >     "-c",
00:21:12 verbose #30569 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:21:12 verbose #30570 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:12 verbose #30571 > 00:01:31 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:21:12 verbose #30572 > 00:01:31   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:21:12 verbose #30573 > 00:01:31   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 112164 }
00:21:12   debug #30574 runtime.execute_with_options_async / { exit_code = 0; output_length = 119259 }
00:21:12   debug #36 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path file_system.dib --retries 3
00:21:12   debug #30575 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path networking.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:12 verbose #30576 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "networking.dib", "--retries", "3"])) }
00:21:12 verbose #30577 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:21:12 verbose #30578 >     "repl",
00:21:12 verbose #30579 >     "--exit-after-run",
00:21:12 verbose #30580 >     "--run",
00:21:12 verbose #30581 >     "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib",
00:21:12 verbose #30582 >     "--output-path",
00:21:12 verbose #30583 >     "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb",
00:21:12 verbose #30584 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:21:13 verbose #30585 > >
00:21:13 verbose #30586 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:13 verbose #30587 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:13 verbose #30588 > > │ # networking                                                                 │
00:21:13 verbose #30589 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:16 verbose #30590 > >
00:21:16 verbose #30591 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:16 verbose #30592 > > open rust.rust_operators
00:21:16 verbose #30593 > >
00:21:16 verbose #30594 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:16 verbose #30595 > > //// test
00:21:16 verbose #30596 > >
00:21:16 verbose #30597 > > open testing
00:21:16 verbose #30598 > >
00:21:16 verbose #30599 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:16 verbose #30600 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:16 verbose #30601 > > │ ## rust                                                                      │
00:21:16 verbose #30602 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:16 verbose #30603 > >
00:21:16 verbose #30604 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:16 verbose #30605 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:16 verbose #30606 > > │ ### reqwest_response                                                         │
00:21:16 verbose #30607 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:16 verbose #30608 > >
00:21:16 verbose #30609 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:16 verbose #30610 > > nominal reqwest_response =
00:21:16 verbose #30611 > >     `(
00:21:16 verbose #30612 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:21:16 verbose #30613 > > Fable.Core.Emit(\"reqwest_wasm::Response\")>]]\n#endif\ntype reqwest_Response =
00:21:16 verbose #30614 > > class end"
00:21:16 verbose #30615 > >         $'' : $'reqwest_Response'
00:21:16 verbose #30616 > >     )
00:21:16 verbose #30617 > >
00:21:16 verbose #30618 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:16 verbose #30619 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:16 verbose #30620 > > │ ### reqwest_error                                                            │
00:21:16 verbose #30621 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:16 verbose #30622 > >
00:21:16 verbose #30623 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:16 verbose #30624 > > nominal reqwest_error =
00:21:16 verbose #30625 > >     `(
00:21:16 verbose #30626 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:21:16 verbose #30627 > > Fable.Core.Emit(\"reqwest_wasm::Error\")>]]\n#endif\ntype reqwest_Error = class
00:21:16 verbose #30628 > > end"
00:21:16 verbose #30629 > >         $'' : $'reqwest_Error'
00:21:16 verbose #30630 > >     )
00:21:16 verbose #30631 > >
00:21:16 verbose #30632 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:16 verbose #30633 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:16 verbose #30634 > > │ ### request_builder                                                          │
00:21:16 verbose #30635 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:16 verbose #30636 > >
00:21:16 verbose #30637 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:16 verbose #30638 > > nominal request_builder =
00:21:16 verbose #30639 > >     `(
00:21:16 verbose #30640 > >         global "#if FABLE_COMPILER\n[[<Fable.Core.Erase;
00:21:16 verbose #30641 > > Fable.Core.Emit(\"reqwest_wasm::RequestBuilder\")>]]\n#endif\ntype
00:21:16 verbose #30642 > > reqwest_RequestBuilder = class end"
00:21:16 verbose #30643 > >         $'' : $'reqwest_RequestBuilder'
00:21:16 verbose #30644 > >     )
00:21:17 verbose #30645 > >
00:21:17 verbose #30646 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:17 verbose #30647 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:17 verbose #30648 > > │ ### request_type                                                             │
00:21:17 verbose #30649 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:17 verbose #30650 > >
00:21:17 verbose #30651 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:17 verbose #30652 > > union request_type =
00:21:17 verbose #30653 > >     | Get
00:21:17 verbose #30654 > >     | Post
00:21:17 verbose #30655 > >
00:21:17 verbose #30656 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:17 verbose #30657 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:17 verbose #30658 > > │ ### request                                                                  │
00:21:17 verbose #30659 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:17 verbose #30660 > >
00:21:17 verbose #30661 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:17 verbose #30662 > > type request =
00:21:17 verbose #30663 > >     {
00:21:17 verbose #30664 > >         url : string
00:21:17 verbose #30665 > >         request_type : request_type
00:21:17 verbose #30666 > >         body : string
00:21:17 verbose #30667 > >         json : bool
00:21:17 verbose #30668 > >         auto_refresh : bool
00:21:17 verbose #30669 > >     }
00:21:17 verbose #30670 > >
00:21:17 verbose #30671 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:17 verbose #30672 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:17 verbose #30673 > > │ ### new_request_get                                                          │
00:21:17 verbose #30674 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:17 verbose #30675 > >
00:21:17 verbose #30676 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:17 verbose #30677 > > inl new_request_get (url : string) : request_builder =
00:21:17 verbose #30678 > >     inl url = join url
00:21:17 verbose #30679 > >     inl url = url |> sm'.to_std_string
00:21:17 verbose #30680 > >     inl url = join url
00:21:17 verbose #30681 > >     !\($'"reqwest_wasm::Client::builder().build().map_err(|err|
00:21:17 verbose #30682 > > err.to_string())?.get(!url)"')
00:21:17 verbose #30683 > >
00:21:17 verbose #30684 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:17 verbose #30685 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:17 verbose #30686 > > │ ### new_request_post                                                         │
00:21:17 verbose #30687 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:17 verbose #30688 > >
00:21:17 verbose #30689 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:17 verbose #30690 > > inl new_request_post (url : string) : request_builder =
00:21:17 verbose #30691 > >     inl url = join url
00:21:17 verbose #30692 > >     inl url = url |> sm'.to_std_string
00:21:17 verbose #30693 > >     inl url = join url
00:21:17 verbose #30694 > >     !\($'"reqwest_wasm::Client::builder().build().map_err(|err|
00:21:17 verbose #30695 > > err.to_string())?.post(!url)"')
00:21:17 verbose #30696 > >
00:21:17 verbose #30697 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:17 verbose #30698 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:17 verbose #30699 > > │ ### request_send                                                             │
00:21:17 verbose #30700 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:17 verbose #30701 > >
00:21:17 verbose #30702 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:17 verbose #30703 > > inl request_send (request : request_builder) : async.future_pin (resultm.result'
00:21:17 verbose #30704 > > reqwest_response reqwest_error) =
00:21:17 verbose #30705 > >     inl request = join request
00:21:17 verbose #30706 > >     !\($'"Box::pin(reqwest_wasm::RequestBuilder::send(!request))"')
00:21:17 verbose #30707 > >
00:21:17 verbose #30708 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:17 verbose #30709 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:17 verbose #30710 > > │ ### request_body                                                             │
00:21:17 verbose #30711 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:17 verbose #30712 > >
00:21:17 verbose #30713 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:17 verbose #30714 > > inl request_body (body : string) (request : request_builder) : request_builder =
00:21:17 verbose #30715 > >     inl body = body |> sm'.to_std_string
00:21:17 verbose #30716 > >     !\($'"reqwest_wasm::RequestBuilder::body(!request, !body)"')
00:21:17 verbose #30717 > >
00:21:17 verbose #30718 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:17 verbose #30719 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:17 verbose #30720 > > │ ### request_header                                                           │
00:21:17 verbose #30721 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:17 verbose #30722 > >
00:21:17 verbose #30723 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:17 verbose #30724 > > inl request_header (key : string) (value : string) (request : request_builder) :
00:21:17 verbose #30725 > > request_builder =
00:21:17 verbose #30726 > >     inl request = join request
00:21:17 verbose #30727 > >     inl key = key |> sm'.to_std_string
00:21:17 verbose #30728 > >     inl value = value |> sm'.to_std_string
00:21:17 verbose #30729 > >     !\($'"reqwest_wasm::RequestBuilder::header(!request, !key, !value)"')
00:21:17 verbose #30730 > >
00:21:17 verbose #30731 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:17 verbose #30732 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:17 verbose #30733 > > │ ### request_json                                                             │
00:21:17 verbose #30734 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:17 verbose #30735 > >
00:21:17 verbose #30736 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:17 verbose #30737 > > inl request_json forall t. (obj : t) (request : request_builder) :
00:21:17 verbose #30738 > > request_builder =
00:21:17 verbose #30739 > >     !\($'"reqwest_wasm::RequestBuilder::json(!request, &!obj)"')
00:21:18 verbose #30740 > >
00:21:18 verbose #30741 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:18 verbose #30742 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:18 verbose #30743 > > │ ### response_text                                                            │
00:21:18 verbose #30744 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:18 verbose #30745 > >
00:21:18 verbose #30746 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:18 verbose #30747 > > inl response_text (response : reqwest_response) : async.future_pin
00:21:18 verbose #30748 > > (resultm.result' sm'.std_string reqwest_error) =
00:21:18 verbose #30749 > >     !\($'"Box::pin(reqwest_wasm::Response::text(!response))"')
00:21:18 verbose #30750 > >
00:21:18 verbose #30751 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:18 verbose #30752 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:18 verbose #30753 > > │ ## fsharp                                                                    │
00:21:18 verbose #30754 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:18 verbose #30755 > >
00:21:18 verbose #30756 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:18 verbose #30757 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:18 verbose #30758 > > │ ### tcp_client                                                               │
00:21:18 verbose #30759 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:18 verbose #30760 > >
00:21:18 verbose #30761 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:18 verbose #30762 > > nominal tcp_client = $'System.Net.Sockets.TcpClient'
00:21:18 verbose #30763 > >
00:21:18 verbose #30764 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:18 verbose #30765 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:18 verbose #30766 > > │ ### new_tcp_client                                                           │
00:21:18 verbose #30767 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:18 verbose #30768 > >
00:21:18 verbose #30769 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:18 verbose #30770 > > inl new_tcp_client () : tcp_client =
00:21:18 verbose #30771 > >     $'new `tcp_client ()'
00:21:18 verbose #30772 > >
00:21:18 verbose #30773 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:18 verbose #30774 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:18 verbose #30775 > > │ ### ip_address                                                               │
00:21:18 verbose #30776 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:18 verbose #30777 > >
00:21:18 verbose #30778 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:18 verbose #30779 > > nominal ip_address = $'System.Net.IPAddress'
00:21:18 verbose #30780 > >
00:21:18 verbose #30781 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:18 verbose #30782 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:18 verbose #30783 > > │ ### ip_address_parse                                                         │
00:21:18 verbose #30784 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:18 verbose #30785 > >
00:21:18 verbose #30786 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:18 verbose #30787 > > inl ip_address_parse (s : string) : ip_address =
00:21:18 verbose #30788 > >     s |> $'`ip_address.Parse'
00:21:18 verbose #30789 > >
00:21:18 verbose #30790 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:18 verbose #30791 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:18 verbose #30792 > > │ ### tcp_listener                                                             │
00:21:18 verbose #30793 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:18 verbose #30794 > >
00:21:18 verbose #30795 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:18 verbose #30796 > > nominal tcp_listener = $'System.Net.Sockets.TcpListener'
00:21:18 verbose #30797 > >
00:21:18 verbose #30798 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:18 verbose #30799 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:18 verbose #30800 > > │ ### new_tcp_listener                                                         │
00:21:18 verbose #30801 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:18 verbose #30802 > >
00:21:18 verbose #30803 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:18 verbose #30804 > > inl new_tcp_listener (ip_address : ip_address) (port : i32) : tcp_listener =
00:21:18 verbose #30805 > >     $'new `tcp_listener (!ip_address, !port)'
00:21:18 verbose #30806 > >
00:21:18 verbose #30807 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:18 verbose #30808 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:18 verbose #30809 > > │ ### listener_start                                                           │
00:21:18 verbose #30810 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:18 verbose #30811 > >
00:21:18 verbose #30812 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:18 verbose #30813 > > inl listener_start (listener : tcp_listener) : () =
00:21:18 verbose #30814 > >     $'!listener.Start' ()
00:21:19 verbose #30815 > >
00:21:19 verbose #30816 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:19 verbose #30817 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:19 verbose #30818 > > │ ### listener_stop                                                            │
00:21:19 verbose #30819 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:19 verbose #30820 > >
00:21:19 verbose #30821 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:19 verbose #30822 > > inl listener_stop (listener : tcp_listener) : () =
00:21:19 verbose #30823 > >     $'!listener.Stop' ()
00:21:19 verbose #30824 > >
00:21:19 verbose #30825 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:19 verbose #30826 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:19 verbose #30827 > > │ ### client_connect_async                                                     │
00:21:19 verbose #30828 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:19 verbose #30829 > >
00:21:19 verbose #30830 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:19 verbose #30831 > > inl client_connect_async
00:21:19 verbose #30832 > >     (host : string)
00:21:19 verbose #30833 > >     (port : i32)
00:21:19 verbose #30834 > >     (ct : threading.cancellation_token)
00:21:19 verbose #30835 > >     (client : tcp_client)
00:21:19 verbose #30836 > >     : async.value_task
00:21:19 verbose #30837 > >     =
00:21:19 verbose #30838 > >     $'!client.ConnectAsync (!host, !port, !ct)'
00:21:19 verbose #30839 > >
00:21:19 verbose #30840 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:19 verbose #30841 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:19 verbose #30842 > > │ ### test_port_open                                                           │
00:21:19 verbose #30843 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:19 verbose #30844 > >
00:21:19 verbose #30845 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:19 verbose #30846 > > inl test_port_open host port : _ bool = async.new_async fun () =>
00:21:19 verbose #30847 > >     inl ct = async.cancellation_token () |> async.let'
00:21:19 verbose #30848 > >     inl client = new_tcp_client () |> use
00:21:19 verbose #30849 > >     try_unit
00:21:19 verbose #30850 > >         fun () =>
00:21:19 verbose #30851 > >             client |> client_connect_async host port ct |>
00:21:19 verbose #30852 > > async.await_value_task_unit |> async.do
00:21:19 verbose #30853 > >             return true
00:21:19 verbose #30854 > >         fun ex =>
00:21:19 verbose #30855 > >             inl ex = ex |> sm'.format_exception
00:21:19 verbose #30856 > >             trace Verbose
00:21:19 verbose #30857 > >                 fun () => $'$"networking.test_port_open"'
00:21:19 verbose #30858 > >                 fun () => { port ex }
00:21:19 verbose #30859 > >             return false
00:21:19 verbose #30860 > >
00:21:19 verbose #30861 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:19 verbose #30862 > > //// test
00:21:19 verbose #30863 > >
00:21:19 verbose #30864 > > test_port_open "127.0.0.1" 65536
00:21:19 verbose #30865 > > |> async.run_with_timeout 120
00:21:19 verbose #30866 > > |> _assert_eq (Some false)
00:21:21 verbose #30867 > >
00:21:21 verbose #30868 > > ╭─[ 2.00s - stdout ]───────────────────────────────────────────────────────────╮
00:21:21 verbose #30869 > > │ 00:00:00 verbose #1 networking.test_port_open / { port = 65536; ex =    │
00:21:21 verbose #30870 > > │ System.ArgumentOutOfRangeException: Specified argument was out of the range  │
00:21:21 verbose #30871 > > │ of valid values. (Parameter 'port') }                                        │
00:21:21 verbose #30872 > > │ __assert_eq / actual: US4_0 false / expected: US4_0 false                    │
00:21:21 verbose #30873 > > │                                                                              │
00:21:21 verbose #30874 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:21 verbose #30875 > >
00:21:21 verbose #30876 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:21 verbose #30877 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:21 verbose #30878 > > │ ### test_port_open_timeout                                                   │
00:21:21 verbose #30879 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:21 verbose #30880 > >
00:21:21 verbose #30881 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:21 verbose #30882 > > inl test_port_open_timeout timeout host port : _ bool = async.new_async_unit fun
00:21:21 verbose #30883 > > () =>
00:21:21 verbose #30884 > >     test_port_open host port
00:21:21 verbose #30885 > >     |> async.run_with_timeout_async timeout
00:21:21 verbose #30886 > >     |> async.let'
00:21:21 verbose #30887 > >     |> function
00:21:21 verbose #30888 > >         | None => false
00:21:21 verbose #30889 > >         | Some result => result
00:21:21 verbose #30890 > >     |> return
00:21:21 verbose #30891 > >
00:21:21 verbose #30892 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:21 verbose #30893 > > //// test
00:21:21 verbose #30894 > >
00:21:21 verbose #30895 > > test_port_open_timeout 120 "127.0.0.1" 65535
00:21:21 verbose #30896 > > |> async.run_synchronously
00:21:21 verbose #30897 > > |> _assert_eq false
00:21:22 verbose #30898 > >
00:21:22 verbose #30899 > > ╭─[ 982.30ms - stdout ]────────────────────────────────────────────────────────╮
00:21:22 verbose #30900 > > │ 00:00:00 verbose #1 networking.test_port_open / { port = 65535; ex =    │
00:21:22 verbose #30901 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:22 verbose #30902 > > │ }                                                                            │
00:21:22 verbose #30903 > > │ __assert_eq / actual: false / expected: false                                │
00:21:22 verbose #30904 > > │                                                                              │
00:21:22 verbose #30905 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:22 verbose #30906 > >
00:21:22 verbose #30907 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:22 verbose #30908 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:22 verbose #30909 > > │ ### wait_for_port_access                                                     │
00:21:22 verbose #30910 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:22 verbose #30911 > >
00:21:22 verbose #30912 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:22 verbose #30913 > > inl wait_for_port_access timeout status host port : _ i64 =
00:21:22 verbose #30914 > >     let rec loop retry : _ i64 = async.new_async_unit fun () =>
00:21:22 verbose #30915 > >         inl isPortOpen =
00:21:22 verbose #30916 > >             match timeout |> optionm'.unbox with
00:21:22 verbose #30917 > >             | None => test_port_open host port
00:21:22 verbose #30918 > >             | Some timeout => test_port_open_timeout timeout host port
00:21:22 verbose #30919 > >             |> async.let'
00:21:22 verbose #30920 > >
00:21:22 verbose #30921 > >         fix_condition
00:21:22 verbose #30922 > >             fun () => isPortOpen = status
00:21:22 verbose #30923 > >             fun () => retry |> return
00:21:22 verbose #30924 > >             fun () =>
00:21:22 verbose #30925 > >                 if retry % 100 = 0 then
00:21:22 verbose #30926 > >                     trace Verbose
00:21:22 verbose #30927 > >                         fun () => "networking.wait_for_port_access"
00:21:22 verbose #30928 > >                         fun () => { port retry timeout status }
00:21:22 verbose #30929 > >                 async.sleep 10 |> async.do
00:21:22 verbose #30930 > >                 loop (retry + 1) |> async.return_await
00:21:22 verbose #30931 > >     loop 0i64
00:21:22 verbose #30932 > >
00:21:22 verbose #30933 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:22 verbose #30934 > > //// test
00:21:22 verbose #30935 > >
00:21:22 verbose #30936 > > inl lock_port host port = async.new_async fun () =>
00:21:22 verbose #30937 > >     trace Debug (fun () => "_1") id
00:21:22 verbose #30938 > >     async.sleep 5000 |> async.do
00:21:22 verbose #30939 > >     inl listener = new_tcp_listener (host |> ip_address_parse) port |> use
00:21:22 verbose #30940 > >     trace Debug (fun () => "_2") id
00:21:22 verbose #30941 > >     listener |> listener_start
00:21:22 verbose #30942 > >     trace Debug (fun () => "_3") id
00:21:22 verbose #30943 > >     async.sleep 2000 |> async.do
00:21:22 verbose #30944 > >     trace Debug (fun () => "_4") id
00:21:22 verbose #30945 > >     $'!listener.Stop' ()
00:21:22 verbose #30946 > >     trace Debug (fun () => "_5") id
00:21:22 verbose #30947 > >
00:21:22 verbose #30948 > > inl host = "127.0.0.1"
00:21:22 verbose #30949 > > inl port = 5555i32
00:21:22 verbose #30950 > >
00:21:22 verbose #30951 > > fun () =>
00:21:22 verbose #30952 > >     trace Debug (fun () => "1") id
00:21:22 verbose #30953 > >     inl child = lock_port host port |> async.start_child |> async.let'
00:21:22 verbose #30954 > >     trace Debug (fun () => "2") id
00:21:22 verbose #30955 > >     async.sleep 1 |> async.do
00:21:22 verbose #30956 > >     trace Debug (fun () => "3") id
00:21:22 verbose #30957 > >     inl retries1 = wait_for_port_access (None |> optionm'.box) true host port |>
00:21:22 verbose #30958 > > async.let'
00:21:22 verbose #30959 > >     trace Debug (fun () => "4") id
00:21:22 verbose #30960 > >     inl retries2 = wait_for_port_access (None |> optionm'.box) false host port
00:21:22 verbose #30961 > > |> async.let'
00:21:22 verbose #30962 > >     trace Debug (fun () => "5") id
00:21:22 verbose #30963 > >     child |> async.do
00:21:22 verbose #30964 > >     trace Debug (fun () => "6") id
00:21:22 verbose #30965 > >     (retries1, retries2) |> return
00:21:22 verbose #30966 > > |> async.new_async_unit
00:21:22 verbose #30967 > > |> async.run_with_timeout 20000
00:21:22 verbose #30968 > > |> function
00:21:22 verbose #30969 > >     | Some (retries1, retries2) =>
00:21:22 verbose #30970 > >         retries1
00:21:22 verbose #30971 > >         |> _assert_between
00:21:22 verbose #30972 > >             if platform.is_windows () then 2i64 else 2
00:21:22 verbose #30973 > >             if platform.is_windows () then 5 else 1500
00:21:22 verbose #30974 > >
00:21:22 verbose #30975 > >         retries2
00:21:22 verbose #30976 > >         |> _assert_between
00:21:22 verbose #30977 > >             if platform.is_windows () then 80i64 else 80
00:21:22 verbose #30978 > >             if platform.is_windows () then 200 else 600
00:21:22 verbose #30979 > >
00:21:22 verbose #30980 > >         true
00:21:22 verbose #30981 > >     | _ => false
00:21:22 verbose #30982 > > |> _assert_eq true
00:21:32 verbose #30983 > >
00:21:32 verbose #30984 > > ╭─[ 10.28s - stdout ]──────────────────────────────────────────────────────────╮
00:21:32 verbose #30985 > > │ 00:00:00   debug #1 1                                                   │
00:21:32 verbose #30986 > > │ 00:00:00   debug #3 _1                                                  │
00:21:32 verbose #30987 > > │ 00:00:00   debug #3 2                                                   │
00:21:32 verbose #30988 > > │ 00:00:00   debug #4 3                                                   │
00:21:32 verbose #30989 > > │ 00:00:00 verbose #5 networking.test_port_open / { port = 5555; ex =     │
00:21:32 verbose #30990 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #30991 > > │ }                                                                            │
00:21:32 verbose #30992 > > │ 00:00:00 verbose #6 networking.wait_for_port_access / { port = 5555;    │
00:21:32 verbose #30993 > > │ retry = 0; timeout = None; status = true }                                   │
00:21:32 verbose #30994 > > │ 00:00:00 verbose #7 networking.test_port_open / { port = 5555; ex =     │
00:21:32 verbose #30995 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #30996 > > │ }                                                                            │
00:21:32 verbose #30997 > > │ 00:00:00 verbose #8 networking.test_port_open / { port = 5555; ex =     │
00:21:32 verbose #30998 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #30999 > > │ }                                                                            │
00:21:32 verbose #31000 > > │ 00:00:00 verbose #9 networking.test_port_open / { port = 5555; ex =     │
00:21:32 verbose #31001 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31002 > > │ }                                                                            │
00:21:32 verbose #31003 > > │ 00:00:00 verbose #10 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31004 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31005 > > │ }                                                                            │
00:21:32 verbose #31006 > > │ 00:00:00 verbose #11 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31007 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31008 > > │ }                                                                            │
00:21:32 verbose #31009 > > │ 00:00:00 verbose #12 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31010 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31011 > > │ }                                                                            │
00:21:32 verbose #31012 > > │ 00:00:00 verbose #13 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31013 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31014 > > │ }                                                                            │
00:21:32 verbose #31015 > > │ 00:00:00 verbose #14 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31016 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31017 > > │ }                                                                            │
00:21:32 verbose #31018 > > │ 00:00:00 verbose #15 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31019 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31020 > > │ }                                                                            │
00:21:32 verbose #31021 > > │ 00:00:00 verbose #16 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31022 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31023 > > │ }                                                                            │
00:21:32 verbose #31024 > > │ 00:00:00 verbose #17 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31025 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31026 > > │ }                                                                            │
00:21:32 verbose #31027 > > │ 00:00:00 verbose #18 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31028 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31029 > > │ }                                                                            │
00:21:32 verbose #31030 > > │ 00:00:00 verbose #19 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31031 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31032 > > │ }                                                                            │
00:21:32 verbose #31033 > > │ 00:00:00 verbose #20 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31034 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31035 > > │ }                                                                            │
00:21:32 verbose #31036 > > │ 00:00:00 verbose #21 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31037 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31038 > > │ }                                                                            │
00:21:32 verbose #31039 > > │ 00:00:00 verbose #22 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31040 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31041 > > │ }                                                                            │
00:21:32 verbose #31042 > > │ 00:00:00 verbose #23 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31043 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31044 > > │ }                                                                            │
00:21:32 verbose #31045 > > │ 00:00:00 verbose #24 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31046 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31047 > > │ }                                                                            │
00:21:32 verbose #31048 > > │ 00:00:00 verbose #25 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31049 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31050 > > │ }                                                                            │
00:21:32 verbose #31051 > > │ 00:00:00 verbose #26 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31052 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31053 > > │ }                                                                            │
00:21:32 verbose #31054 > > │ 00:00:00 verbose #27 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31055 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31056 > > │ }                                                                            │
00:21:32 verbose #31057 > > │ 00:00:00 verbose #28 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31058 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31059 > > │ }                                                                            │
00:21:32 verbose #31060 > > │ 00:00:00 verbose #29 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31061 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31062 > > │ }                                                                            │
00:21:32 verbose #31063 > > │ 00:00:00 verbose #30 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31064 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31065 > > │ }                                                                            │
00:21:32 verbose #31066 > > │ 00:00:00 verbose #31 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31067 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31068 > > │ }                                                                            │
00:21:32 verbose #31069 > > │ 00:00:00 verbose #32 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31070 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31071 > > │ }                                                                            │
00:21:32 verbose #31072 > > │ 00:00:00 verbose #33 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31073 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31074 > > │ }                                                                            │
00:21:32 verbose #31075 > > │ 00:00:00 verbose #34 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31076 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31077 > > │ }                                                                            │
00:21:32 verbose #31078 > > │ 00:00:00 verbose #35 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31079 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31080 > > │ }                                                                            │
00:21:32 verbose #31081 > > │ 00:00:00 verbose #36 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31082 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31083 > > │ }                                                                            │
00:21:32 verbose #31084 > > │ 00:00:00 verbose #37 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31085 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31086 > > │ }                                                                            │
00:21:32 verbose #31087 > > │ 00:00:00 verbose #38 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31088 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31089 > > │ }                                                                            │
00:21:32 verbose #31090 > > │ 00:00:00 verbose #39 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31091 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31092 > > │ }                                                                            │
00:21:32 verbose #31093 > > │ 00:00:00 verbose #40 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31094 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31095 > > │ }                                                                            │
00:21:32 verbose #31096 > > │ 00:00:00 verbose #41 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31097 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31098 > > │ }                                                                            │
00:21:32 verbose #31099 > > │ 00:00:00 verbose #42 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31100 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31101 > > │ }                                                                            │
00:21:32 verbose #31102 > > │ 00:00:00 verbose #43 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31103 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31104 > > │ }                                                                            │
00:21:32 verbose #31105 > > │ 00:00:00 verbose #44 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31106 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31107 > > │ }                                                                            │
00:21:32 verbose #31108 > > │ 00:00:00 verbose #45 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31109 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31110 > > │ }                                                                            │
00:21:32 verbose #31111 > > │ 00:00:00 verbose #46 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31112 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31113 > > │ }                                                                            │
00:21:32 verbose #31114 > > │ 00:00:00 verbose #47 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31115 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31116 > > │ }                                                                            │
00:21:32 verbose #31117 > > │ 00:00:00 verbose #48 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31118 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31119 > > │ }                                                                            │
00:21:32 verbose #31120 > > │ 00:00:00 verbose #49 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31121 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31122 > > │ }                                                                            │
00:21:32 verbose #31123 > > │ 00:00:00 verbose #50 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31124 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31125 > > │ }                                                                            │
00:21:32 verbose #31126 > > │ 00:00:00 verbose #51 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31127 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31128 > > │ }                                                                            │
00:21:32 verbose #31129 > > │ 00:00:00 verbose #52 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31130 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31131 > > │ }                                                                            │
00:21:32 verbose #31132 > > │ 00:00:00 verbose #53 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31133 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31134 > > │ }                                                                            │
00:21:32 verbose #31135 > > │ 00:00:00 verbose #54 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31136 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31137 > > │ }                                                                            │
00:21:32 verbose #31138 > > │ 00:00:00 verbose #55 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31139 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31140 > > │ }                                                                            │
00:21:32 verbose #31141 > > │ 00:00:00 verbose #56 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31142 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31143 > > │ }                                                                            │
00:21:32 verbose #31144 > > │ 00:00:00 verbose #57 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31145 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31146 > > │ }                                                                            │
00:21:32 verbose #31147 > > │ 00:00:00 verbose #58 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31148 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31149 > > │ }                                                                            │
00:21:32 verbose #31150 > > │ 00:00:00 verbose #59 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31151 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31152 > > │ }                                                                            │
00:21:32 verbose #31153 > > │ 00:00:00 verbose #60 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31154 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31155 > > │ }                                                                            │
00:21:32 verbose #31156 > > │ 00:00:00 verbose #61 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31157 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31158 > > │ }                                                                            │
00:21:32 verbose #31159 > > │ 00:00:00 verbose #62 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31160 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31161 > > │ }                                                                            │
00:21:32 verbose #31162 > > │ 00:00:00 verbose #63 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31163 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31164 > > │ }                                                                            │
00:21:32 verbose #31165 > > │ 00:00:00 verbose #64 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31166 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31167 > > │ }                                                                            │
00:21:32 verbose #31168 > > │ 00:00:00 verbose #65 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31169 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31170 > > │ }                                                                            │
00:21:32 verbose #31171 > > │ 00:00:00 verbose #66 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31172 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31173 > > │ }                                                                            │
00:21:32 verbose #31174 > > │ 00:00:00 verbose #67 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31175 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31176 > > │ }                                                                            │
00:21:32 verbose #31177 > > │ 00:00:00 verbose #68 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31178 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31179 > > │ }                                                                            │
00:21:32 verbose #31180 > > │ 00:00:00 verbose #69 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31181 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31182 > > │ }                                                                            │
00:21:32 verbose #31183 > > │ 00:00:00 verbose #70 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31184 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31185 > > │ }                                                                            │
00:21:32 verbose #31186 > > │ 00:00:00 verbose #71 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31187 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31188 > > │ }                                                                            │
00:21:32 verbose #31189 > > │ 00:00:00 verbose #72 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31190 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31191 > > │ }                                                                            │
00:21:32 verbose #31192 > > │ 00:00:00 verbose #73 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31193 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31194 > > │ }                                                                            │
00:21:32 verbose #31195 > > │ 00:00:00 verbose #74 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31196 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31197 > > │ }                                                                            │
00:21:32 verbose #31198 > > │ 00:00:00 verbose #75 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31199 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31200 > > │ }                                                                            │
00:21:32 verbose #31201 > > │ 00:00:00 verbose #76 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31202 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31203 > > │ }                                                                            │
00:21:32 verbose #31204 > > │ 00:00:00 verbose #77 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31205 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31206 > > │ }                                                                            │
00:21:32 verbose #31207 > > │ 00:00:00 verbose #78 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31208 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31209 > > │ }                                                                            │
00:21:32 verbose #31210 > > │ 00:00:00 verbose #79 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31211 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31212 > > │ }                                                                            │
00:21:32 verbose #31213 > > │ 00:00:00 verbose #80 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31214 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31215 > > │ }                                                                            │
00:21:32 verbose #31216 > > │ 00:00:00 verbose #81 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31217 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31218 > > │ }                                                                            │
00:21:32 verbose #31219 > > │ 00:00:00 verbose #82 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31220 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31221 > > │ }                                                                            │
00:21:32 verbose #31222 > > │ 00:00:00 verbose #83 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31223 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31224 > > │ }                                                                            │
00:21:32 verbose #31225 > > │ 00:00:00 verbose #84 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31226 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31227 > > │ }                                                                            │
00:21:32 verbose #31228 > > │ 00:00:00 verbose #85 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31229 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31230 > > │ }                                                                            │
00:21:32 verbose #31231 > > │ 00:00:00 verbose #86 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31232 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31233 > > │ }                                                                            │
00:21:32 verbose #31234 > > │ 00:00:00 verbose #87 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31235 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31236 > > │ }                                                                            │
00:21:32 verbose #31237 > > │ 00:00:01 verbose #88 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31238 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31239 > > │ }                                                                            │
00:21:32 verbose #31240 > > │ 00:00:01 verbose #89 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31241 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31242 > > │ }                                                                            │
00:21:32 verbose #31243 > > │ 00:00:01 verbose #90 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31244 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31245 > > │ }                                                                            │
00:21:32 verbose #31246 > > │ 00:00:01 verbose #91 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31247 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31248 > > │ }                                                                            │
00:21:32 verbose #31249 > > │ 00:00:01 verbose #92 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31250 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31251 > > │ }                                                                            │
00:21:32 verbose #31252 > > │ 00:00:01 verbose #93 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31253 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31254 > > │ }                                                                            │
00:21:32 verbose #31255 > > │ 00:00:01 verbose #94 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31256 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31257 > > │ }                                                                            │
00:21:32 verbose #31258 > > │ 00:00:01 verbose #95 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31259 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31260 > > │ }                                                                            │
00:21:32 verbose #31261 > > │ 00:00:01 verbose #96 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31262 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31263 > > │ }                                                                            │
00:21:32 verbose #31264 > > │ 00:00:01 verbose #97 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31265 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31266 > > │ }                                                                            │
00:21:32 verbose #31267 > > │ 00:00:01 verbose #98 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31268 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31269 > > │ }                                                                            │
00:21:32 verbose #31270 > > │ 00:00:01 verbose #99 networking.test_port_open / { port = 5555; ex =    │
00:21:32 verbose #31271 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31272 > > │ }                                                                            │
00:21:32 verbose #31273 > > │ 00:00:01 verbose #100 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31274 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31275 > > │ }                                                                            │
00:21:32 verbose #31276 > > │ 00:00:01 verbose #101 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31277 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31278 > > │ }                                                                            │
00:21:32 verbose #31279 > > │ 00:00:01 verbose #102 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31280 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31281 > > │ }                                                                            │
00:21:32 verbose #31282 > > │ 00:00:01 verbose #103 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31283 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31284 > > │ }                                                                            │
00:21:32 verbose #31285 > > │ 00:00:01 verbose #104 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31286 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31287 > > │ }                                                                            │
00:21:32 verbose #31288 > > │ 00:00:01 verbose #105 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31289 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31290 > > │ }                                                                            │
00:21:32 verbose #31291 > > │ 00:00:01 verbose #106 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31292 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31293 > > │ }                                                                            │
00:21:32 verbose #31294 > > │ 00:00:01 verbose #107 networking.wait_for_port_access / { port = 5555;  │
00:21:32 verbose #31295 > > │ retry = 100; timeout = None; status = true }                                 │
00:21:32 verbose #31296 > > │ 00:00:01 verbose #108 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31297 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31298 > > │ }                                                                            │
00:21:32 verbose #31299 > > │ 00:00:01 verbose #109 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31300 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31301 > > │ }                                                                            │
00:21:32 verbose #31302 > > │ 00:00:01 verbose #110 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31303 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31304 > > │ }                                                                            │
00:21:32 verbose #31305 > > │ 00:00:01 verbose #111 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31306 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31307 > > │ }                                                                            │
00:21:32 verbose #31308 > > │ 00:00:01 verbose #112 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31309 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31310 > > │ }                                                                            │
00:21:32 verbose #31311 > > │ 00:00:01 verbose #113 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31312 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31313 > > │ }                                                                            │
00:21:32 verbose #31314 > > │ 00:00:01 verbose #114 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31315 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31316 > > │ }                                                                            │
00:21:32 verbose #31317 > > │ 00:00:01 verbose #115 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31318 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31319 > > │ }                                                                            │
00:21:32 verbose #31320 > > │ 00:00:01 verbose #116 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31321 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31322 > > │ }                                                                            │
00:21:32 verbose #31323 > > │ 00:00:01 verbose #117 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31324 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31325 > > │ }                                                                            │
00:21:32 verbose #31326 > > │ 00:00:01 verbose #118 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31327 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31328 > > │ }                                                                            │
00:21:32 verbose #31329 > > │ 00:00:01 verbose #119 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31330 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31331 > > │ }                                                                            │
00:21:32 verbose #31332 > > │ 00:00:01 verbose #120 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31333 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31334 > > │ }                                                                            │
00:21:32 verbose #31335 > > │ 00:00:01 verbose #121 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31336 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31337 > > │ }                                                                            │
00:21:32 verbose #31338 > > │ 00:00:01 verbose #122 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31339 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31340 > > │ }                                                                            │
00:21:32 verbose #31341 > > │ 00:00:01 verbose #123 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31342 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31343 > > │ }                                                                            │
00:21:32 verbose #31344 > > │ 00:00:01 verbose #124 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31345 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31346 > > │ }                                                                            │
00:21:32 verbose #31347 > > │ 00:00:01 verbose #125 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31348 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31349 > > │ }                                                                            │
00:21:32 verbose #31350 > > │ 00:00:01 verbose #126 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31351 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31352 > > │ }                                                                            │
00:21:32 verbose #31353 > > │ 00:00:01 verbose #127 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31354 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31355 > > │ }                                                                            │
00:21:32 verbose #31356 > > │ 00:00:01 verbose #128 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31357 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31358 > > │ }                                                                            │
00:21:32 verbose #31359 > > │ 00:00:01 verbose #129 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31360 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31361 > > │ }                                                                            │
00:21:32 verbose #31362 > > │ 00:00:01 verbose #130 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31363 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31364 > > │ }                                                                            │
00:21:32 verbose #31365 > > │ 00:00:01 verbose #131 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31366 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31367 > > │ }                                                                            │
00:21:32 verbose #31368 > > │ 00:00:01 verbose #132 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31369 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31370 > > │ }                                                                            │
00:21:32 verbose #31371 > > │ 00:00:01 verbose #133 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31372 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31373 > > │ }                                                                            │
00:21:32 verbose #31374 > > │ 00:00:01 verbose #134 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31375 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31376 > > │ }                                                                            │
00:21:32 verbose #31377 > > │ 00:00:01 verbose #135 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31378 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31379 > > │ }                                                                            │
00:21:32 verbose #31380 > > │ 00:00:01 verbose #136 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31381 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31382 > > │ }                                                                            │
00:21:32 verbose #31383 > > │ 00:00:01 verbose #137 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31384 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31385 > > │ }                                                                            │
00:21:32 verbose #31386 > > │ 00:00:01 verbose #138 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31387 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31388 > > │ }                                                                            │
00:21:32 verbose #31389 > > │ 00:00:01 verbose #139 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31390 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31391 > > │ }                                                                            │
00:21:32 verbose #31392 > > │ 00:00:01 verbose #140 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31393 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31394 > > │ }                                                                            │
00:21:32 verbose #31395 > > │ 00:00:01 verbose #141 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31396 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31397 > > │ }                                                                            │
00:21:32 verbose #31398 > > │ 00:00:01 verbose #142 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31399 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31400 > > │ }                                                                            │
00:21:32 verbose #31401 > > │ 00:00:01 verbose #143 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31402 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31403 > > │ }                                                                            │
00:21:32 verbose #31404 > > │ 00:00:01 verbose #144 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31405 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31406 > > │ }                                                                            │
00:21:32 verbose #31407 > > │ 00:00:01 verbose #145 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31408 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31409 > > │ }                                                                            │
00:21:32 verbose #31410 > > │ 00:00:01 verbose #146 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31411 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31412 > > │ }                                                                            │
00:21:32 verbose #31413 > > │ 00:00:01 verbose #147 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31414 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31415 > > │ }                                                                            │
00:21:32 verbose #31416 > > │ 00:00:01 verbose #148 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31417 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31418 > > │ }                                                                            │
00:21:32 verbose #31419 > > │ 00:00:01 verbose #149 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31420 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31421 > > │ }                                                                            │
00:21:32 verbose #31422 > > │ 00:00:01 verbose #150 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31423 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31424 > > │ }                                                                            │
00:21:32 verbose #31425 > > │ 00:00:01 verbose #151 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31426 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31427 > > │ }                                                                            │
00:21:32 verbose #31428 > > │ 00:00:01 verbose #152 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31429 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31430 > > │ }                                                                            │
00:21:32 verbose #31431 > > │ 00:00:01 verbose #153 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31432 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31433 > > │ }                                                                            │
00:21:32 verbose #31434 > > │ 00:00:01 verbose #154 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31435 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31436 > > │ }                                                                            │
00:21:32 verbose #31437 > > │ 00:00:01 verbose #155 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31438 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31439 > > │ }                                                                            │
00:21:32 verbose #31440 > > │ 00:00:01 verbose #156 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31441 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31442 > > │ }                                                                            │
00:21:32 verbose #31443 > > │ 00:00:01 verbose #157 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31444 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31445 > > │ }                                                                            │
00:21:32 verbose #31446 > > │ 00:00:01 verbose #158 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31447 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31448 > > │ }                                                                            │
00:21:32 verbose #31449 > > │ 00:00:01 verbose #159 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31450 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31451 > > │ }                                                                            │
00:21:32 verbose #31452 > > │ 00:00:01 verbose #160 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31453 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31454 > > │ }                                                                            │
00:21:32 verbose #31455 > > │ 00:00:01 verbose #161 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31456 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31457 > > │ }                                                                            │
00:21:32 verbose #31458 > > │ 00:00:01 verbose #162 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31459 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31460 > > │ }                                                                            │
00:21:32 verbose #31461 > > │ 00:00:01 verbose #163 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31462 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31463 > > │ }                                                                            │
00:21:32 verbose #31464 > > │ 00:00:01 verbose #164 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31465 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31466 > > │ }                                                                            │
00:21:32 verbose #31467 > > │ 00:00:01 verbose #165 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31468 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31469 > > │ }                                                                            │
00:21:32 verbose #31470 > > │ 00:00:01 verbose #166 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31471 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31472 > > │ }                                                                            │
00:21:32 verbose #31473 > > │ 00:00:01 verbose #167 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31474 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31475 > > │ }                                                                            │
00:21:32 verbose #31476 > > │ 00:00:01 verbose #168 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31477 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31478 > > │ }                                                                            │
00:21:32 verbose #31479 > > │ 00:00:01 verbose #169 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31480 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31481 > > │ }                                                                            │
00:21:32 verbose #31482 > > │ 00:00:01 verbose #170 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31483 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31484 > > │ }                                                                            │
00:21:32 verbose #31485 > > │ 00:00:01 verbose #171 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31486 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31487 > > │ }                                                                            │
00:21:32 verbose #31488 > > │ 00:00:01 verbose #172 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31489 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31490 > > │ }                                                                            │
00:21:32 verbose #31491 > > │ 00:00:02 verbose #173 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31492 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31493 > > │ }                                                                            │
00:21:32 verbose #31494 > > │ 00:00:02 verbose #174 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31495 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31496 > > │ }                                                                            │
00:21:32 verbose #31497 > > │ 00:00:02 verbose #175 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31498 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31499 > > │ }                                                                            │
00:21:32 verbose #31500 > > │ 00:00:02 verbose #176 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31501 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31502 > > │ }                                                                            │
00:21:32 verbose #31503 > > │ 00:00:02 verbose #177 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31504 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31505 > > │ }                                                                            │
00:21:32 verbose #31506 > > │ 00:00:02 verbose #178 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31507 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31508 > > │ }                                                                            │
00:21:32 verbose #31509 > > │ 00:00:02 verbose #179 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31510 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31511 > > │ }                                                                            │
00:21:32 verbose #31512 > > │ 00:00:02 verbose #180 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31513 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31514 > > │ }                                                                            │
00:21:32 verbose #31515 > > │ 00:00:02 verbose #181 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31516 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31517 > > │ }                                                                            │
00:21:32 verbose #31518 > > │ 00:00:02 verbose #182 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31519 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31520 > > │ }                                                                            │
00:21:32 verbose #31521 > > │ 00:00:02 verbose #183 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31522 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31523 > > │ }                                                                            │
00:21:32 verbose #31524 > > │ 00:00:02 verbose #184 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31525 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31526 > > │ }                                                                            │
00:21:32 verbose #31527 > > │ 00:00:02 verbose #185 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31528 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31529 > > │ }                                                                            │
00:21:32 verbose #31530 > > │ 00:00:02 verbose #186 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31531 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31532 > > │ }                                                                            │
00:21:32 verbose #31533 > > │ 00:00:02 verbose #187 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31534 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31535 > > │ }                                                                            │
00:21:32 verbose #31536 > > │ 00:00:02 verbose #188 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31537 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31538 > > │ }                                                                            │
00:21:32 verbose #31539 > > │ 00:00:02 verbose #189 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31540 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31541 > > │ }                                                                            │
00:21:32 verbose #31542 > > │ 00:00:02 verbose #190 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31543 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31544 > > │ }                                                                            │
00:21:32 verbose #31545 > > │ 00:00:02 verbose #191 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31546 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31547 > > │ }                                                                            │
00:21:32 verbose #31548 > > │ 00:00:02 verbose #192 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31549 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31550 > > │ }                                                                            │
00:21:32 verbose #31551 > > │ 00:00:02 verbose #193 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31552 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31553 > > │ }                                                                            │
00:21:32 verbose #31554 > > │ 00:00:02 verbose #194 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31555 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31556 > > │ }                                                                            │
00:21:32 verbose #31557 > > │ 00:00:02 verbose #195 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31558 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31559 > > │ }                                                                            │
00:21:32 verbose #31560 > > │ 00:00:02 verbose #196 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31561 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31562 > > │ }                                                                            │
00:21:32 verbose #31563 > > │ 00:00:02 verbose #197 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31564 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31565 > > │ }                                                                            │
00:21:32 verbose #31566 > > │ 00:00:02 verbose #198 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31567 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31568 > > │ }                                                                            │
00:21:32 verbose #31569 > > │ 00:00:02 verbose #199 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31570 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31571 > > │ }                                                                            │
00:21:32 verbose #31572 > > │ 00:00:02 verbose #200 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31573 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31574 > > │ }                                                                            │
00:21:32 verbose #31575 > > │ 00:00:02 verbose #201 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31576 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31577 > > │ }                                                                            │
00:21:32 verbose #31578 > > │ 00:00:02 verbose #202 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31579 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31580 > > │ }                                                                            │
00:21:32 verbose #31581 > > │ 00:00:02 verbose #203 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31582 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31583 > > │ }                                                                            │
00:21:32 verbose #31584 > > │ 00:00:02 verbose #204 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31585 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31586 > > │ }                                                                            │
00:21:32 verbose #31587 > > │ 00:00:02 verbose #205 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31588 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31589 > > │ }                                                                            │
00:21:32 verbose #31590 > > │ 00:00:02 verbose #206 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31591 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31592 > > │ }                                                                            │
00:21:32 verbose #31593 > > │ 00:00:02 verbose #207 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31594 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31595 > > │ }                                                                            │
00:21:32 verbose #31596 > > │ 00:00:02 verbose #208 networking.wait_for_port_access / { port = 5555;  │
00:21:32 verbose #31597 > > │ retry = 200; timeout = None; status = true }                                 │
00:21:32 verbose #31598 > > │ 00:00:02 verbose #209 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31599 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31600 > > │ }                                                                            │
00:21:32 verbose #31601 > > │ 00:00:02 verbose #210 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31602 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31603 > > │ }                                                                            │
00:21:32 verbose #31604 > > │ 00:00:02 verbose #211 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31605 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31606 > > │ }                                                                            │
00:21:32 verbose #31607 > > │ 00:00:02 verbose #212 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31608 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31609 > > │ }                                                                            │
00:21:32 verbose #31610 > > │ 00:00:02 verbose #213 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31611 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31612 > > │ }                                                                            │
00:21:32 verbose #31613 > > │ 00:00:02 verbose #214 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31614 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31615 > > │ }                                                                            │
00:21:32 verbose #31616 > > │ 00:00:02 verbose #215 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31617 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31618 > > │ }                                                                            │
00:21:32 verbose #31619 > > │ 00:00:02 verbose #216 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31620 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31621 > > │ }                                                                            │
00:21:32 verbose #31622 > > │ 00:00:02 verbose #217 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31623 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31624 > > │ }                                                                            │
00:21:32 verbose #31625 > > │ 00:00:02 verbose #218 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31626 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31627 > > │ }                                                                            │
00:21:32 verbose #31628 > > │ 00:00:02 verbose #219 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31629 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31630 > > │ }                                                                            │
00:21:32 verbose #31631 > > │ 00:00:02 verbose #220 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31632 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31633 > > │ }                                                                            │
00:21:32 verbose #31634 > > │ 00:00:02 verbose #221 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31635 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31636 > > │ }                                                                            │
00:21:32 verbose #31637 > > │ 00:00:02 verbose #222 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31638 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31639 > > │ }                                                                            │
00:21:32 verbose #31640 > > │ 00:00:02 verbose #223 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31641 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31642 > > │ }                                                                            │
00:21:32 verbose #31643 > > │ 00:00:02 verbose #224 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31644 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31645 > > │ }                                                                            │
00:21:32 verbose #31646 > > │ 00:00:02 verbose #225 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31647 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31648 > > │ }                                                                            │
00:21:32 verbose #31649 > > │ 00:00:02 verbose #226 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31650 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31651 > > │ }                                                                            │
00:21:32 verbose #31652 > > │ 00:00:02 verbose #227 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31653 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31654 > > │ }                                                                            │
00:21:32 verbose #31655 > > │ 00:00:02 verbose #228 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31656 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31657 > > │ }                                                                            │
00:21:32 verbose #31658 > > │ 00:00:02 verbose #229 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31659 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31660 > > │ }                                                                            │
00:21:32 verbose #31661 > > │ 00:00:02 verbose #230 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31662 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31663 > > │ }                                                                            │
00:21:32 verbose #31664 > > │ 00:00:02 verbose #231 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31665 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31666 > > │ }                                                                            │
00:21:32 verbose #31667 > > │ 00:00:02 verbose #232 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31668 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31669 > > │ }                                                                            │
00:21:32 verbose #31670 > > │ 00:00:02 verbose #233 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31671 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31672 > > │ }                                                                            │
00:21:32 verbose #31673 > > │ 00:00:02 verbose #234 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31674 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31675 > > │ }                                                                            │
00:21:32 verbose #31676 > > │ 00:00:02 verbose #235 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31677 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31678 > > │ }                                                                            │
00:21:32 verbose #31679 > > │ 00:00:02 verbose #236 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31680 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31681 > > │ }                                                                            │
00:21:32 verbose #31682 > > │ 00:00:02 verbose #237 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31683 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31684 > > │ }                                                                            │
00:21:32 verbose #31685 > > │ 00:00:02 verbose #238 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31686 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31687 > > │ }                                                                            │
00:21:32 verbose #31688 > > │ 00:00:02 verbose #239 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31689 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31690 > > │ }                                                                            │
00:21:32 verbose #31691 > > │ 00:00:02 verbose #240 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31692 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31693 > > │ }                                                                            │
00:21:32 verbose #31694 > > │ 00:00:02 verbose #241 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31695 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31696 > > │ }                                                                            │
00:21:32 verbose #31697 > > │ 00:00:02 verbose #242 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31698 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31699 > > │ }                                                                            │
00:21:32 verbose #31700 > > │ 00:00:02 verbose #243 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31701 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31702 > > │ }                                                                            │
00:21:32 verbose #31703 > > │ 00:00:02 verbose #244 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31704 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31705 > > │ }                                                                            │
00:21:32 verbose #31706 > > │ 00:00:02 verbose #245 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31707 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31708 > > │ }                                                                            │
00:21:32 verbose #31709 > > │ 00:00:02 verbose #246 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31710 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31711 > > │ }                                                                            │
00:21:32 verbose #31712 > > │ 00:00:02 verbose #247 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31713 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31714 > > │ }                                                                            │
00:21:32 verbose #31715 > > │ 00:00:02 verbose #248 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31716 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31717 > > │ }                                                                            │
00:21:32 verbose #31718 > > │ 00:00:02 verbose #249 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31719 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31720 > > │ }                                                                            │
00:21:32 verbose #31721 > > │ 00:00:02 verbose #250 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31722 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31723 > > │ }                                                                            │
00:21:32 verbose #31724 > > │ 00:00:02 verbose #251 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31725 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31726 > > │ }                                                                            │
00:21:32 verbose #31727 > > │ 00:00:02 verbose #252 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31728 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31729 > > │ }                                                                            │
00:21:32 verbose #31730 > > │ 00:00:02 verbose #253 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31731 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31732 > > │ }                                                                            │
00:21:32 verbose #31733 > > │ 00:00:02 verbose #254 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31734 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31735 > > │ }                                                                            │
00:21:32 verbose #31736 > > │ 00:00:02 verbose #255 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31737 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31738 > > │ }                                                                            │
00:21:32 verbose #31739 > > │ 00:00:02 verbose #256 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31740 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31741 > > │ }                                                                            │
00:21:32 verbose #31742 > > │ 00:00:03 verbose #257 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31743 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31744 > > │ }                                                                            │
00:21:32 verbose #31745 > > │ 00:00:03 verbose #258 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31746 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31747 > > │ }                                                                            │
00:21:32 verbose #31748 > > │ 00:00:03 verbose #259 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31749 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31750 > > │ }                                                                            │
00:21:32 verbose #31751 > > │ 00:00:03 verbose #260 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31752 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31753 > > │ }                                                                            │
00:21:32 verbose #31754 > > │ 00:00:03 verbose #261 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31755 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31756 > > │ }                                                                            │
00:21:32 verbose #31757 > > │ 00:00:03 verbose #262 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31758 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31759 > > │ }                                                                            │
00:21:32 verbose #31760 > > │ 00:00:03 verbose #263 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31761 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31762 > > │ }                                                                            │
00:21:32 verbose #31763 > > │ 00:00:03 verbose #264 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31764 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31765 > > │ }                                                                            │
00:21:32 verbose #31766 > > │ 00:00:03 verbose #265 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31767 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31768 > > │ }                                                                            │
00:21:32 verbose #31769 > > │ 00:00:03 verbose #266 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31770 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31771 > > │ }                                                                            │
00:21:32 verbose #31772 > > │ 00:00:03 verbose #267 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31773 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31774 > > │ }                                                                            │
00:21:32 verbose #31775 > > │ 00:00:03 verbose #268 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31776 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31777 > > │ }                                                                            │
00:21:32 verbose #31778 > > │ 00:00:03 verbose #269 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31779 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31780 > > │ }                                                                            │
00:21:32 verbose #31781 > > │ 00:00:03 verbose #270 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31782 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31783 > > │ }                                                                            │
00:21:32 verbose #31784 > > │ 00:00:03 verbose #271 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31785 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31786 > > │ }                                                                            │
00:21:32 verbose #31787 > > │ 00:00:03 verbose #272 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31788 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31789 > > │ }                                                                            │
00:21:32 verbose #31790 > > │ 00:00:03 verbose #273 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31791 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31792 > > │ }                                                                            │
00:21:32 verbose #31793 > > │ 00:00:03 verbose #274 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31794 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31795 > > │ }                                                                            │
00:21:32 verbose #31796 > > │ 00:00:03 verbose #275 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31797 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31798 > > │ }                                                                            │
00:21:32 verbose #31799 > > │ 00:00:03 verbose #276 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31800 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31801 > > │ }                                                                            │
00:21:32 verbose #31802 > > │ 00:00:03 verbose #277 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31803 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31804 > > │ }                                                                            │
00:21:32 verbose #31805 > > │ 00:00:03 verbose #278 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31806 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31807 > > │ }                                                                            │
00:21:32 verbose #31808 > > │ 00:00:03 verbose #279 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31809 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31810 > > │ }                                                                            │
00:21:32 verbose #31811 > > │ 00:00:03 verbose #280 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31812 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31813 > > │ }                                                                            │
00:21:32 verbose #31814 > > │ 00:00:03 verbose #281 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31815 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31816 > > │ }                                                                            │
00:21:32 verbose #31817 > > │ 00:00:03 verbose #282 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31818 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31819 > > │ }                                                                            │
00:21:32 verbose #31820 > > │ 00:00:03 verbose #283 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31821 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31822 > > │ }                                                                            │
00:21:32 verbose #31823 > > │ 00:00:03 verbose #284 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31824 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31825 > > │ }                                                                            │
00:21:32 verbose #31826 > > │ 00:00:03 verbose #285 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31827 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31828 > > │ }                                                                            │
00:21:32 verbose #31829 > > │ 00:00:03 verbose #286 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31830 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31831 > > │ }                                                                            │
00:21:32 verbose #31832 > > │ 00:00:03 verbose #287 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31833 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31834 > > │ }                                                                            │
00:21:32 verbose #31835 > > │ 00:00:03 verbose #288 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31836 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31837 > > │ }                                                                            │
00:21:32 verbose #31838 > > │ 00:00:03 verbose #289 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31839 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31840 > > │ }                                                                            │
00:21:32 verbose #31841 > > │ 00:00:03 verbose #290 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31842 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31843 > > │ }                                                                            │
00:21:32 verbose #31844 > > │ 00:00:03 verbose #291 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31845 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31846 > > │ }                                                                            │
00:21:32 verbose #31847 > > │ 00:00:03 verbose #292 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31848 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31849 > > │ }                                                                            │
00:21:32 verbose #31850 > > │ 00:00:03 verbose #293 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31851 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31852 > > │ }                                                                            │
00:21:32 verbose #31853 > > │ 00:00:03 verbose #294 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31854 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31855 > > │ }                                                                            │
00:21:32 verbose #31856 > > │ 00:00:03 verbose #295 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31857 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31858 > > │ }                                                                            │
00:21:32 verbose #31859 > > │ 00:00:03 verbose #296 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31860 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31861 > > │ }                                                                            │
00:21:32 verbose #31862 > > │ 00:00:03 verbose #297 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31863 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31864 > > │ }                                                                            │
00:21:32 verbose #31865 > > │ 00:00:03 verbose #298 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31866 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31867 > > │ }                                                                            │
00:21:32 verbose #31868 > > │ 00:00:03 verbose #299 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31869 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31870 > > │ }                                                                            │
00:21:32 verbose #31871 > > │ 00:00:03 verbose #300 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31872 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31873 > > │ }                                                                            │
00:21:32 verbose #31874 > > │ 00:00:03 verbose #301 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31875 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31876 > > │ }                                                                            │
00:21:32 verbose #31877 > > │ 00:00:03 verbose #302 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31878 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31879 > > │ }                                                                            │
00:21:32 verbose #31880 > > │ 00:00:03 verbose #303 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31881 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31882 > > │ }                                                                            │
00:21:32 verbose #31883 > > │ 00:00:03 verbose #304 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31884 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31885 > > │ }                                                                            │
00:21:32 verbose #31886 > > │ 00:00:03 verbose #305 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31887 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31888 > > │ }                                                                            │
00:21:32 verbose #31889 > > │ 00:00:03 verbose #306 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31890 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31891 > > │ }                                                                            │
00:21:32 verbose #31892 > > │ 00:00:03 verbose #307 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31893 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31894 > > │ }                                                                            │
00:21:32 verbose #31895 > > │ 00:00:03 verbose #308 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31896 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31897 > > │ }                                                                            │
00:21:32 verbose #31898 > > │ 00:00:03 verbose #309 networking.wait_for_port_access / { port = 5555;  │
00:21:32 verbose #31899 > > │ retry = 300; timeout = None; status = true }                                 │
00:21:32 verbose #31900 > > │ 00:00:03 verbose #310 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31901 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31902 > > │ }                                                                            │
00:21:32 verbose #31903 > > │ 00:00:03 verbose #311 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31904 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31905 > > │ }                                                                            │
00:21:32 verbose #31906 > > │ 00:00:03 verbose #312 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31907 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31908 > > │ }                                                                            │
00:21:32 verbose #31909 > > │ 00:00:03 verbose #313 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31910 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31911 > > │ }                                                                            │
00:21:32 verbose #31912 > > │ 00:00:03 verbose #314 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31913 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31914 > > │ }                                                                            │
00:21:32 verbose #31915 > > │ 00:00:03 verbose #315 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31916 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31917 > > │ }                                                                            │
00:21:32 verbose #31918 > > │ 00:00:03 verbose #316 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31919 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31920 > > │ }                                                                            │
00:21:32 verbose #31921 > > │ 00:00:03 verbose #317 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31922 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31923 > > │ }                                                                            │
00:21:32 verbose #31924 > > │ 00:00:03 verbose #318 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31925 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31926 > > │ }                                                                            │
00:21:32 verbose #31927 > > │ 00:00:03 verbose #319 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31928 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31929 > > │ }                                                                            │
00:21:32 verbose #31930 > > │ 00:00:03 verbose #320 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31931 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31932 > > │ }                                                                            │
00:21:32 verbose #31933 > > │ 00:00:03 verbose #321 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31934 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31935 > > │ }                                                                            │
00:21:32 verbose #31936 > > │ 00:00:03 verbose #322 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31937 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31938 > > │ }                                                                            │
00:21:32 verbose #31939 > > │ 00:00:03 verbose #323 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31940 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31941 > > │ }                                                                            │
00:21:32 verbose #31942 > > │ 00:00:03 verbose #324 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31943 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31944 > > │ }                                                                            │
00:21:32 verbose #31945 > > │ 00:00:03 verbose #325 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31946 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31947 > > │ }                                                                            │
00:21:32 verbose #31948 > > │ 00:00:03 verbose #326 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31949 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31950 > > │ }                                                                            │
00:21:32 verbose #31951 > > │ 00:00:03 verbose #327 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31952 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31953 > > │ }                                                                            │
00:21:32 verbose #31954 > > │ 00:00:03 verbose #328 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31955 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31956 > > │ }                                                                            │
00:21:32 verbose #31957 > > │ 00:00:03 verbose #329 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31958 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31959 > > │ }                                                                            │
00:21:32 verbose #31960 > > │ 00:00:03 verbose #330 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31961 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31962 > > │ }                                                                            │
00:21:32 verbose #31963 > > │ 00:00:03 verbose #331 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31964 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31965 > > │ }                                                                            │
00:21:32 verbose #31966 > > │ 00:00:03 verbose #332 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31967 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31968 > > │ }                                                                            │
00:21:32 verbose #31969 > > │ 00:00:03 verbose #333 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31970 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31971 > > │ }                                                                            │
00:21:32 verbose #31972 > > │ 00:00:03 verbose #334 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31973 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31974 > > │ }                                                                            │
00:21:32 verbose #31975 > > │ 00:00:03 verbose #335 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31976 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31977 > > │ }                                                                            │
00:21:32 verbose #31978 > > │ 00:00:03 verbose #336 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31979 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31980 > > │ }                                                                            │
00:21:32 verbose #31981 > > │ 00:00:03 verbose #337 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31982 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31983 > > │ }                                                                            │
00:21:32 verbose #31984 > > │ 00:00:03 verbose #338 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31985 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31986 > > │ }                                                                            │
00:21:32 verbose #31987 > > │ 00:00:03 verbose #339 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31988 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31989 > > │ }                                                                            │
00:21:32 verbose #31990 > > │ 00:00:03 verbose #340 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31991 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31992 > > │ }                                                                            │
00:21:32 verbose #31993 > > │ 00:00:04 verbose #341 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31994 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31995 > > │ }                                                                            │
00:21:32 verbose #31996 > > │ 00:00:04 verbose #342 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #31997 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #31998 > > │ }                                                                            │
00:21:32 verbose #31999 > > │ 00:00:04 verbose #343 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32000 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32001 > > │ }                                                                            │
00:21:32 verbose #32002 > > │ 00:00:04 verbose #344 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32003 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32004 > > │ }                                                                            │
00:21:32 verbose #32005 > > │ 00:00:04 verbose #345 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32006 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32007 > > │ }                                                                            │
00:21:32 verbose #32008 > > │ 00:00:04 verbose #346 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32009 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32010 > > │ }                                                                            │
00:21:32 verbose #32011 > > │ 00:00:04 verbose #347 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32012 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32013 > > │ }                                                                            │
00:21:32 verbose #32014 > > │ 00:00:04 verbose #348 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32015 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32016 > > │ }                                                                            │
00:21:32 verbose #32017 > > │ 00:00:04 verbose #349 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32018 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32019 > > │ }                                                                            │
00:21:32 verbose #32020 > > │ 00:00:04 verbose #350 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32021 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32022 > > │ }                                                                            │
00:21:32 verbose #32023 > > │ 00:00:04 verbose #351 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32024 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32025 > > │ }                                                                            │
00:21:32 verbose #32026 > > │ 00:00:04 verbose #352 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32027 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32028 > > │ }                                                                            │
00:21:32 verbose #32029 > > │ 00:00:04 verbose #353 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32030 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32031 > > │ }                                                                            │
00:21:32 verbose #32032 > > │ 00:00:04 verbose #354 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32033 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32034 > > │ }                                                                            │
00:21:32 verbose #32035 > > │ 00:00:04 verbose #355 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32036 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32037 > > │ }                                                                            │
00:21:32 verbose #32038 > > │ 00:00:04 verbose #356 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32039 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32040 > > │ }                                                                            │
00:21:32 verbose #32041 > > │ 00:00:04 verbose #357 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32042 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32043 > > │ }                                                                            │
00:21:32 verbose #32044 > > │ 00:00:04 verbose #358 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32045 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32046 > > │ }                                                                            │
00:21:32 verbose #32047 > > │ 00:00:04 verbose #359 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32048 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32049 > > │ }                                                                            │
00:21:32 verbose #32050 > > │ 00:00:04 verbose #360 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32051 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32052 > > │ }                                                                            │
00:21:32 verbose #32053 > > │ 00:00:04 verbose #361 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32054 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32055 > > │ }                                                                            │
00:21:32 verbose #32056 > > │ 00:00:04 verbose #362 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32057 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32058 > > │ }                                                                            │
00:21:32 verbose #32059 > > │ 00:00:04 verbose #363 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32060 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32061 > > │ }                                                                            │
00:21:32 verbose #32062 > > │ 00:00:04 verbose #364 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32063 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32064 > > │ }                                                                            │
00:21:32 verbose #32065 > > │ 00:00:04 verbose #365 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32066 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32067 > > │ }                                                                            │
00:21:32 verbose #32068 > > │ 00:00:04 verbose #366 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32069 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32070 > > │ }                                                                            │
00:21:32 verbose #32071 > > │ 00:00:04 verbose #367 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32072 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32073 > > │ }                                                                            │
00:21:32 verbose #32074 > > │ 00:00:04 verbose #368 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32075 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32076 > > │ }                                                                            │
00:21:32 verbose #32077 > > │ 00:00:04 verbose #369 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32078 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32079 > > │ }                                                                            │
00:21:32 verbose #32080 > > │ 00:00:04 verbose #370 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32081 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32082 > > │ }                                                                            │
00:21:32 verbose #32083 > > │ 00:00:04 verbose #371 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32084 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32085 > > │ }                                                                            │
00:21:32 verbose #32086 > > │ 00:00:04 verbose #372 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32087 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32088 > > │ }                                                                            │
00:21:32 verbose #32089 > > │ 00:00:04 verbose #373 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32090 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32091 > > │ }                                                                            │
00:21:32 verbose #32092 > > │ 00:00:04 verbose #374 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32093 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32094 > > │ }                                                                            │
00:21:32 verbose #32095 > > │ 00:00:04 verbose #375 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32096 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32097 > > │ }                                                                            │
00:21:32 verbose #32098 > > │ 00:00:04 verbose #376 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32099 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32100 > > │ }                                                                            │
00:21:32 verbose #32101 > > │ 00:00:04 verbose #377 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32102 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32103 > > │ }                                                                            │
00:21:32 verbose #32104 > > │ 00:00:04 verbose #378 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32105 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32106 > > │ }                                                                            │
00:21:32 verbose #32107 > > │ 00:00:04 verbose #379 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32108 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32109 > > │ }                                                                            │
00:21:32 verbose #32110 > > │ 00:00:04 verbose #380 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32111 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32112 > > │ }                                                                            │
00:21:32 verbose #32113 > > │ 00:00:04 verbose #381 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32114 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32115 > > │ }                                                                            │
00:21:32 verbose #32116 > > │ 00:00:04 verbose #382 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32117 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32118 > > │ }                                                                            │
00:21:32 verbose #32119 > > │ 00:00:04 verbose #383 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32120 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32121 > > │ }                                                                            │
00:21:32 verbose #32122 > > │ 00:00:04 verbose #384 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32123 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32124 > > │ }                                                                            │
00:21:32 verbose #32125 > > │ 00:00:04 verbose #385 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32126 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32127 > > │ }                                                                            │
00:21:32 verbose #32128 > > │ 00:00:04 verbose #386 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32129 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32130 > > │ }                                                                            │
00:21:32 verbose #32131 > > │ 00:00:04 verbose #387 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32132 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32133 > > │ }                                                                            │
00:21:32 verbose #32134 > > │ 00:00:04 verbose #388 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32135 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32136 > > │ }                                                                            │
00:21:32 verbose #32137 > > │ 00:00:04 verbose #389 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32138 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32139 > > │ }                                                                            │
00:21:32 verbose #32140 > > │ 00:00:04 verbose #390 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32141 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32142 > > │ }                                                                            │
00:21:32 verbose #32143 > > │ 00:00:04 verbose #391 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32144 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32145 > > │ }                                                                            │
00:21:32 verbose #32146 > > │ 00:00:04 verbose #392 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32147 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32148 > > │ }                                                                            │
00:21:32 verbose #32149 > > │ 00:00:04 verbose #393 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32150 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32151 > > │ }                                                                            │
00:21:32 verbose #32152 > > │ 00:00:04 verbose #394 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32153 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32154 > > │ }                                                                            │
00:21:32 verbose #32155 > > │ 00:00:04 verbose #395 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32156 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32157 > > │ }                                                                            │
00:21:32 verbose #32158 > > │ 00:00:04 verbose #396 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32159 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32160 > > │ }                                                                            │
00:21:32 verbose #32161 > > │ 00:00:04 verbose #397 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32162 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32163 > > │ }                                                                            │
00:21:32 verbose #32164 > > │ 00:00:04 verbose #398 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32165 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32166 > > │ }                                                                            │
00:21:32 verbose #32167 > > │ 00:00:04 verbose #399 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32168 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32169 > > │ }                                                                            │
00:21:32 verbose #32170 > > │ 00:00:04 verbose #400 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32171 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32172 > > │ }                                                                            │
00:21:32 verbose #32173 > > │ 00:00:04 verbose #401 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32174 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32175 > > │ }                                                                            │
00:21:32 verbose #32176 > > │ 00:00:04 verbose #402 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32177 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32178 > > │ }                                                                            │
00:21:32 verbose #32179 > > │ 00:00:04 verbose #403 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32180 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32181 > > │ }                                                                            │
00:21:32 verbose #32182 > > │ 00:00:04 verbose #404 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32183 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32184 > > │ }                                                                            │
00:21:32 verbose #32185 > > │ 00:00:04 verbose #405 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32186 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32187 > > │ }                                                                            │
00:21:32 verbose #32188 > > │ 00:00:04 verbose #406 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32189 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32190 > > │ }                                                                            │
00:21:32 verbose #32191 > > │ 00:00:04 verbose #407 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32192 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32193 > > │ }                                                                            │
00:21:32 verbose #32194 > > │ 00:00:04 verbose #408 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32195 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32196 > > │ }                                                                            │
00:21:32 verbose #32197 > > │ 00:00:04 verbose #409 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32198 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32199 > > │ }                                                                            │
00:21:32 verbose #32200 > > │ 00:00:04 verbose #410 networking.wait_for_port_access / { port = 5555;  │
00:21:32 verbose #32201 > > │ retry = 400; timeout = None; status = true }                                 │
00:21:32 verbose #32202 > > │ 00:00:04 verbose #411 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32203 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32204 > > │ }                                                                            │
00:21:32 verbose #32205 > > │ 00:00:04 verbose #412 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32206 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32207 > > │ }                                                                            │
00:21:32 verbose #32208 > > │ 00:00:04 verbose #413 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32209 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32210 > > │ }                                                                            │
00:21:32 verbose #32211 > > │ 00:00:04 verbose #414 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32212 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32213 > > │ }                                                                            │
00:21:32 verbose #32214 > > │ 00:00:04 verbose #415 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32215 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32216 > > │ }                                                                            │
00:21:32 verbose #32217 > > │ 00:00:04 verbose #416 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32218 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32219 > > │ }                                                                            │
00:21:32 verbose #32220 > > │ 00:00:04 verbose #417 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32221 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32222 > > │ }                                                                            │
00:21:32 verbose #32223 > > │ 00:00:04 verbose #418 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32224 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32225 > > │ }                                                                            │
00:21:32 verbose #32226 > > │ 00:00:04 verbose #419 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32227 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32228 > > │ }                                                                            │
00:21:32 verbose #32229 > > │ 00:00:04 verbose #420 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32230 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32231 > > │ }                                                                            │
00:21:32 verbose #32232 > > │ 00:00:04 verbose #421 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32233 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32234 > > │ }                                                                            │
00:21:32 verbose #32235 > > │ 00:00:04 verbose #422 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32236 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32237 > > │ }                                                                            │
00:21:32 verbose #32238 > > │ 00:00:04 verbose #423 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32239 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32240 > > │ }                                                                            │
00:21:32 verbose #32241 > > │ 00:00:04 verbose #424 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32242 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32243 > > │ }                                                                            │
00:21:32 verbose #32244 > > │ 00:00:04 verbose #425 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32245 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32246 > > │ }                                                                            │
00:21:32 verbose #32247 > > │ 00:00:05   debug #426 _2                                                │
00:21:32 verbose #32248 > > │ 00:00:05   debug #427 _3                                                │
00:21:32 verbose #32249 > > │ 00:00:05   debug #428 4                                                 │
00:21:32 verbose #32250 > > │ 00:00:05 verbose #429 networking.wait_for_port_access / { port = 5555;  │
00:21:32 verbose #32251 > > │ retry = 0; timeout = None; status = false }                                  │
00:21:32 verbose #32252 > > │ 00:00:06 verbose #430 networking.wait_for_port_access / { port = 5555;  │
00:21:32 verbose #32253 > > │ retry = 100; timeout = None; status = false }                                │
00:21:32 verbose #32254 > > │ 00:00:07   debug #431 _4                                                │
00:21:32 verbose #32255 > > │ 00:00:07   debug #432 _5                                                │
00:21:32 verbose #32256 > > │ 00:00:07 verbose #433 networking.test_port_open / { port = 5555; ex =   │
00:21:32 verbose #32257 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:32 verbose #32258 > > │ }                                                                            │
00:21:32 verbose #32259 > > │ 00:00:07   debug #434 5                                                 │
00:21:32 verbose #32260 > > │ 00:00:07   debug #435 6                                                 │
00:21:32 verbose #32261 > > │ __assert_between / actual: 416L / expected: struct (2L, 1500L)               │
00:21:32 verbose #32262 > > │ __assert_between / actual: 167L / expected: struct (80L, 600L)               │
00:21:32 verbose #32263 > > │ __assert_eq / actual: true / expected: true                                  │
00:21:32 verbose #32264 > > │                                                                              │
00:21:32 verbose #32265 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:32 verbose #32266 > >
00:21:32 verbose #32267 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:32 verbose #32268 > > //// test
00:21:32 verbose #32269 > >
00:21:32 verbose #32270 > > inl lock_port host port = async.new_async_unit fun () =>
00:21:32 verbose #32271 > >     trace Debug (fun () => "_1") id
00:21:32 verbose #32272 > >     async.sleep 500 |> async.do
00:21:32 verbose #32273 > >     inl listener = new_tcp_listener (ip_address_parse host) port |> use
00:21:32 verbose #32274 > >     trace Debug (fun () => "_2") id
00:21:32 verbose #32275 > >     listener |> listener_start
00:21:32 verbose #32276 > >     trace Debug (fun () => "_3") id
00:21:32 verbose #32277 > >     async.sleep 200 |> async.do
00:21:32 verbose #32278 > >     trace Debug (fun () => "_4") id
00:21:32 verbose #32279 > >     listener |> listener_stop
00:21:32 verbose #32280 > >     trace Debug (fun () => "_5") id
00:21:32 verbose #32281 > >
00:21:32 verbose #32282 > > inl host = "127.0.0.1"
00:21:32 verbose #32283 > > inl port = 5555
00:21:32 verbose #32284 > >
00:21:32 verbose #32285 > > fun () =>
00:21:32 verbose #32286 > >     trace Debug (fun () => "1") id
00:21:32 verbose #32287 > >     inl child = lock_port host port |> async.start_child |> async.let'
00:21:32 verbose #32288 > >     trace Debug (fun () => "2") id
00:21:32 verbose #32289 > >     async.sleep 1 |> async.do
00:21:32 verbose #32290 > >     trace Debug (fun () => "3") id
00:21:32 verbose #32291 > >     inl retries1 = wait_for_port_access (Some 60 |> optionm'.box) true host port
00:21:32 verbose #32292 > > |> async.let'
00:21:32 verbose #32293 > >     trace Debug (fun () => "4") id
00:21:32 verbose #32294 > >     inl retries2 = wait_for_port_access (Some 60 |> optionm'.box) false host
00:21:32 verbose #32295 > > port |> async.let'
00:21:32 verbose #32296 > >     trace Debug (fun () => "5") id
00:21:32 verbose #32297 > >     child |> async.do
00:21:32 verbose #32298 > >     trace Debug (fun () => "6") id
00:21:32 verbose #32299 > >     (retries1, retries2) |> return
00:21:32 verbose #32300 > > |> async.new_async_unit
00:21:32 verbose #32301 > > |> async.run_with_timeout 2000
00:21:32 verbose #32302 > > |> function
00:21:32 verbose #32303 > >     | Some (retries1, retries2) =>
00:21:32 verbose #32304 > >         retries1
00:21:32 verbose #32305 > >         |> _assert_between
00:21:32 verbose #32306 > >             if platform.is_windows () then 4i64 else 2
00:21:32 verbose #32307 > >             if platform.is_windows () then 15 else 150
00:21:32 verbose #32308 > >
00:21:32 verbose #32309 > >         retries2
00:21:32 verbose #32310 > >         |> _assert_between
00:21:32 verbose #32311 > >             if platform.is_windows () then 5i64 else 0
00:21:32 verbose #32312 > >             if platform.is_windows () then 20 else 60
00:21:32 verbose #32313 > >
00:21:32 verbose #32314 > >         true
00:21:32 verbose #32315 > >     | _ => false
00:21:32 verbose #32316 > > |> _assert_eq true
00:21:36 verbose #32317 > >
00:21:36 verbose #32318 > > ╭─[ 3.49s - stdout ]───────────────────────────────────────────────────────────╮
00:21:36 verbose #32319 > > │ 00:00:00   debug #1 1                                                   │
00:21:36 verbose #32320 > > │ 00:00:00   debug #2 2                                                   │
00:21:36 verbose #32321 > > │ 00:00:00   debug #2 _1                                                  │
00:21:36 verbose #32322 > > │ 00:00:00   debug #3 3                                                   │
00:21:36 verbose #32323 > > │ 00:00:00 verbose #4 networking.test_port_open / { port = 5555; ex =     │
00:21:36 verbose #32324 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32325 > > │ }                                                                            │
00:21:36 verbose #32326 > > │ 00:00:00 verbose #5 networking.wait_for_port_access / { port = 5555;    │
00:21:36 verbose #32327 > > │ retry = 0; timeout = Some 60; status = true }                                │
00:21:36 verbose #32328 > > │ 00:00:00 verbose #6 networking.test_port_open / { port = 5555; ex =     │
00:21:36 verbose #32329 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32330 > > │ }                                                                            │
00:21:36 verbose #32331 > > │ 00:00:00 verbose #7 networking.test_port_open / { port = 5555; ex =     │
00:21:36 verbose #32332 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32333 > > │ }                                                                            │
00:21:36 verbose #32334 > > │ 00:00:00 verbose #8 networking.test_port_open / { port = 5555; ex =     │
00:21:36 verbose #32335 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32336 > > │ }                                                                            │
00:21:36 verbose #32337 > > │ 00:00:00 verbose #9 networking.test_port_open / { port = 5555; ex =     │
00:21:36 verbose #32338 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32339 > > │ }                                                                            │
00:21:36 verbose #32340 > > │ 00:00:00 verbose #10 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32341 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32342 > > │ }                                                                            │
00:21:36 verbose #32343 > > │ 00:00:00 verbose #11 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32344 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32345 > > │ }                                                                            │
00:21:36 verbose #32346 > > │ 00:00:00 verbose #12 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32347 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32348 > > │ }                                                                            │
00:21:36 verbose #32349 > > │ 00:00:00 verbose #13 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32350 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32351 > > │ }                                                                            │
00:21:36 verbose #32352 > > │ 00:00:00 verbose #14 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32353 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32354 > > │ }                                                                            │
00:21:36 verbose #32355 > > │ 00:00:00 verbose #15 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32356 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32357 > > │ }                                                                            │
00:21:36 verbose #32358 > > │ 00:00:00 verbose #16 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32359 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32360 > > │ }                                                                            │
00:21:36 verbose #32361 > > │ 00:00:00 verbose #17 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32362 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32363 > > │ }                                                                            │
00:21:36 verbose #32364 > > │ 00:00:00 verbose #18 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32365 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32366 > > │ }                                                                            │
00:21:36 verbose #32367 > > │ 00:00:00 verbose #19 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32368 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32369 > > │ }                                                                            │
00:21:36 verbose #32370 > > │ 00:00:00 verbose #20 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32371 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32372 > > │ }                                                                            │
00:21:36 verbose #32373 > > │ 00:00:00 verbose #21 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32374 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32375 > > │ }                                                                            │
00:21:36 verbose #32376 > > │ 00:00:00 verbose #22 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32377 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32378 > > │ }                                                                            │
00:21:36 verbose #32379 > > │ 00:00:00 verbose #23 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32380 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32381 > > │ }                                                                            │
00:21:36 verbose #32382 > > │ 00:00:00 verbose #24 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32383 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32384 > > │ }                                                                            │
00:21:36 verbose #32385 > > │ 00:00:00 verbose #25 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32386 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32387 > > │ }                                                                            │
00:21:36 verbose #32388 > > │ 00:00:00 verbose #26 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32389 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32390 > > │ }                                                                            │
00:21:36 verbose #32391 > > │ 00:00:00 verbose #27 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32392 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32393 > > │ }                                                                            │
00:21:36 verbose #32394 > > │ 00:00:00 verbose #28 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32395 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32396 > > │ }                                                                            │
00:21:36 verbose #32397 > > │ 00:00:00 verbose #29 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32398 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32399 > > │ }                                                                            │
00:21:36 verbose #32400 > > │ 00:00:00 verbose #30 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32401 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32402 > > │ }                                                                            │
00:21:36 verbose #32403 > > │ 00:00:00 verbose #31 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32404 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32405 > > │ }                                                                            │
00:21:36 verbose #32406 > > │ 00:00:00 verbose #32 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32407 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32408 > > │ }                                                                            │
00:21:36 verbose #32409 > > │ 00:00:00 verbose #33 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32410 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32411 > > │ }                                                                            │
00:21:36 verbose #32412 > > │ 00:00:00 verbose #34 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32413 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32414 > > │ }                                                                            │
00:21:36 verbose #32415 > > │ 00:00:00 verbose #35 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32416 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32417 > > │ }                                                                            │
00:21:36 verbose #32418 > > │ 00:00:00 verbose #36 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32419 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32420 > > │ }                                                                            │
00:21:36 verbose #32421 > > │ 00:00:00 verbose #37 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32422 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32423 > > │ }                                                                            │
00:21:36 verbose #32424 > > │ 00:00:00 verbose #38 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32425 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32426 > > │ }                                                                            │
00:21:36 verbose #32427 > > │ 00:00:00 verbose #39 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32428 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32429 > > │ }                                                                            │
00:21:36 verbose #32430 > > │ 00:00:00 verbose #40 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32431 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32432 > > │ }                                                                            │
00:21:36 verbose #32433 > > │ 00:00:00 verbose #41 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32434 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32435 > > │ }                                                                            │
00:21:36 verbose #32436 > > │ 00:00:00 verbose #42 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32437 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32438 > > │ }                                                                            │
00:21:36 verbose #32439 > > │ 00:00:00 verbose #43 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32440 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32441 > > │ }                                                                            │
00:21:36 verbose #32442 > > │ 00:00:00 verbose #44 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32443 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32444 > > │ }                                                                            │
00:21:36 verbose #32445 > > │ 00:00:00 verbose #45 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32446 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32447 > > │ }                                                                            │
00:21:36 verbose #32448 > > │ 00:00:00   debug #46 _2                                                 │
00:21:36 verbose #32449 > > │ 00:00:00   debug #47 _3                                                 │
00:21:36 verbose #32450 > > │ 00:00:00   debug #48 4                                                  │
00:21:36 verbose #32451 > > │ 00:00:00 verbose #49 networking.wait_for_port_access / { port = 5555;   │
00:21:36 verbose #32452 > > │ retry = 0; timeout = Some 60; status = false }                               │
00:21:36 verbose #32453 > > │ 00:00:00   debug #50 _4                                                 │
00:21:36 verbose #32454 > > │ 00:00:00   debug #51 _5                                                 │
00:21:36 verbose #32455 > > │ 00:00:00 verbose #52 networking.test_port_open / { port = 5555; ex =    │
00:21:36 verbose #32456 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:36 verbose #32457 > > │ }                                                                            │
00:21:36 verbose #32458 > > │ 00:00:00   debug #53 5                                                  │
00:21:36 verbose #32459 > > │ 00:00:00   debug #54 6                                                  │
00:21:36 verbose #32460 > > │ __assert_between / actual: 41L / expected: struct (2L, 150L)                 │
00:21:36 verbose #32461 > > │ __assert_between / actual: 16L / expected: struct (0L, 60L)                  │
00:21:36 verbose #32462 > > │ __assert_eq / actual: true / expected: true                                  │
00:21:36 verbose #32463 > > │                                                                              │
00:21:36 verbose #32464 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:36 verbose #32465 > >
00:21:36 verbose #32466 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:36 verbose #32467 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:36 verbose #32468 > > │ ### get_available_port                                                       │
00:21:36 verbose #32469 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:36 verbose #32470 > >
00:21:36 verbose #32471 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:36 verbose #32472 > > inl get_available_port timeout host initial_port : _ i32 =
00:21:36 verbose #32473 > >     let rec loop port = async.new_async_unit fun () =>
00:21:36 verbose #32474 > >         inl is_port_open =
00:21:36 verbose #32475 > >             match timeout |> optionm'.unbox with
00:21:36 verbose #32476 > >             | None => test_port_open host port
00:21:36 verbose #32477 > >             | Some timeout => test_port_open_timeout timeout host port
00:21:36 verbose #32478 > >             |> async.let'
00:21:36 verbose #32479 > >         fix_condition
00:21:36 verbose #32480 > >             fun () => is_port_open |> not
00:21:36 verbose #32481 > >             fun () => port |> return
00:21:36 verbose #32482 > >             fun () => loop (port + 1) |> async.return_await
00:21:36 verbose #32483 > >     loop initial_port
00:21:36 verbose #32484 > >
00:21:36 verbose #32485 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:36 verbose #32486 > > //// test
00:21:36 verbose #32487 > >
00:21:36 verbose #32488 > > inl lock_ports host port = async.new_async_unit fun () =>
00:21:36 verbose #32489 > >     trace Debug (fun () => "_1") id
00:21:36 verbose #32490 > >     inl listener1 = new_tcp_listener (ip_address_parse host) port |> use
00:21:36 verbose #32491 > >     inl listener2 = new_tcp_listener (ip_address_parse host) (port + 1) |> use
00:21:36 verbose #32492 > >     trace Debug (fun () => "_2") id
00:21:36 verbose #32493 > >     listener1 |> listener_start
00:21:36 verbose #32494 > >     listener2 |> listener_start
00:21:36 verbose #32495 > >     trace Debug (fun () => "_3") id
00:21:36 verbose #32496 > >     async.sleep 4000 |> async.do
00:21:36 verbose #32497 > >     trace Debug (fun () => "_4") id
00:21:36 verbose #32498 > >     listener1 |> listener_stop
00:21:36 verbose #32499 > >     listener2 |> listener_stop
00:21:36 verbose #32500 > >     trace Debug (fun () => "_5") id
00:21:36 verbose #32501 > >
00:21:36 verbose #32502 > > inl host = "127.0.0.1"
00:21:36 verbose #32503 > > inl port = 5555
00:21:36 verbose #32504 > >
00:21:36 verbose #32505 > > fun () =>
00:21:36 verbose #32506 > >     trace Debug (fun () => "1") id
00:21:36 verbose #32507 > >     inl child = lock_ports host port |> async.start_child |> async.let'
00:21:36 verbose #32508 > >     trace Debug (fun () => "2") id
00:21:36 verbose #32509 > >     async.sleep 240 |> async.do
00:21:36 verbose #32510 > >     trace Debug (fun () => "3") id
00:21:36 verbose #32511 > >     inl available_port = get_available_port (None |> optionm'.box) host port |>
00:21:36 verbose #32512 > > async.let'
00:21:36 verbose #32513 > >     trace Debug (fun () => "4") id
00:21:36 verbose #32514 > >     inl retries = wait_for_port_access (None |> optionm'.box) false host port |>
00:21:36 verbose #32515 > > async.let'
00:21:36 verbose #32516 > >     trace Debug (fun () => "5") id
00:21:36 verbose #32517 > >     child |> async.do
00:21:36 verbose #32518 > >     trace Debug (fun () => "6") id
00:21:36 verbose #32519 > >     (available_port, retries) |> return
00:21:36 verbose #32520 > > |> async.new_async_unit
00:21:36 verbose #32521 > > |> async.run_with_timeout 15000
00:21:36 verbose #32522 > > |> function
00:21:36 verbose #32523 > >     | Some (available_port, retries) =>
00:21:36 verbose #32524 > >         available_port |> _assert_eq (port + 2)
00:21:36 verbose #32525 > >
00:21:36 verbose #32526 > >         retries
00:21:36 verbose #32527 > >         |> _assert_between
00:21:36 verbose #32528 > >             if platform.is_windows () then 50i64 else 50
00:21:36 verbose #32529 > >             if platform.is_windows () then 150 else 1200
00:21:36 verbose #32530 > >
00:21:36 verbose #32531 > >         true
00:21:36 verbose #32532 > >     | _ => false
00:21:36 verbose #32533 > > |> _assert_eq true
00:21:42 verbose #32534 > >
00:21:42 verbose #32535 > > ╭─[ 6.41s - stdout ]───────────────────────────────────────────────────────────╮
00:21:42 verbose #32536 > > │ 00:00:00   debug #1 1                                                   │
00:21:42 verbose #32537 > > │ 00:00:00   debug #3 _1                                                  │
00:21:42 verbose #32538 > > │ 00:00:00   debug #3 2                                                   │
00:21:42 verbose #32539 > > │ 00:00:00   debug #4 _2                                                  │
00:21:42 verbose #32540 > > │ 00:00:00   debug #5 _3                                                  │
00:21:42 verbose #32541 > > │ 00:00:00   debug #6 3                                                   │
00:21:42 verbose #32542 > > │ 00:00:00 verbose #7 networking.test_port_open / { port = 5557; ex =     │
00:21:42 verbose #32543 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:42 verbose #32544 > > │ }                                                                            │
00:21:42 verbose #32545 > > │ 00:00:00   debug #8 4                                                   │
00:21:42 verbose #32546 > > │ 00:00:00 verbose #9 networking.wait_for_port_access / { port = 5555;    │
00:21:42 verbose #32547 > > │ retry = 0; timeout = None; status = false }                                  │
00:21:42 verbose #32548 > > │ 00:00:01 verbose #10 networking.wait_for_port_access / { port = 5555;   │
00:21:42 verbose #32549 > > │ retry = 100; timeout = None; status = false }                                │
00:21:42 verbose #32550 > > │ 00:00:02 verbose #11 networking.wait_for_port_access / { port = 5555;   │
00:21:42 verbose #32551 > > │ retry = 200; timeout = None; status = false }                                │
00:21:42 verbose #32552 > > │ 00:00:03 verbose #12 networking.wait_for_port_access / { port = 5555;   │
00:21:42 verbose #32553 > > │ retry = 300; timeout = None; status = false }                                │
00:21:42 verbose #32554 > > │ 00:00:04   debug #13 _4                                                 │
00:21:42 verbose #32555 > > │ 00:00:04   debug #14 _5                                                 │
00:21:42 verbose #32556 > > │ 00:00:04 verbose #15 networking.test_port_open / { port = 5555; ex =    │
00:21:42 verbose #32557 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:42 verbose #32558 > > │ }                                                                            │
00:21:42 verbose #32559 > > │ 00:00:04   debug #16 5                                                  │
00:21:42 verbose #32560 > > │ 00:00:04   debug #17 6                                                  │
00:21:42 verbose #32561 > > │ __assert_eq / actual: 5557 / expected: 5557                                  │
00:21:42 verbose #32562 > > │ __assert_between / actual: 313L / expected: struct (50L, 1200L)              │
00:21:42 verbose #32563 > > │ __assert_eq / actual: true / expected: true                                  │
00:21:42 verbose #32564 > > │                                                                              │
00:21:42 verbose #32565 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:42 verbose #32566 > >
00:21:42 verbose #32567 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:42 verbose #32568 > > //// test
00:21:42 verbose #32569 > >
00:21:42 verbose #32570 > > inl lock_ports host port = async.new_async_unit fun () =>
00:21:42 verbose #32571 > >     trace Debug (fun () => "_1") id
00:21:42 verbose #32572 > >     inl listener1 = new_tcp_listener (ip_address_parse host) port |> use
00:21:42 verbose #32573 > >     inl listener2 = new_tcp_listener (ip_address_parse host) (port + 1) |> use
00:21:42 verbose #32574 > >     trace Debug (fun () => "_2") id
00:21:42 verbose #32575 > >     listener1 |> listener_start
00:21:42 verbose #32576 > >     listener2 |> listener_start
00:21:42 verbose #32577 > >     trace Debug (fun () => "_3") id
00:21:42 verbose #32578 > >     async.sleep 400 |> async.do
00:21:42 verbose #32579 > >     trace Debug (fun () => "_4") id
00:21:42 verbose #32580 > >     listener1 |> listener_stop
00:21:42 verbose #32581 > >     listener2 |> listener_stop
00:21:42 verbose #32582 > >     trace Debug (fun () => "_5") id
00:21:42 verbose #32583 > >
00:21:42 verbose #32584 > > inl host = "127.0.0.1"
00:21:42 verbose #32585 > > inl port = 5555
00:21:42 verbose #32586 > >
00:21:42 verbose #32587 > > fun () =>
00:21:42 verbose #32588 > >     trace Debug (fun () => "1") id
00:21:42 verbose #32589 > >     inl child = lock_ports host port |> async.start_child |> async.let'
00:21:42 verbose #32590 > >     trace Debug (fun () => "2") id
00:21:42 verbose #32591 > >     async.sleep 240 |> async.do
00:21:42 verbose #32592 > >     trace Debug (fun () => "3") id
00:21:42 verbose #32593 > >     inl available_port = get_available_port (Some 60 |> optionm'.box) host port
00:21:42 verbose #32594 > > |> async.let'
00:21:42 verbose #32595 > >     trace Debug (fun () => "4") id
00:21:42 verbose #32596 > >     inl retries = wait_for_port_access (Some 60 |> optionm'.box) false host port
00:21:42 verbose #32597 > > |> async.let'
00:21:42 verbose #32598 > >     trace Debug (fun () => "5") id
00:21:42 verbose #32599 > >     child |> async.do
00:21:42 verbose #32600 > >     trace Debug (fun () => "6") id
00:21:42 verbose #32601 > >     (available_port, retries) |> return
00:21:42 verbose #32602 > > |> async.new_async_unit
00:21:42 verbose #32603 > > |> async.run_with_timeout 1500
00:21:42 verbose #32604 > > |> function
00:21:42 verbose #32605 > >     | Some (available_port, retries) =>
00:21:42 verbose #32606 > >         available_port |> _assert_eq (port + 2)
00:21:42 verbose #32607 > >
00:21:42 verbose #32608 > >         retries
00:21:42 verbose #32609 > >         |> _assert_between
00:21:42 verbose #32610 > >             (if platform.is_windows () then 2i64 else 1)
00:21:42 verbose #32611 > >             (if platform.is_windows () then 10 else 120)
00:21:42 verbose #32612 > >
00:21:42 verbose #32613 > >         true
00:21:42 verbose #32614 > >     | _ => false
00:21:42 verbose #32615 > > |> _assert_eq true
00:21:45 verbose #32616 > >
00:21:45 verbose #32617 > > ╭─[ 3.04s - stdout ]───────────────────────────────────────────────────────────╮
00:21:45 verbose #32618 > > │ 00:00:00   debug #1 1                                                   │
00:21:45 verbose #32619 > > │ 00:00:00   debug #3 _1                                                  │
00:21:45 verbose #32620 > > │ 00:00:00   debug #3 2                                                   │
00:21:45 verbose #32621 > > │ 00:00:00   debug #4 _2                                                  │
00:21:45 verbose #32622 > > │ 00:00:00   debug #5 _3                                                  │
00:21:45 verbose #32623 > > │ 00:00:00   debug #6 3                                                   │
00:21:45 verbose #32624 > > │ 00:00:00 verbose #7 networking.test_port_open / { port = 5557; ex =     │
00:21:45 verbose #32625 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:45 verbose #32626 > > │ }                                                                            │
00:21:45 verbose #32627 > > │ 00:00:00   debug #8 4                                                   │
00:21:45 verbose #32628 > > │ 00:00:00 verbose #9 networking.wait_for_port_access / { port = 5555;    │
00:21:45 verbose #32629 > > │ retry = 0; timeout = Some 60; status = false }                               │
00:21:45 verbose #32630 > > │ 00:00:00   debug #10 _4                                                 │
00:21:45 verbose #32631 > > │ 00:00:00   debug #11 _5                                                 │
00:21:45 verbose #32632 > > │ 00:00:00 verbose #12 networking.test_port_open / { port = 5555; ex =    │
00:21:45 verbose #32633 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:21:45 verbose #32634 > > │ }                                                                            │
00:21:45 verbose #32635 > > │ 00:00:00   debug #13 5                                                  │
00:21:45 verbose #32636 > > │ 00:00:00   debug #14 6                                                  │
00:21:45 verbose #32637 > > │ __assert_eq / actual: 5557 / expected: 5557                                  │
00:21:45 verbose #32638 > > │ __assert_between / actual: 12L / expected: struct (1L, 120L)                 │
00:21:45 verbose #32639 > > │ __assert_eq / actual: true / expected: true                                  │
00:21:45 verbose #32640 > > │                                                                              │
00:21:45 verbose #32641 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:45 verbose #32642 > >
00:21:45 verbose #32643 > > ── markdown ────────────────────────────────────────────────────────────────────
00:21:45 verbose #32644 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:21:45 verbose #32645 > > │ ## main                                                                      │
00:21:45 verbose #32646 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:21:45 verbose #32647 > >
00:21:45 verbose #32648 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:21:45 verbose #32649 > > inl main () =
00:21:45 verbose #32650 > >     init_trace_state None
00:21:45 verbose #32651 > >     $'let test_port_open x = !test_port_open x' : ()
00:21:45 verbose #32652 > >     $'let test_port_open_timeout x = !test_port_open_timeout x' : ()
00:21:45 verbose #32653 > >     $'let wait_for_port_access x = !wait_for_port_access x' : ()
00:21:45 verbose #32654 > >     $'let get_available_port x = !get_available_port x' : ()
00:21:47 verbose #32655 > 00:00:34 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 189117 }
00:21:47 verbose #32656 > 00:00:34   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:21:47 verbose #32657 >     "nbconvert",
00:21:47 verbose #32658 >     "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb",
00:21:47 verbose #32659 >     "--to",
00:21:47 verbose #32660 >     "html",
00:21:47 verbose #32661 >     "--HTMLExporter.theme=dark",
00:21:47 verbose #32662 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:47 verbose #32663 > 00:00:35 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb to html
00:21:47 verbose #32664 > 00:00:35 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:21:47 verbose #32665 > 00:00:35 verbose #7 !   validate(nb)
00:21:48 verbose #32666 > 00:00:35 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:21:48 verbose #32667 > 00:00:35 verbose #9 !   return _pygments_highlight(
00:21:48 verbose #32668 > 00:00:36 verbose #10 ! [NbConvertApp] Writing 457395 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.html
00:21:48 verbose #32669 > 00:00:36 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 }
00:21:48 verbose #32670 > 00:00:36   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 }
00:21:48 verbose #32671 > 00:00:36   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:21:48 verbose #32672 >     "-c",
00:21:48 verbose #32673 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:21:48 verbose #32674 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:21:49 verbose #32675 > 00:00:36 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:21:49 verbose #32676 > 00:00:36   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:21:49 verbose #32677 > 00:00:36   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 190080 }
00:21:49   debug #32678 runtime.execute_with_options_async / { exit_code = 0; output_length = 197102 }
00:21:49   debug #37 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path networking.dib --retries 3
00:00:00   debug #1 writeDibCode / output: Spi / path: async.dib
00:00:00   debug #1 writeDibCode / output: Spi / path: runtime.dib
00:00:00   debug #1 writeDibCode / output: Spi / path: trace.dib
00:00:00   debug #1 writeDibCode / output: Spi / path: testing.dib
00:00:00   debug #5 parseDibCode / output: Spi / file: runtime.dib
00:00:00   debug #5 parseDibCode / output: Spi / file: async.dib
00:00:00   debug #5 parseDibCode / output: Spi / file: trace.dib
00:00:00   debug #5 parseDibCode / output: Spi / file: testing.dib
00:00:00   debug #9 writeDibCode / output: Spi / path: threading.dib
00:00:00   debug #9 writeDibCode / output: Spi / path: networking.dib
00:00:00   debug #9 writeDibCode / output: Spi / path: crypto.dib
00:00:00   debug #9 writeDibCode / output: Spi / path: common.dib
00:00:00   debug #13 parseDibCode / output: Spi / file: crypto.dib
00:00:00   debug #13 parseDibCode / output: Spi / file: common.dib
00:00:00   debug #13 parseDibCode / output: Spi / file: networking.dib
00:00:00   debug #10 parseDibCode / output: Spi / file: threading.dib
00:00:00   debug #14 writeDibCode / output: Spi / path: base.dib
00:00:00   debug #15 parseDibCode / output: Spi / file: base.dib
00:00:00   debug #16 writeDibCode / output: Spi / path: resultm.dib
00:00:00   debug #17 parseDibCode / output: Spi / file: resultm.dib
00:00:00   debug #18 writeDibCode / output: Spi / path: iter.dib
00:00:00   debug #19 parseDibCode / output: Spi / file: iter.dib
00:00:00   debug #20 writeDibCode / output: Spi / path: env.dib
00:00:00   debug #22 writeDibCode / output: Spi / path: parsing.dib
00:00:00   debug #22 parseDibCode / output: Spi / file: env.dib
00:00:00   debug #23 parseDibCode / output: Spi / file: parsing.dib
00:00:00   debug #25 writeDibCode / output: Spi / path: console.dib
00:00:00   debug #27 parseDibCode / output: Spi / file: console.dib
00:00:00   debug #27 writeDibCode / output: Spi / path: file_system.dib
00:00:00   debug #28 parseDibCode / output: Spi / file: file_system.dib
00:00:00   debug #29 writeDibCode / output: Spi / path: date_time.dib
00:00:00   debug #29 writeDibCode / output: Spi / path: guid.dib
00:00:00   debug #31 parseDibCode / output: Spi / file: date_time.dib
00:00:00   debug #31 parseDibCode / output: Spi / file: guid.dib
00:00:00   debug #32 writeDibCode / output: Spi / path: math.dib
00:00:00   debug #33 parseDibCode / output: Spi / file: math.dib
00:00:00   debug #34 writeDibCode / output: Spi / path: mapm.dib
00:00:00   debug #35 parseDibCode / output: Spi / file: mapm.dib
00:00:00   debug #37 writeDibCode / output: Spi / path: optionm'.dib
00:00:00   debug #37 writeDibCode / output: Spi / path: am'.dib
00:00:00   debug #39 parseDibCode / output: Spi / file: am'.dib
00:00:00   debug #39 parseDibCode / output: Spi / file: optionm'.dib
00:00:00   debug #40 writeDibCode / output: Spi / path: sm'.dib
00:00:00   debug #41 parseDibCode / output: Spi / file: sm'.dib
00:00:00   debug #42 writeDibCode / output: Spir / path: sm'.dib
00:00:00   debug #43 parseDibCode / output: Spir / file: sm'.dib
00:00:00   debug #44 writeDibCode / output: Spi / path: listm'.dib
00:00:00   debug #45 parseDibCode / output: Spi / file: listm'.dib
00:00:00   debug #46 writeDibCode / output: Spi / path: reflection.dib
00:00:00   debug #47 parseDibCode / output: Spi / file: reflection.dib
00:00:00   debug #48 writeDibCode / output: Spi / path: python.dib
00:00:00   debug #49 writeDibCode / output: Spi / path: typescript.dib
00:00:00   debug #50 parseDibCode / output: Spi / file: typescript.dib
00:00:00   debug #51 writeDibCode / output: Spi / path: benchmark.dib
00:00:00   debug #53 parseDibCode / output: Spi / file: benchmark.dib
00:00:00   debug #53 writeDibCode / output: Spi / path: stream.dib
00:00:00   debug #54 parseDibCode / output: Spi / file: stream.dib
00:00:00   debug #55 parseDibCode / output: Spi / file: python.dib
00:00:00   debug #56 writeDibCode / output: Spi / path: seq.dib
00:00:00   debug #57 parseDibCode / output: Spi / file: seq.dib
00:00:00   debug #58 writeDibCode / output: Spi / path: util.dib
00:00:00   debug #59 parseDibCode / output: Spi / file: util.dib
00:00:00   debug #60 writeDibCode / output: Spi / path: platform.dib
00:00:00   debug #61 parseDibCode / output: Spi / file: platform.dib
00:00:00   debug #62 writeDibCode / output: Spi / path: rust/rust.dib
00:00:00   debug #63 parseDibCode / output: Spi / file: rust/rust.dib
00:00:00   debug #64 writeDibCode / output: Spi / path: rust/testing.dib
00:00:00   debug #65 parseDibCode / output: Spi / file: rust/testing.dib
00:00:00   debug #66 writeDibCode / output: Spi / path: rust/near.dib
00:00:00   debug #67 parseDibCode / output: Spi / file: rust/near.dib
00:00:00   debug #68 writeDibCode / output: Spi / path: physics.dib
00:00:00   debug #70 parseDibCode / output: Spi / file: physics.dib
00:00:00   debug #70 writeDibCode / output: Spi / path: leptos/leptos.dib
00:00:00   debug #71 parseDibCode / output: Spi / file: leptos/leptos.dib
00:00:00   debug #72 writeDibCode / output: Spi / path: wasm.dib
00:00:00   debug #73 parseDibCode / output: Spi / file: wasm.dib
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 verbose #2 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 verbose #2 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 verbose #3 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00   debug #1 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:00   debug #1 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: async.spi
00:00:00   debug #1 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: trace.spi
00:00:00   debug #4 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: trace.spi
00:00:00   debug #4 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: runtime.spi
00:00:00   debug #3 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: async.spi
00:00:00   debug #6 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: async.spi
00:00:00   debug #7 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:00   debug #7 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: trace.spi
00:00:00 verbose #9 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # async\nopen rust\nopen rust_operators\n\n/// ## rust\n\n/// ### future...ault_async x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/async.spi"}} / result:
00:00:00 verbose #8 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # trace\n\n/// ## trace\n\n/// ### trace_level\nunion trace_level =\n   ...x = !trace x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/trace.spi"}} / result:
00:00:00 verbose #10 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # runtime\nopen rust\nopen rust_operators\nopen sm\u0027_operators\n\n//...lit_args x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/runtime.spi"}} / result:
00:00:00 verbose #11 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/async.spi"}} / result:
00:00:00 verbose #12 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/trace.spi"}} / result:
00:00:00 verbose #13 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/runtime.spi"}} / result:
00:00:01   debug #14 Supervisor.buildFile / AsyncSeq.scan / outputContent:
let rec closure0 () (v0 : System.Threading.CancellationToken) : Async<System.Threading.CancellationToken> =
    let v1 : unit = ()
    
#if FABLE_COMP...em.Threading.CancellationToken -> Async<System.Threading.CancellationToken>) = closure0()
let merge_cancellation_token_with_default_async x = v0 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: async.spi
00:00:01   debug #15 Supervisor.buildFile / takeWhileInclusive / outputContent:
let rec closure0 () (v0 : System.Threading.CancellationToken) : Async<System.Threading.CancellationToken> =
    let v1 : unit = ()
    
#if FABLE_COMP...em.Threading.CancellationToken -> Async<System.Threading.CancellationToken>) = closure0()
let merge_cancellation_token_with_default_async x = v0 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: async.spi
00:00:01   debug #16 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:01 verbose #4 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01   debug #17 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: threading.spi
00:00:01   debug #18 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: threading.spi
00:00:01   debug #19 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: threading.spi
00:00:01 verbose #20 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # threading\nopen rust\nopen rust_operators\n\n/// ## rust\n\n/// ### sl..._token x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/threading.spi"}} / result:
00:00:01   debug #21 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
#endif
type std_string_String = class end
#if FABLE_COMPILER
[<Fable.C...e0()
let v2 : unit = (fun () -> v1 (); v0) ()
let v15 : (US0 -> ((unit -> string) -> ((unit -> string) -> unit))) = closure4()
let trace x = v15 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: trace.spi
00:00:01   debug #22 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
#endif
type std_string_String = class end
#if FABLE_COMPILER
[<Fable.C...e0()
let v2 : unit = (fun () -> v1 (); v0) ()
let v15 : (US0 -> ((unit -> string) -> ((unit -> string) -> unit))) = closure4()
let trace x = v15 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: trace.spi
00:00:01   debug #23 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:01   debug #24 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: runtime.spi
00:00:01   debug #25 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:01 verbose #26 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/threading.spi"}} / result:
00:00:01 verbose #5 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01   debug #27 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:01   debug #28 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:01   debug #29 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:01 verbose #30 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # networking\nopen rust.rust_operators\n\n/// ## rust\n\n/// ### reqwest..._port x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/networking.spi"}} / result:
00:00:01 verbose #31 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/networking.spi"}} / result:
00:00:01   debug #32 Supervisor.buildFile / AsyncSeq.scan / outputContent:
type Disposable (f : unit -> unit) = interface System.IDisposable with member _.Dispose () = f ()
type [<Struct>] US0 =
    | US0_0 of f0_0 : System.T...ading.CancellationToken option -> struct (System.Threading.CancellationToken * System.IDisposable)) = closure0()
let new_disposable_token x = v0 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: threading.spi
00:00:01   debug #33 Supervisor.buildFile / takeWhileInclusive / outputContent:
type Disposable (f : unit -> unit) = interface System.IDisposable with member _.Dispose () = f ()
type [<Struct>] US0 =
    | US0_0 of f0_0 : System.T...ading.CancellationToken option -> struct (System.Threading.CancellationToken * System.IDisposable)) = closure0()
let new_disposable_token x = v0 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: threading.spi
00:00:01   debug #34 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:01 verbose #6 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:01   debug #35 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: crypto.spi
00:00:01   debug #36 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: crypto.spi
00:00:01   debug #37 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: crypto.spi
00:00:01 verbose #38 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # crypto\nopen rust\nopen rust_operators\n\n/// ## fsharp\n\n/// ### sha...h_to_port x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/crypto.spi"}} / result:
00:00:01 verbose #39 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/crypto.spi"}} / result:
00:00:01   debug #40 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: runtime.spi
00:00:01   debug #41 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:01   debug #42 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:01   debug #43 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:01   debug #44 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: crypto.spi
00:00:01   debug #45 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: crypto.spi
00:00:02   debug #46 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core....1024us
    v813
let v0 : (string -> string) = closure0()
let hash_text x = v0 x
let v1 : (string -> uint16) = closure1()
let hash_to_port x = v1 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: crypto.spi
00:00:02   debug #47 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>]
#endif
type Vec<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core....1024us
    v813
let v0 : (string -> string) = closure0()
let hash_text x = v0 x
let v1 : (string -> uint16) = closure1()
let hash_to_port x = v1 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: crypto.spi
00:00:02   debug #48 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:02 verbose #7 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:02   debug #49 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: common.spi
00:00:02   debug #50 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: common.spi
00:00:02   debug #51 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: common.spi
00:00:02 verbose #53 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # common\n\n/// ## common\n\n/// ### (:\u003E)\nprototype (~:\u003E) r :... !memoize x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/common.spi"}} / result:
00:00:02   debug #53 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
#endif
type std_string_String = class end
#if FABLE_COMPILER
[<Fable.C...ng option)) = closure39()
let execution_options x = v18 x
let v19 : (string -> Result<(string []), string>) = closure40()
let split_args x = v19 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: runtime.spi
00:00:02   debug #54 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
#endif
type std_string_String = class end
#if FABLE_COMPILER
[<Fable.C...ng option)) = closure39()
let execution_options x = v18 x
let v19 : (string -> Result<(string []), string>) = closure40()
let split_args x = v19 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi
00:00:02   debug #55 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:02 verbose #56 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/common.spi"}} / result:
00:00:02   debug #57 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:02   debug #58 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:02 verbose #8 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:02   debug #59 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: date_time.spi
00:00:02   debug #60 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: date_time.spi
00:00:02   debug #61 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: date_time.spi
00:00:02 verbose #62 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # date_time\nopen rust.rust_operators\nopen sm\u0027_operators\n\n/// ##...so8601 x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/date_time.spi"}} / result:
00:00:02 verbose #63 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/date_time.spi"}} / result:
00:00:02   debug #64 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("chrono::DateTime<$0>")>]
#endif
type chrono_DateTime<'T> = class end
#if FABLE_COMPILER
[<Fabl...g -> (System.DateTime -> string)) = closure11()
let format x = v6 x
let v7 : (System.DateTime -> string) = closure13()
let format_iso8601 x = v7 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: date_time.spi
00:00:02   debug #65 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("chrono::DateTime<$0>")>]
#endif
type chrono_DateTime<'T> = class end
#if FABLE_COMPILER
[<Fabl...g -> (System.DateTime -> string)) = closure11()
let format x = v6 x
let v7 : (System.DateTime -> string) = closure13()
let format_iso8601 x = v7 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: date_time.spi
00:00:02   debug #66 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:02 verbose #9 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:02   debug #67 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: platform.spi
00:00:02   debug #68 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: platform.spi
00:00:02   debug #69 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: platform.spi
00:00:02 verbose #70 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # platform\nopen rust.rust_operators\n\n/// ## fsharp\n\n/// ### os_plat...suffix ()\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/platform.spi"}} / result:
00:00:02   debug #71 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: common.spi
00:00:02   debug #72 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: common.spi
00:00:02 verbose #73 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/platform.spi"}} / result:
00:00:02   debug #74 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
#endif
type std_string_String = class end
#if FABLE_COMPILER
[<Fable.C...
let wait_for_port_access x = v17 x
let v18 : (int32 option -> (string -> (int32 -> Async<int32>))) = closure31()
let get_available_port x = v18 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: networking.spi
00:00:02   debug #75 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
#endif
type std_string_String = class end
#if FABLE_COMPILER
[<Fable.C...
let wait_for_port_access x = v17 x
let v18 : (int32 option -> (string -> (int32 -> Async<int32>))) = closure31()
let get_available_port x = v18 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi
00:00:02   debug #76 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:02 verbose #10 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:02   debug #77 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:02   debug #78 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:02   debug #79 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:02 verbose #80 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # file_system\nopen sm\u0027_operators\nopen rust\nopen rust_operators\n...bine x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/file_system.spi"}} / result:
00:00:02 verbose #81 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/file_system.spi"}} / result:
00:00:02   debug #82 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
#endif
type std_string_String = class end
#if FABLE_COMPILER
[<Fable.C...nit -> unit) -> unit option)) = closure5()
let retry_fn x = v16 x
let v17 : ((unit -> unit) -> (unit -> unit)) = closure18()
let memoize x = v17 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: common.spi
00:00:02   debug #83 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
#endif
type std_string_String = class end
#if FABLE_COMPILER
[<Fable.C...nit -> unit) -> unit option)) = closure5()
let retry_fn x = v16 x
let v17 : ((unit -> unit) -> (unit -> unit)) = closure18()
let memoize x = v17 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: common.spi
00:00:02   debug #84 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:02 verbose #11 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:02   debug #85 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: guid.spi
00:00:02   debug #86 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: guid.spi
00:00:02   debug #87 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: guid.spi
00:00:02 verbose #88 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # guid\n\n/// ## guid\n\n/// ### guid\nnominal guid_python =\n    \u0060...ew_raw_guid x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/guid.spi"}} / result:
00:00:02 verbose #89 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/guid.spi"}} / result:
00:00:02   debug #90 Supervisor.buildFile / AsyncSeq.scan / outputContent:
type [<Struct>] US0 =
    | US0_0
    | US0_1
    | US0_2
and [<Struct>] US1 =
    | US1_0 of f0_0 : US0
    | US1_1 of f1_0 : US0
    | US1_2 of f2_0...    v25
let v0 : (unit -> bool) = closure0()
let is_windows () = v0 ()
let v1 : (unit -> string) = closure1()
let get_executable_suffix () = v1 ()
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: platform.spi
00:00:02   debug #91 Supervisor.buildFile / takeWhileInclusive / outputContent:
type [<Struct>] US0 =
    | US0_0
    | US0_1
    | US0_2
and [<Struct>] US1 =
    | US1_0 of f0_0 : US0
    | US1_1 of f1_0 : US0
    | US1_2 of f2_0...    v25
let v0 : (unit -> bool) = closure0()
let is_windows () = v0 ()
let v1 : (unit -> string) = closure1()
let get_executable_suffix () = v1 ()
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: platform.spi
00:00:02   debug #92 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:02 verbose #12 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:02   debug #93 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: sm'.spi
00:00:02   debug #94 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: sm'.spi
00:00:02   debug #95 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: sm'.spi
00:00:02 verbose #96 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # sm\u0027\nopen rust\nopen rust_operators\nopen real_sm\u0027\n\n/// ##...ng = from_std_string\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/sm\u0027.spi"}} / result:
00:00:02 verbose #97 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/sm\u0027.spi"}} / result:
00:00:02   debug #98 Supervisor.buildFile / AsyncSeq.scan / outputContent:
let rec closure0 () (v0 : string) : System.Guid =
    let v1 : System.Guid = v0 |> System.Guid 
    v1
and method0 (v0 : string) : System.Guid =
    l... = v0 x
let v1 : (string -> System.Guid) = closure1()
let hash_guid x = v1 x
let v2 : (unit -> System.Guid) = closure2()
let new_raw_guid x = v2 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: guid.spi
00:00:02   debug #99 Supervisor.buildFile / takeWhileInclusive / outputContent:
let rec closure0 () (v0 : string) : System.Guid =
    let v1 : System.Guid = v0 |> System.Guid 
    v1
and method0 (v0 : string) : System.Guid =
    l... = v0 x
let v1 : (string -> System.Guid) = closure1()
let hash_guid x = v1 x
let v2 : (unit -> System.Guid) = closure2()
let new_raw_guid x = v2 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: guid.spi
00:00:02   debug #100 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:03   debug #101 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("regex::Regex")>]
#endif
type regex_Regex = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fa... : (string -> ((string []) -> string)) = closure46()
let join' x = v21 x
let v22 : (string -> (char [])) = closure48()
let to_char_array x = v22 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: sm'.spi
00:00:03   debug #102 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("regex::Regex")>]
#endif
type regex_Regex = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fa... : (string -> ((string []) -> string)) = closure46()
let join' x = v21 x
let v22 : (string -> (char [])) = closure48()
let to_char_array x = v22 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: sm'.spi
00:00:03   debug #103 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:03   debug #104 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:03   debug #105 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:03   debug #106 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:03   debug #107 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:04   debug #108 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:04   debug #109 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:04   debug #110 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:04   debug #111 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:04   debug #112 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
#endif
type std_string_String = class end
#if FABLE_COMPILER
[<Fable.C...()
let v32 : (bool -> unit) = closure64()
let init_trace_file x = v32 x
let v33 : (string -> (string -> string)) = closure66()
let (</>) x = v33 x
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: file_system.spi
00:00:04   debug #113 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>]
#endif
type std_string_String = class end
#if FABLE_COMPILER
[<Fable.C...()
let v32 : (bool -> unit) = closure64()
let init_trace_file x = v32 x
let v33 : (string -> (string -> string)) = closure66()
let (</>) x = v33 x
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi
00:00:04   debug #114 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
In [ ]:
{ pwsh ../apps/scheduler/build.ps1 } | Invoke-Block
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00   debug #1 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path Tasks.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:00 verbose #2 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Tasks.dib", "--retries", "3"])) }
00:00:00 verbose #3 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:00:00 verbose #4 >     "repl",
00:00:00 verbose #5 >     "--exit-after-run",
00:00:00 verbose #6 >     "--run",
00:00:00 verbose #7 >     "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib",
00:00:00 verbose #8 >     "--output-path",
00:00:00 verbose #9 >     "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb",
00:00:00 verbose #10 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:02 verbose #11 > >
00:00:02 verbose #12 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 verbose #13 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 verbose #14 > > │ ## Tasks (Polyglot)                                                          │
00:00:02 verbose #15 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:04 verbose #16 > >
00:00:04 verbose #17 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:04 verbose #18 > > //// test
00:00:04 verbose #19 > >
00:00:04 verbose #20 > > open testing
00:00:05 verbose #21 > >
00:00:05 verbose #22 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #23 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #24 > > │ ## task_name                                                                 │
00:00:05 verbose #25 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #26 > >
00:00:05 verbose #27 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #28 > > nominal task_name = string
00:00:05 verbose #29 > >
00:00:05 verbose #30 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #31 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #32 > > │ ## manual_scheduling                                                         │
00:00:05 verbose #33 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #34 > >
00:00:05 verbose #35 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #36 > > union manual_scheduling =
00:00:05 verbose #37 > >     | WithSuggestion
00:00:05 verbose #38 > >     | WithoutSuggestion
00:00:05 verbose #39 > >
00:00:05 verbose #40 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #41 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #42 > > │ ## recurrency_offset                                                         │
00:00:05 verbose #43 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #44 > >
00:00:05 verbose #45 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #46 > > union recurrency_offset =
00:00:05 verbose #47 > >     | Days : i32
00:00:05 verbose #48 > >     | Weeks : i32
00:00:05 verbose #49 > >     | Months : i32
00:00:05 verbose #50 > >
00:00:05 verbose #51 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #52 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #53 > > │ ## day_of_week                                                               │
00:00:05 verbose #54 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #55 > >
00:00:05 verbose #56 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #57 > > union day_of_week =
00:00:05 verbose #58 > >     | Sunday
00:00:05 verbose #59 > >     | Monday
00:00:05 verbose #60 > >     | Tuesday
00:00:05 verbose #61 > >     | Wednesday
00:00:05 verbose #62 > >     | Thursday
00:00:05 verbose #63 > >     | Friday
00:00:05 verbose #64 > >     | Saturday
00:00:05 verbose #65 > >
00:00:05 verbose #66 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #67 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #68 > > │ ## month                                                                     │
00:00:05 verbose #69 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #70 > >
00:00:05 verbose #71 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #72 > > union month =
00:00:05 verbose #73 > >     | January
00:00:05 verbose #74 > >     | February
00:00:05 verbose #75 > >     | March
00:00:05 verbose #76 > >     | April
00:00:05 verbose #77 > >     | May
00:00:05 verbose #78 > >     | June
00:00:05 verbose #79 > >     | July
00:00:05 verbose #80 > >     | August
00:00:05 verbose #81 > >     | September
00:00:05 verbose #82 > >     | October
00:00:05 verbose #83 > >     | November
00:00:05 verbose #84 > >     | December
00:00:05 verbose #85 > >
00:00:05 verbose #86 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #87 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #88 > > │ ## day                                                                       │
00:00:05 verbose #89 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #90 > >
00:00:05 verbose #91 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #92 > > nominal day = i32
00:00:05 verbose #93 > >
00:00:05 verbose #94 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:05 verbose #95 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:05 verbose #96 > > │ ## year                                                                      │
00:00:05 verbose #97 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:05 verbose #98 > >
00:00:05 verbose #99 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:05 verbose #100 > > nominal year = i32
00:00:06 verbose #101 > >
00:00:06 verbose #102 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #103 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #104 > > │ ## fixed_recurrency                                                          │
00:00:06 verbose #105 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #106 > >
00:00:06 verbose #107 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #108 > > union fixed_recurrency =
00:00:06 verbose #109 > >     | Weekly : day_of_week
00:00:06 verbose #110 > >     | Monthly : day
00:00:06 verbose #111 > >     | Yearly : day * month
00:00:06 verbose #112 > >
00:00:06 verbose #113 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #114 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #115 > > │ ## recurrency                                                                │
00:00:06 verbose #116 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #117 > >
00:00:06 verbose #118 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #119 > > union recurrency =
00:00:06 verbose #120 > >     | Offset : recurrency_offset
00:00:06 verbose #121 > >     | Fixed : list fixed_recurrency
00:00:06 verbose #122 > >
00:00:06 verbose #123 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #124 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #125 > > │ ## scheduling                                                                │
00:00:06 verbose #126 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #127 > >
00:00:06 verbose #128 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #129 > > union scheduling =
00:00:06 verbose #130 > >     | Manual : manual_scheduling
00:00:06 verbose #131 > >     | Recurrent : recurrency
00:00:06 verbose #132 > >
00:00:06 verbose #133 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #134 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #135 > > │ ## task                                                                      │
00:00:06 verbose #136 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #137 > >
00:00:06 verbose #138 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #139 > > type task =
00:00:06 verbose #140 > >     {
00:00:06 verbose #141 > >         name : task_name
00:00:06 verbose #142 > >         scheduling : scheduling
00:00:06 verbose #143 > >     }
00:00:06 verbose #144 > >
00:00:06 verbose #145 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #146 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #147 > > │ ## date                                                                      │
00:00:06 verbose #148 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #149 > >
00:00:06 verbose #150 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #151 > > type date =
00:00:06 verbose #152 > >     {
00:00:06 verbose #153 > >         year : year
00:00:06 verbose #154 > >         month : month
00:00:06 verbose #155 > >         day : day
00:00:06 verbose #156 > >     }
00:00:06 verbose #157 > >
00:00:06 verbose #158 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #159 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #160 > > │ ## status                                                                    │
00:00:06 verbose #161 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #162 > >
00:00:06 verbose #163 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #164 > > union status =
00:00:06 verbose #165 > >     | Postponed : option ()
00:00:06 verbose #166 > >
00:00:06 verbose #167 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #168 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #169 > > │ ## event                                                                     │
00:00:06 verbose #170 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #171 > >
00:00:06 verbose #172 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #173 > > type event =
00:00:06 verbose #174 > >     {
00:00:06 verbose #175 > >         date : date
00:00:06 verbose #176 > >         status : status
00:00:06 verbose #177 > >     }
00:00:06 verbose #178 > >
00:00:06 verbose #179 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #180 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #181 > > │ ## task_template                                                             │
00:00:06 verbose #182 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #183 > >
00:00:06 verbose #184 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #185 > > type task_template =
00:00:06 verbose #186 > >     {
00:00:06 verbose #187 > >         task : task
00:00:06 verbose #188 > >         events : list event
00:00:06 verbose #189 > >     }
00:00:06 verbose #190 > >
00:00:06 verbose #191 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:06 verbose #192 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:06 verbose #193 > > │ ## get_tasks (test)                                                          │
00:00:06 verbose #194 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:06 verbose #195 > >
00:00:06 verbose #196 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #197 > > //// test
00:00:06 verbose #198 > >
00:00:06 verbose #199 > > inl get_tasks () : list task_template =
00:00:06 verbose #200 > >     [[
00:00:06 verbose #201 > >         {
00:00:06 verbose #202 > >             task =
00:00:06 verbose #203 > >                 {
00:00:06 verbose #204 > >                     name = task_name "01"
00:00:06 verbose #205 > >                     scheduling = Manual WithSuggestion
00:00:06 verbose #206 > >                 }
00:00:06 verbose #207 > >             events = [[]]
00:00:06 verbose #208 > >         }
00:00:06 verbose #209 > >         {
00:00:06 verbose #210 > >             task =
00:00:06 verbose #211 > >                 {
00:00:06 verbose #212 > >                     name = task_name "02"
00:00:06 verbose #213 > >                     scheduling = Manual WithSuggestion
00:00:06 verbose #214 > >                 }
00:00:06 verbose #215 > >             events = [[]]
00:00:06 verbose #216 > >         }
00:00:06 verbose #217 > >         {
00:00:06 verbose #218 > >             task =
00:00:06 verbose #219 > >                 {
00:00:06 verbose #220 > >                     name = task_name "03"
00:00:06 verbose #221 > >                     scheduling = Manual WithSuggestion
00:00:06 verbose #222 > >                 }
00:00:06 verbose #223 > >             events = [[]]
00:00:06 verbose #224 > >         }
00:00:06 verbose #225 > >     ]]
00:00:06 verbose #226 > >
00:00:06 verbose #227 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:06 verbose #228 > > //// test
00:00:06 verbose #229 > > ///! fsharp
00:00:06 verbose #230 > > ///! cuda
00:00:06 verbose #231 > > ///! rust
00:00:06 verbose #232 > > ///! typescript
00:00:06 verbose #233 > > ///! python
00:00:06 verbose #234 > >
00:00:06 verbose #235 > > get_tasks ()
00:00:06 verbose #236 > > |> sm'.format_debug
00:00:06 verbose #237 > > |> _assert_string_contains "01"
00:00:18 verbose #238 > >
00:00:18 verbose #239 > > ╭─[ 12.12s - return value ]────────────────────────────────────────────────────╮
00:00:18 verbose #240 > > │ .py output (Cuda):                                                           │
00:00:18 verbose #241 > > │ __assert_string_contains / actual: 01 / expected: UH2_1(v0='01',             │
00:00:18 verbose #242 > > │ v1=US1_0(v0=US0_0()), v2=UH1_0(), v3=UH2_1(v0='02', v1=US1_0(v0=US0_0()),    │
00:00:18 verbose #243 > > │ v2=UH1_0(), v3=UH2_1(v0='03', v1=US1_0(v0=US0_0()), v2=UH1_0(),              │
00:00:18 verbose #244 > > │ v3=UH2_0())))                                                                │
00:00:18 verbose #245 > > │                                                                              │
00:00:18 verbose #246 > > │ .rs output:                                                                  │
00:00:18 verbose #247 > > │ __assert_string_contains / actual: "01" / expected: "UH2_1("01",             │
00:00:18 verbose #248 > > │ US1_0(US0_0), UH1_0, UH2_1("02", US1_0(US0_0), UH1_0, UH2_1("03",            │
00:00:18 verbose #249 > > │ US1_0(US0_0), UH1_0, UH2_0)))"                                               │
00:00:18 verbose #250 > > │                                                                              │
00:00:18 verbose #251 > > │ .ts output:                                                                  │
00:00:18 verbose #252 > > │ __assert_string_contains / actual: 01 / expected: UH2_1 (01, US1_0 US0_0,    │
00:00:18 verbose #253 > > │ UH1_0, UH2_1 (02, US1_0 US0_0, UH1_0, UH2_1 (03, US1_0 US0_0, UH1_0,         │
00:00:18 verbose #254 > > │ UH2_0)))                                                                     │
00:00:18 verbose #255 > > │                                                                              │
00:00:18 verbose #256 > > │ .py output:                                                                  │
00:00:18 verbose #257 > > │ __assert_string_contains / actual: 01 / expected: UH2_1 ("01", US1_0 US0_0,  │
00:00:18 verbose #258 > > │ UH1_0, UH2_1 ("02", US1_0 US0_0, UH1_0, UH2_1 ("03", US1_0 US0_0, UH1_0,     │
00:00:18 verbose #259 > > │ UH2_0)))                                                                     │
00:00:18 verbose #260 > > │                                                                              │
00:00:18 verbose #261 > > │                                                                              │
00:00:18 verbose #262 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 verbose #263 > >
00:00:18 verbose #264 > > ╭─[ 12.12s - stdout ]──────────────────────────────────────────────────────────╮
00:00:18 verbose #265 > > │ .fsx output:                                                                 │
00:00:18 verbose #266 > > │ __assert_string_contains / actual: "01" / expected: "UH2_1                   │
00:00:18 verbose #267 > > │   ("01", US1_0 US0_0, UH1_0,                                                 │
00:00:18 verbose #268 > > │    UH2_1 ("02", US1_0 US0_0, UH1_0, UH2_1 ("03", US1_0 US0_0, UH1_0,         │
00:00:18 verbose #269 > > │ UH2_0)))"                                                                    │
00:00:18 verbose #270 > > │                                                                              │
00:00:18 verbose #271 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:18 verbose #272 > >
00:00:18 verbose #273 > > ── spiral ──────────────────────────────────────────────────────────────────────
00:00:18 verbose #274 > > //// test
00:00:18 verbose #275 > > ///! fsharp
00:00:18 verbose #276 > > ///! cuda
00:00:18 verbose #277 > > ///! rust
00:00:18 verbose #278 > > ///! typescript
00:00:18 verbose #279 > > ///! python
00:00:18 verbose #280 > >
00:00:18 verbose #281 > > get_tasks ()
00:00:18 verbose #282 > > |> listm'.try_item 0i32
00:00:18 verbose #283 > > |> fun (Some task) => task.task.name
00:00:18 verbose #284 > > |> _assert_eq (task_name "01")
00:00:30 verbose #285 > >
00:00:30 verbose #286 > > ╭─[ 11.16s - return value ]────────────────────────────────────────────────────╮
00:00:30 verbose #287 > > │ .py output (Cuda):                                                           │
00:00:30 verbose #288 > > │ __assert_eq / actual: 01 / expected: 01                                      │
00:00:30 verbose #289 > > │                                                                              │
00:00:30 verbose #290 > > │ .rs output:                                                                  │
00:00:30 verbose #291 > > │ __assert_eq / actual: "01" / expected: "01"                                  │
00:00:30 verbose #292 > > │                                                                              │
00:00:30 verbose #293 > > │ .ts output:                                                                  │
00:00:30 verbose #294 > > │ __assert_eq / actual: 01 / expected: 01                                      │
00:00:30 verbose #295 > > │                                                                              │
00:00:30 verbose #296 > > │ .py output:                                                                  │
00:00:30 verbose #297 > > │ __assert_eq / actual: 01 / expected: 01                                      │
00:00:30 verbose #298 > > │                                                                              │
00:00:30 verbose #299 > > │                                                                              │
00:00:30 verbose #300 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:30 verbose #301 > >
00:00:30 verbose #302 > > ╭─[ 11.16s - stdout ]──────────────────────────────────────────────────────────╮
00:00:30 verbose #303 > > │ .fsx output:                                                                 │
00:00:30 verbose #304 > > │ __assert_eq / actual: "01" / expected: "01"                                  │
00:00:30 verbose #305 > > │                                                                              │
00:00:30 verbose #306 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:30 verbose #307 > 00:00:29 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 16233 }
00:00:30 verbose #308 > 00:00:29   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:00:30 verbose #309 >     "nbconvert",
00:00:30 verbose #310 >     "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb",
00:00:30 verbose #311 >     "--to",
00:00:30 verbose #312 >     "html",
00:00:30 verbose #313 >     "--HTMLExporter.theme=dark",
00:00:30 verbose #314 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:30 verbose #315 > 00:00:30 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb to html
00:00:30 verbose #316 > 00:00:30 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:30 verbose #317 > 00:00:30 verbose #7 !   validate(nb)
00:00:31 verbose #318 > 00:00:30 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:31 verbose #319 > 00:00:30 verbose #9 !   return _pygments_highlight(
00:00:31 verbose #320 > 00:00:30 verbose #10 ! [NbConvertApp] Writing 300476 bytes to /home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html
00:00:31 verbose #321 > 00:00:30 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 }
00:00:31 verbose #322 > 00:00:30   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 }
00:00:31 verbose #323 > 00:00:30   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:00:31 verbose #324 >     "-c",
00:00:31 verbose #325 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:00:31 verbose #326 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:31 verbose #327 > 00:00:31 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:31 verbose #328 > 00:00:31   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:31 verbose #329 > 00:00:31   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 17194 }
00:00:31   debug #330 runtime.execute_with_options_async / { exit_code = 0; output_length = 20653 }
00:00:31   debug #1 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path Tasks.dib --retries 3
00:00:00   debug #1 writeDibCode / output: Spi / path: Tasks.dib
00:00:00   debug #2 parseDibCode / output: Spi / file: Tasks.dib
In [ ]:
{ pwsh ../apps/chat/build.ps1 } | Invoke-Block
00:00:00   debug #1 writeDibCode / output: Spi / path: chat_contract.dib
00:00:00   debug #2 parseDibCode / output: Spi / file: chat_contract.dib
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00 verbose #2 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00   debug #1 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: chat_contract.spi
00:00:00   debug #2 Supervisor.buildFile / AsyncSeq.scan / outputContent:
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: chat_contract.spi
00:00:00   debug #3 Supervisor.buildFile / takeWhileInclusive / outputContent:
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: chat_contract.spi
00:00:00 verbose #4 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # chat_contract\nopen rust\nopen rust.rust_operators\n\n/// ## chat_cont...27 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.spi"}} / result:
00:00:00 verbose #5 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.spi"}} / result:
00:00:00   debug #6 Supervisor.buildFile / AsyncSeq.scan / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("*/ $0 /*")>]
#endif
type TypeEmit<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable... / i': 15uy / n: 14uy"
    let v287 : bool = Fable.Core.RustInterop.emitRustExpr () v286 
    ()
let v0 : (unit -> unit) = closure0()
v0 |> ignore
()
 / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 / error:  / path: chat_contract.spi
00:00:00   debug #7 Supervisor.buildFile / takeWhileInclusive / outputContent:
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable.Core.Emit("*/ $0 /*")>]
#endif
type TypeEmit<'T> = class end
#if FABLE_COMPILER
[<Fable.Core.Erase; Fable... / i': 15uy / n: 14uy"
    let v287 : bool = Fable.Core.RustInterop.emitRustExpr () v286 
    ()
let v0 : (unit -> unit) = closure0()
v0 |> ignore
()
 / errors: [] / typeErrorCount: 0 / retry: 0 / path: chat_contract.spi
00:00:00   debug #8 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
00:00:00   debug #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: chat_contract / hash:  / code.Length: 28575
00:00:00   debug #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj
00:00:00   debug #1 runtime.execute_with_options_async / { options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/chat/contract/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract" } }
00:00:00 verbose #2 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET
00:00:00 verbose #3 >   Determining projects to restore...
00:00:01 verbose #4 >   Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
00:00:01 verbose #5 >   The last full restore is still up to date. Nothing left to do.
00:00:01 verbose #6 >   Total time taken: 0 milliseconds
00:00:01 verbose #7 >   Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
00:00:01 verbose #8 >   Restoring /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj
00:00:01 verbose #9 >   Starting restore process.
00:00:02 verbose #10 >   Total time taken: 0 milliseconds
00:00:02 verbose #11 >   Restored /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj (in 279 ms).
00:00:02 verbose #12 > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj]
00:00:11 verbose #13 >   chat_contract -> /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/bin/Release/net9.0/linux-x64/chat_contract.dll
00:00:12 verbose #14 >   chat_contract -> /home/runner/work/polyglot/polyglot/apps/chat/contract/dist
00:00:12   debug #15 runtime.execute_with_options_async / { exit_code = 0; output_length = 1149 }
targetDir: /home/runner/work/polyglot/polyglot/target/Builder/chat_contract
Fable 4.19.3: F# to Rust compiler (status: alpha)

Thanks to the contributor! @entropitor
Stand with Ukraine! https://standwithukraine.com.ua/

Parsing target/Builder/chat_contract/chat_contract.fsproj...
target/Builder/chat_contract> dotnet restore chat_contract.fable-temp.csproj -p:FABLE_COMPILER=true -p:FABLE_COMPILER_4=true -p:FABLE_COMPILER_RUST=true -p:CONTRACT=true -p:_LINUX=true
  Determining projects to restore...
  Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
  The last full restore is still up to date. Nothing left to do.
  Total time taken: 0 milliseconds
  Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
  Restoring /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fable-temp.csproj
  Starting restore process.
  Total time taken: 0 milliseconds
  Restored /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fable-temp.csproj (in 303 ms).
target/Builder/chat_contract> dotnet restore /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj
  Determining projects to restore...
  Restored /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj (in 297 ms).
Project and references (14 source files) parsed in 4961ms

Started Fable compilation...

Fable compilation finished in 6101ms

./lib/spiral/date_time.fsx(1012,0): (1012,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/async_.fsx(76,0): (76,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/crypto.fsx(1326,0): (1326,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/sm.fsx(414,0): (414,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/threading.fsx(145,0): (145,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/common.fsx(1425,0): (1425,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/platform.fsx(104,0): (104,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/networking.fsx(4626,0): (4626,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/trace.fsx(1524,0): (1524,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./target/Builder/chat_contract/chat_contract.fs(544,6): (544,12) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/runtime.fsx(7219,0): (7219,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
./lib/spiral/file_system.fsx(11479,0): (11479,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk!
 Downloading crates ...
  Downloaded cfg-if v0.1.10
  Downloaded wasm-bindgen-macro v0.2.93
  Downloaded wasm-bindgen-shared v0.2.93
  Downloaded near-sdk-macros v5.4.0
  Downloaded wee_alloc v0.4.5
  Downloaded js-sys v0.3.70
  Downloaded near-sys v0.2.2
  Downloaded wasm-bindgen-backend v0.2.93
  Downloaded near-sdk v5.4.0
  Downloaded multibase v0.9.1
  Downloaded wasm-bindgen v0.2.93
  Downloaded unsigned-varint v0.8.0
  Downloaded data-encoding-macro v0.1.15
  Downloaded base-x v0.2.11
  Downloaded wasm-bindgen-macro-support v0.2.93
  Downloaded near-token v0.3.0
  Downloaded memory_units v0.4.0
  Downloaded data-encoding-macro-internal v0.1.13
  Downloaded near-gas v0.3.0
   Compiling proc-macro-error v1.0.4
   Compiling syn v2.0.76
   Compiling wasm-bindgen-shared v0.2.93
   Compiling bumpalo v3.16.0
   Compiling typenum v1.17.0
   Compiling serde v1.0.209
   Compiling borsh v1.5.1
   Compiling syn v1.0.109
   Compiling once_cell v1.19.0
   Compiling cfg-if v1.0.0
   Compiling wasm-bindgen v0.2.93
   Compiling near-sdk-macros v5.4.0
   Compiling data-encoding v2.6.0
   Compiling hybrid-array v0.2.0-rc.9
   Compiling wee_alloc v0.4.5
   Compiling data-encoding-macro-internal v0.1.13
   Compiling crypto-common v0.2.0-rc.1
   Compiling serde_json v1.0.127
   Compiling ryu v1.0.18
   Compiling const-oid v0.10.0-rc.0
   Compiling strum v0.26.3
   Compiling itoa v1.0.11
   Compiling cfg-if v0.1.10
   Compiling Inflector v0.11.4
   Compiling memchr v2.7.4
   Compiling block-buffer v0.11.0-rc.1
   Compiling memory_units v0.4.0
   Compiling digest v0.11.0-pre.9
   Compiling wasm-bindgen-backend v0.2.93
   Compiling darling_core v0.20.10
   Compiling data-encoding-macro v0.1.15
   Compiling near-sys v0.2.2
   Compiling bs58 v0.5.1
   Compiling base64 v0.22.1
   Compiling base-x v0.2.11
   Compiling multibase v0.9.1
   Compiling wasm-bindgen-macro-support v0.2.93
   Compiling sha2 v0.11.0-pre.4
   Compiling unsigned-varint v0.8.0
   Compiling inline_colorization v0.1.6
   Compiling serde_derive v1.0.209
   Compiling syn_derive v0.1.8
   Compiling wasm-bindgen-macro v0.2.93
   Compiling darling_macro v0.20.10
   Compiling darling v0.20.10
   Compiling borsh-derive v1.5.1
   Compiling strum_macros v0.26.4
   Compiling js-sys v0.3.70
   Compiling near-token v0.3.0
   Compiling near-gas v0.3.0
   Compiling near-account-id v1.0.0
   Compiling getrandom v0.2.15
   Compiling near-sdk v5.4.0
   Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust)
   Compiling chat_contract v0.0.1 (/home/runner/work/polyglot/polyglot/apps/chat/contract)
    Finished `release` profile [optimized] target(s) in 17.68s
   Compiling typenum v1.17.0
   Compiling futures-executor v0.3.30
   Compiling strum_macros v0.26.4
   Compiling near-token v0.3.0
   Compiling opentelemetry_sdk v0.22.1
   Compiling futures v0.3.30
   Compiling near-performance-metrics v0.23.0
   Compiling near-gas v0.3.0
   Compiling near-sys v0.2.2
   Compiling generic-array v0.14.7
   Compiling crypto-common v0.1.6
   Compiling block-buffer v0.10.4
   Compiling block-padding v0.3.3
   Compiling digest v0.10.7
   Compiling inout v0.1.3
   Compiling opentelemetry-proto v0.5.0
   Compiling cipher v0.4.4
   Compiling sha2 v0.10.8
   Compiling curve25519-dalek v4.1.3
   Compiling near-primitives-core v0.23.0
   Compiling hmac v0.12.1
   Compiling blake2 v0.10.6
   Compiling sha1 v0.10.6
   Compiling opentelemetry-otlp v0.15.0
   Compiling aes v0.8.4
   Compiling ed25519-dalek v2.1.1
   Compiling near-crypto v0.23.0
   Compiling tracing-opentelemetry v0.23.0
   Compiling near-parameters v0.23.0
   Compiling near-o11y v0.23.0
   Compiling near-fmt v0.23.0
   Compiling sha3 v0.10.8
   Compiling near-async v0.23.0
   Compiling near-primitives v0.23.0
   Compiling digest v0.9.0
   Compiling zbus v3.15.2
   Compiling pbkdf2 v0.11.0
   Compiling hkdf v0.12.4
   Compiling cbc v0.1.2
   Compiling crypto-mac v0.9.1
   Compiling block-buffer v0.9.0
   Compiling sha2 v0.9.9
   Compiling hmac v0.9.0
   Compiling zip v0.6.6
   Compiling slipped10 v0.4.6
   Compiling binary-install v0.2.0
   Compiling near-sandbox-utils v0.9.0
   Compiling near-sdk-macros v5.4.0
   Compiling near-sandbox-utils v0.10.1
   Compiling near-sdk v5.4.0
   Compiling secret-service v3.1.0
   Compiling keyring v2.3.3
   Compiling near-chain-configs v0.23.0
   Compiling near-jsonrpc-primitives v0.23.0
   Compiling near-jsonrpc-client v0.10.1
   Compiling near-socialdb-client v0.3.2
   Compiling near-cli-rs v0.11.1
   Compiling cargo-near v0.6.4
   Compiling near-workspaces v0.11.1
   Compiling chat_contract_tests v0.0.1 (/home/runner/work/polyglot/polyglot/apps/chat/contract/tests)
    Finished `release` profile [optimized] target(s) in 1m 29s
     Running `/home/runner/work/polyglot/polyglot/workspace/target/release/chat_contract_tests`
Installed near-sandbox into /home/runner/work/polyglot/polyglot/workspace/target/release/build/near-sandbox-utils-c39df2faf0b47791/out/.near/near-sandbox-1.40.0_7dd0b5993577f592be15eb102e5a3da37be66271/near-sandbox


new: ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 1550478844443,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 9HrcLPQ7ipJb4FDtVBvaR5m31N8KNUJZ3MBWKH4jC3e7,
        block_hash: 5GgSp36DTkUsSaoY9tjy38ViLsQbwUXojHUG8qB7gb5K,
        logs: [],
        receipt_ids: [
            CDg1DdMWmFJ6oqqsdGTqnR7PVutC6WjDzHpwryr5JiZ9,
        ],
        gas_burnt: NearGas {
            inner: 308066207802,
        },
        tokens_burnt: NearToken {
            inner: 30806620780200000000,
        },
        executor_id: AccountId(
            "dev-20240906150821-61494692078095",
        ),
        status: SuccessReceiptId(CDg1DdMWmFJ6oqqsdGTqnR7PVutC6WjDzHpwryr5JiZ9),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: CDg1DdMWmFJ6oqqsdGTqnR7PVutC6WjDzHpwryr5JiZ9,
            block_hash: 5GgSp36DTkUsSaoY9tjy38ViLsQbwUXojHUG8qB7gb5K,
            logs: [],
            receipt_ids: [
                DtN5m5YveERRJa2E7EVuXB9pniasHTk83FrWSujsQfXa,
            ],
            gas_burnt: NearGas {
                inner: 1242412636641,
            },
            tokens_burnt: NearToken {
                inner: 124241263664100000000,
            },
            executor_id: AccountId(
                "dev-20240906150821-61494692078095",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.001035719868087924
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205788226811736
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.000829931641276188
  outcome_tokens_burnt_usd: 0.0


claim_alias(contract, ''): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 1825999512589,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 2kiaAQxKLJMSSyDmx4JnWRj5setjb73EdqT8h72c5wXv,
        block_hash: 241HEsuZdtUiQEH6rf93ySF1mA8nU5vG52MFCFFECho6,
        logs: [],
        receipt_ids: [
            25QmKrzKgwtUwjXjpp1Vnm8fyajx8BJRkNMrqe4zbcSu,
        ],
        gas_burnt: NearGas {
            inner: 308110926482,
        },
        tokens_burnt: NearToken {
            inner: 30811092648200000000,
        },
        executor_id: AccountId(
            "dev-20240906150821-61494692078095",
        ),
        status: SuccessReceiptId(25QmKrzKgwtUwjXjpp1Vnm8fyajx8BJRkNMrqe4zbcSu),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 25QmKrzKgwtUwjXjpp1Vnm8fyajx8BJRkNMrqe4zbcSu,
            block_hash: 241HEsuZdtUiQEH6rf93ySF1mA8nU5vG52MFCFFECho6,
            logs: [
                "claim_alias ;\n                                                            alias: \"\" ;\n                                                            account_id: AccountId(\n    \"dev-20240906150821-61494692078095\",\n) ;\n                                                            timestamp: 1725635303028880758",
            ],
            receipt_ids: [
                HUqqZzYUNPP3ecfff2i8HJPADF8tiXQsQHxF33dZ7bn1,
            ],
            gas_burnt: NearGas {
                inner: 1294706023607,
            },
            tokens_burnt: NearToken {
                inner: 129470602360700000000,
            },
            executor_id: AccountId(
                "dev-20240906150821-61494692078095",
            ),
            status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: Invalid alias")) })),
        },
        ExecutionOutcome {
            transaction_hash: HUqqZzYUNPP3ecfff2i8HJPADF8tiXQsQHxF33dZ7bn1,
            block_hash: 2ywisg8CSSfnr5kKhKWDe4aWP8WLSaKsaTYQFjP3VWai,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20240906150821-61494692078095",
            ),
            status: SuccessValue(''),
        },
    ],
    status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: Invalid alias")) })),
}
total_gas_burnt_usd: 0.001219767674409452
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205818098889976
  outcome_tokens_burnt_usd: 0.0
outcome (success: false):
  outcome_gas_burnt_usd: 0.000864863623769476
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


dev_create_account(account1): Account {
    id: AccountId(
        "dev-20240906150823-65203187145440",
    ),
}


generate_cid_borsh(account1): ViewResultDetails {
    result: [
        59,
        0,
        0,
        0,
        98,
        97,
        102,
        107,
        114,
        101,
        105,
        104,
        100,
        119,
        100,
        99,
        101,
        102,
        103,
        104,
        52,
        100,
        113,
        107,
        106,
        118,
        54,
        55,
        117,
        122,
        99,
        109,
        119,
        55,
        111,
        106,
        101,
        101,
        54,
        120,
        101,
        100,
        122,
        100,
        101,
        116,
        111,
        106,
        117,
        122,
        106,
        101,
        118,
        116,
        101,
        110,
        120,
        113,
        117,
        118,
        121,
        107,
        117,
    ],
    logs: [],
}


claim_alias(account1, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 2251508365774,
    },
    transaction: ExecutionOutcome {
        transaction_hash: BCsRE9j7gusyG3hk1cqcxGDKybecQocE14mU3jxrS7PE,
        block_hash: 2DcHpqEw6ajakQxNuNuQZAGtuQbEgv5Cnx5pKkD9pvEH,
        logs: [],
        receipt_ids: [
            HgonTuMeeb2eQL71tvU9uLjXvHFb6dwfMhMQEk2pj7Y8,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20240906150823-65203187145440",
        ),
        status: SuccessReceiptId(HgonTuMeeb2eQL71tvU9uLjXvHFb6dwfMhMQEk2pj7Y8),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: HgonTuMeeb2eQL71tvU9uLjXvHFb6dwfMhMQEk2pj7Y8,
            block_hash: 97BXmTz7ia3GQTM8t2PmB7rPK6wcnG4tJf1KK3LiQxBj,
            logs: [
                "claim_alias ;\n                                                            alias: \"alias1\" ;\n                                                            account_id: AccountId(\n    \"dev-20240906150823-65203187145440\",\n) ;\n                                                            timestamp: 1725635304849588279",
            ],
            receipt_ids: [
                ChdqHnY5GmyeMQrHS9itbJvzJqkCAPEAei1frtYZv6H9,
            ],
            gas_burnt: NearGas {
                inner: 1720201461188,
            },
            tokens_burnt: NearToken {
                inner: 172020146118800000000,
            },
            executor_id: AccountId(
                "dev-20240906150821-61494692078095",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: ChdqHnY5GmyeMQrHS9itbJvzJqkCAPEAei1frtYZv6H9,
            block_hash: DzYHUZ5zXbtHjUEZ57xWKmdX8BaaLGGzb9LU3HNoBLod,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20240906150823-65203187145440",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.0015040075883370318
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.001149094576073584
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


claim_alias(account1, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 2076448382059,
    },
    transaction: ExecutionOutcome {
        transaction_hash: GfWvCqFASkq8bEQL41NZPEf4DhH5tcZbKtQHZZtprYeH,
        block_hash: FAetoBdLz5KwuNmKkRirvnAx7QhoKzvFr5jJWZfJJv3b,
        logs: [],
        receipt_ids: [
            3UFNkKy7WuWYSkDEkZks3ExEYSSbiyLFegJK2zqXa28g,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20240906150823-65203187145440",
        ),
        status: SuccessReceiptId(3UFNkKy7WuWYSkDEkZks3ExEYSSbiyLFegJK2zqXa28g),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: 3UFNkKy7WuWYSkDEkZks3ExEYSSbiyLFegJK2zqXa28g,
            block_hash: GcThxrrAwMFGd3SM5xhWEgRfNcQBoaB9vDZjByjhNegQ,
            logs: [
                "claim_alias ;\n                                                            alias: \"alias1\" ;\n                                                            account_id: AccountId(\n    \"dev-20240906150823-65203187145440\",\n) ;\n                                                            timestamp: 1725635305861502436",
                "Alias already claimed",
            ],
            receipt_ids: [
                4PR4feWzMUmXbusxrgRJunRi47AzcZ7uNMd6bt7egMnZ,
            ],
            gas_burnt: NearGas {
                inner: 1545141477473,
            },
            tokens_burnt: NearToken {
                inner: 154514147747300000000,
            },
            executor_id: AccountId(
                "dev-20240906150821-61494692078095",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 4PR4feWzMUmXbusxrgRJunRi47AzcZ7uNMd6bt7egMnZ,
            block_hash: 9ponUfGTzSg4gjYePoVpfJ6QqTdodErsadz25ujVsAaP,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20240906150823-65203187145440",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.0013870675192154118
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.001032154506951964
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account1): Some(
    (
        "alias1",
        (
            1725635304849588279,
            0,
        ),
    ),
)


get_alias_map(account1, alias1): Some(
    {
        AccountId(
            "dev-20240906150823-65203187145440",
        ): (
            1725635304849588279,
            0,
        ),
    },
)


dev_create_account(account2): Account {
    id: AccountId(
        "dev-20240906150826-72149056471042",
    ),
}


claim_alias(alias2): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 2338858145404,
    },
    transaction: ExecutionOutcome {
        transaction_hash: G34by6v3Mb1ubpV15Fh5vn7TcHYwPJzegg9CHUPARWTK,
        block_hash: 8mfDV8Bz4YKVjtRA5bKRxCk4VqmwmwRSyPC4TLqQ1S2L,
        logs: [],
        receipt_ids: [
            Gks1WaPcSo9yhf1wBN2dHPooSN7MWCf84egixFPcGE7y,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20240906150826-72149056471042",
        ),
        status: SuccessReceiptId(Gks1WaPcSo9yhf1wBN2dHPooSN7MWCf84egixFPcGE7y),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: Gks1WaPcSo9yhf1wBN2dHPooSN7MWCf84egixFPcGE7y,
            block_hash: QgpGVDXHgU1SkQwyewnSujhicVSLkxJMMGUjQPHXjeF,
            logs: [
                "claim_alias ;\n                                                            alias: \"alias2\" ;\n                                                            account_id: AccountId(\n    \"dev-20240906150826-72149056471042\",\n) ;\n                                                            timestamp: 1725635307884362667",
            ],
            receipt_ids: [
                2jGnBcxpQdGF8H48G7F1CKfh3i8rqePSMCWzNv5Qdk1G,
            ],
            gas_burnt: NearGas {
                inner: 1807551240818,
            },
            tokens_burnt: NearToken {
                inner: 180755124081800000000,
            },
            executor_id: AccountId(
                "dev-20240906150821-61494692078095",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 2jGnBcxpQdGF8H48G7F1CKfh3i8rqePSMCWzNv5Qdk1G,
            block_hash: 9yEAR51HpUB2cCHrtYVrmT2rgDoB5Sa84ZNkQZ4PayvC,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20240906150826-72149056471042",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.001562357241129872
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.001207444228866424
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account2): Some(
    (
        "alias2",
        (
            1725635307884362667,
            0,
        ),
    ),
)


get_alias_map_borsh(alias2): Some(
    {
        AccountId(
            "dev-20240906150826-72149056471042",
        ): (
            1725635307884362667,
            0,
        ),
    },
)


claim_alias(account2, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 2642282396731,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 9ipWz3ZLJCpt58cdEJ78jBEjbkZRy1A5Q6BPdipYvR8H,
        block_hash: 6cauu8UULig1LUTp6Qmocp9ydLfReTZpCxfyJoKL2Fh4,
        logs: [],
        receipt_ids: [
            DYtm8b5xSj2eJg3pHATTrxRpv2rQuEAWU4Y92pCd35ic,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20240906150826-72149056471042",
        ),
        status: SuccessReceiptId(DYtm8b5xSj2eJg3pHATTrxRpv2rQuEAWU4Y92pCd35ic),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: DYtm8b5xSj2eJg3pHATTrxRpv2rQuEAWU4Y92pCd35ic,
            block_hash: ED9U7YEMhHzWGz6s48DkR7EeaosNA69ek4P5pRUS5bUK,
            logs: [
                "claim_alias ;\n                                                            alias: \"alias1\" ;\n                                                            account_id: AccountId(\n    \"dev-20240906150826-72149056471042\",\n) ;\n                                                            timestamp: 1725635308896128456",
            ],
            receipt_ids: [
                ArEDZ4fTikumTMDVE9g8VeCQZR2FwKhhZtFvz6cmzU66,
            ],
            gas_burnt: NearGas {
                inner: 2110975492145,
            },
            tokens_burnt: NearToken {
                inner: 211097549214500000000,
            },
            executor_id: AccountId(
                "dev-20240906150821-61494692078095",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: ArEDZ4fTikumTMDVE9g8VeCQZR2FwKhhZtFvz6cmzU66,
            block_hash: 6482gwwFGJL1zjbvx4fKsZScMiC2BXd8Di8gWzZ2RzgG,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20240906150826-72149056471042",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.0017650446410163079
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.0014101316287528601
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account2): Some(
    (
        "alias1",
        (
            1725635308896128456,
            1,
        ),
    ),
)


get_alias_map(account2, alias1): Some(
    {
        AccountId(
            "dev-20240906150823-65203187145440",
        ): (
            1725635304849588279,
            0,
        ),
        AccountId(
            "dev-20240906150826-72149056471042",
        ): (
            1725635308896128456,
            1,
        ),
    },
)


get_alias_map(account2, alias2): Some(
    {},
)


claim_alias(account1, alias2): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 2637246307255,
    },
    transaction: ExecutionOutcome {
        transaction_hash: AkPp11wyuHKmLm1ZdSekr5ZRRg6WdndSfTLdNruFYcCo,
        block_hash: EFN6gZ5hS8W5wdLE9ZAs8A46dd5aymV3R6JLaUyNcKxm,
        logs: [],
        receipt_ids: [
            DkyvDoGQo3NH9H95iCysgjyv81HTY2BcsGL3upy81RgK,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20240906150823-65203187145440",
        ),
        status: SuccessReceiptId(DkyvDoGQo3NH9H95iCysgjyv81HTY2BcsGL3upy81RgK),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: DkyvDoGQo3NH9H95iCysgjyv81HTY2BcsGL3upy81RgK,
            block_hash: 39VRDKYUwsLdK1TGPtH6aiKhHf7AT28LNpPYZFYLvE1c,
            logs: [
                "claim_alias ;\n                                                            alias: \"alias2\" ;\n                                                            account_id: AccountId(\n    \"dev-20240906150823-65203187145440\",\n) ;\n                                                            timestamp: 1725635309908085507",
            ],
            receipt_ids: [
                5pG4HSmpEDtJeYR3jFJo3z7F3tYmiAbFzevmaGTFzgq3,
            ],
            gas_burnt: NearGas {
                inner: 2105939402669,
            },
            tokens_burnt: NearToken {
                inner: 210593940266900000000,
            },
            executor_id: AccountId(
                "dev-20240906150821-61494692078095",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 5pG4HSmpEDtJeYR3jFJo3z7F3tYmiAbFzevmaGTFzgq3,
            block_hash: 61tXEPffDTo7yWiyQF2eC7f5AqeEKTzFMQfwdQBSe2dY,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20240906150823-65203187145440",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.00176168053324634
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.001406767520982892
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account1): Some(
    (
        "alias2",
        (
            1725635309908085507,
            0,
        ),
    ),
)


get_alias_map(account1, alias2): Some(
    {
        AccountId(
            "dev-20240906150823-65203187145440",
        ): (
            1725635309908085507,
            0,
        ),
    },
)


get_alias_map(account1, alias1): Some(
    {
        AccountId(
            "dev-20240906150826-72149056471042",
        ): (
            1725635308896128456,
            1,
        ),
    },
)


claim_alias(account1, alias1): ExecutionFinalResult {
    total_gas_burnt: NearGas {
        inner: 2642282396731,
    },
    transaction: ExecutionOutcome {
        transaction_hash: 5sSpnogzQ8AGHMr95mRb9TY6oeudSbVKjjWfPrRwhfaS,
        block_hash: G7HXnoMbydXS4SVBH9QP4xBk1A9iceGBN5BpV96kE29m,
        logs: [],
        receipt_ids: [
            GqjAx6x7ABxoBnzRNRuKJD85dRaKWeVysgGVBobaWDKB,
        ],
        gas_burnt: NearGas {
            inner: 308124342086,
        },
        tokens_burnt: NearToken {
            inner: 30812434208600000000,
        },
        executor_id: AccountId(
            "dev-20240906150823-65203187145440",
        ),
        status: SuccessReceiptId(GqjAx6x7ABxoBnzRNRuKJD85dRaKWeVysgGVBobaWDKB),
    },
    receipts: [
        ExecutionOutcome {
            transaction_hash: GqjAx6x7ABxoBnzRNRuKJD85dRaKWeVysgGVBobaWDKB,
            block_hash: 8aLuKoKZoWPFW6K92zKo4ezsQu6J63688HtPqPsabegs,
            logs: [
                "claim_alias ;\n                                                            alias: \"alias1\" ;\n                                                            account_id: AccountId(\n    \"dev-20240906150823-65203187145440\",\n) ;\n                                                            timestamp: 1725635310919464403",
            ],
            receipt_ids: [
                77hHaUyCAHLJRSCPAFqmzviu9ehkna6VyB7mXM2aevx1,
            ],
            gas_burnt: NearGas {
                inner: 2110975492145,
            },
            tokens_burnt: NearToken {
                inner: 211097549214500000000,
            },
            executor_id: AccountId(
                "dev-20240906150821-61494692078095",
            ),
            status: SuccessValue(''),
        },
        ExecutionOutcome {
            transaction_hash: 77hHaUyCAHLJRSCPAFqmzviu9ehkna6VyB7mXM2aevx1,
            block_hash: EphzVBDDm3Xb85UkX5pJ9BYrpB68LZHMCvBSimp3Jdj6,
            logs: [],
            receipt_ids: [],
            gas_burnt: NearGas {
                inner: 223182562500,
            },
            tokens_burnt: NearToken {
                inner: 0,
            },
            executor_id: AccountId(
                "dev-20240906150823-65203187145440",
            ),
            status: SuccessValue(''),
        },
    ],
    status: SuccessValue(''),
}
total_gas_burnt_usd: 0.0017650446410163079
outcome (success: true):
  outcome_gas_burnt_usd: 0.000205827060513448
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.0014101316287528601
  outcome_tokens_burnt_usd: 0.0
outcome (success: true):
  outcome_gas_burnt_usd: 0.00014908595175
  outcome_tokens_burnt_usd: 0.0


get_account_info(account1): Some(
    (
        "alias1",
        (
            1725635310919464403,
            1,
        ),
    ),
)


get_alias_map(account1, alias1): Some(
    {
        AccountId(
            "dev-20240906150823-65203187145440",
        ): (
            1725635310919464403,
            1,
        ),
        AccountId(
            "dev-20240906150826-72149056471042",
        ): (
            1725635308896128456,
            0,
        ),
    },
)


get_alias_map(account1, alias2): Some(
    {},
)
In [ ]:
{ pwsh ../apps/spiral/temp/extension/build.ps1 } | Invoke-Block
bun install v1.1.26 (0a37423b)

+ @playwright/test@1.44.0
+ @types/chrome@0.0.268
+ npm-check-updates@17.0.0-5
+ buffer@6.0.3

11 packages installed [142.00ms]
[INFO]: 🎯  Checking for the Wasm target...
[INFO]: 🌀  Compiling to Wasm...
   Compiling proc-macro2 v1.0.86
   Compiling unicode-ident v1.0.12
   Compiling autocfg v1.3.0
   Compiling serde v1.0.209
   Compiling once_cell v1.19.0
   Compiling wasm-bindgen-shared v0.2.93
   Compiling cfg-if v1.0.0
   Compiling log v0.4.22
   Compiling bumpalo v3.16.0
   Compiling version_check v0.9.5
   Compiling wasm-bindgen v0.2.93
   Compiling memchr v2.7.4
   Compiling quote v1.0.37
   Compiling syn v2.0.76
   Compiling thiserror v1.0.63
   Compiling smallvec v1.13.2
   Compiling pin-project-lite v0.2.14
   Compiling futures-core v0.3.30
   Compiling slab v0.4.9
   Compiling lock_api v0.4.12
   Compiling futures-sink v0.3.30
   Compiling parking_lot_core v0.9.10
   Compiling itoa v1.0.11
   Compiling futures-channel v0.3.30
   Compiling hashbrown v0.14.5
   Compiling futures-io v0.3.30
   Compiling libc v0.2.158
   Compiling unicode-xid v0.2.5
   Compiling ryu v1.0.18
   Compiling pin-utils v0.1.0
   Compiling percent-encoding v2.3.1
   Compiling serde_json v1.0.127
   Compiling futures-task v0.3.30
   Compiling const_format_proc_macros v0.2.32
   Compiling proc-macro-error-attr v1.0.4
   Compiling equivalent v1.0.1
   Compiling tinyvec_macros v0.1.1
   Compiling tinyvec v1.8.0
   Compiling indexmap v2.4.0
   Compiling proc-macro-error v1.0.4
   Compiling bytes v1.7.1
   Compiling unicode-segmentation v1.11.0
   Compiling fnv v1.0.7
   Compiling convert_case v0.6.0
   Compiling const_format v0.2.32
   Compiling unicode-normalization v0.1.22
   Compiling form_urlencoded v1.2.1
   Compiling wasm-bindgen-backend v0.2.93
   Compiling proc-macro-utils v0.10.0
   Compiling proc-macro-utils v0.8.0
   Compiling proc-macro2-diagnostics v0.10.1
   Compiling xxhash-rust v0.8.12
   Compiling unicode-bidi v0.3.15
   Compiling server_fn_macro v0.6.14
   Compiling wasm-bindgen-macro-support v0.2.93
   Compiling idna v0.5.0
   Compiling manyhow-macros v0.10.4
   Compiling slotmap v1.0.7
   Compiling half v2.4.1
   Compiling yansi v1.0.1
   Compiling camino v1.1.9
   Compiling anyhow v1.0.86
   Compiling scopeguard v1.2.0
   Compiling ciborium-io v0.2.2
   Compiling paste v1.0.15
   Compiling ciborium-ll v0.2.2
   Compiling serde_derive v1.0.209
   Compiling wasm-bindgen-macro v0.2.93
   Compiling thiserror-impl v1.0.63
   Compiling futures-macro v0.3.30
   Compiling js-sys v0.3.70
   Compiling futures-util v0.3.30
   Compiling tracing-attributes v0.1.27
   Compiling futures-executor v0.3.30
   Compiling pin-project-internal v1.1.5
   Compiling futures v0.3.30
   Compiling quote-use-macros v0.8.4
   Compiling quote-use v0.8.4
   Compiling syn_derive v0.1.8
   Compiling pin-project v1.1.5
   Compiling manyhow v0.10.4
   Compiling url v2.5.2
   Compiling web-sys v0.3.70
   Compiling wasm-bindgen-futures v0.4.43
   Compiling serde_spanned v0.6.7
   Compiling toml_datetime v0.6.8
   Compiling http v1.1.0
   Compiling tracing-core v0.1.32
   Compiling collection_literals v1.0.1
   Compiling prettyplease v0.2.22
   Compiling winnow v0.6.18
   Compiling interpolator v0.5.0
   Compiling same-file v1.0.6
   Compiling walkdir v2.5.0
   Compiling attribute-derive-macro v0.9.2
   Compiling tracing v0.1.40
   Compiling oco_ref v0.1.1
   Compiling serde_qs v0.12.0
   Compiling toml_edit v0.22.20
   Compiling ciborium v0.2.2
   Compiling serde-wasm-bindgen v0.6.5
   Compiling parking_lot v0.12.3
   Compiling rstml v0.11.2
   Compiling dashmap v5.5.3
   Compiling server_fn_macro_default v0.6.14
   Compiling derive-where v1.2.7
   Compiling getrandom v0.2.15
   Compiling send_wrapper v0.6.0
   Compiling aho-corasick v1.1.3
   Compiling lazy_static v1.5.0
   Compiling utf8-width v0.1.7
   Compiling minimal-lexical v0.2.1
   Compiling self_cell v1.0.4
   Compiling either v1.13.0
   Compiling base64 v0.22.1
   Compiling regex-syntax v0.8.4
   Compiling rustc-hash v1.1.0
   Compiling itertools v0.12.1
   Compiling nom v7.1.3
   Compiling regex-automata v0.4.7
   Compiling html-escape v0.2.13
   Compiling leptos_hot_reload v0.6.14
   Compiling uuid v1.10.0
   Compiling attribute-derive v0.9.2
   Compiling toml v0.8.19
   Compiling typed-builder-macro v0.18.2
   Compiling pathdiff v0.2.1
   Compiling config v0.14.0
   Compiling typed-builder v0.18.2
   Compiling leptos_macro v0.6.14
   Compiling regex v1.10.6
   Compiling async-recursion v1.1.1
   Compiling num-traits v0.2.19
   Compiling drain_filter_polyfill v0.1.3
   Compiling inventory v0.3.15
   Compiling pad-adapter v0.1.1
   Compiling leptos_config v0.6.14
   Compiling cfg_aliases v0.2.1
   Compiling borsh v1.5.1
   Compiling serde_test v1.0.177
   Compiling tokio v1.40.0
   Compiling linear-map v1.2.0
   Compiling serde_qs v0.13.0
   Compiling serde_urlencoded v0.7.1
   Compiling http v0.2.12
   Compiling tower-service v0.3.3
   Compiling base64 v0.13.1
   Compiling console_error_panic_hook v0.1.7
   Compiling gloo-utils v0.2.0
   Compiling leptos_reactive v0.6.14
   Compiling idb v0.6.3
   Compiling gloo-net v0.6.0
   Compiling reqwest-wasm v0.11.16
   Compiling console_log v1.0.0
   Compiling wasm-streams v0.4.0
   Compiling rexie v0.6.2
   Compiling server_fn v0.6.14
   Compiling leptos_server v0.6.14
   Compiling leptos_dom v0.6.14
   Compiling leptos v0.6.14
   Compiling leptos_meta v0.6.14
   Compiling leptos_router v0.6.14
   Compiling spiral_temp_extension v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/temp/extension)
warning: enum `AlbumData` is never used
  --> /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/src/timer.rs:52:6
   |
52 | enum AlbumData {
   |      ^^^^^^^^^
   |
   = note: `#[warn(dead_code)]` on by default

warning: `spiral_temp_extension` (lib) generated 1 warning
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 51.35s
[INFO]: ⬇️  Installing wasm-bindgen...
[INFO]: Optional field missing from Cargo.toml: 'description'. This is not necessary, but recommended
[INFO]: origin crate has no LICENSE
[INFO]: ✨   Done in 52.73s
[INFO]: 📦   Your wasm pkg is ready to publish at /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/pkg.
Resolving dependencies
Resolved, downloaded and extracted [54]
Saved lockfile
▲ [WARNING] "import.meta" is not available with the "iife" output format and will be empty [empty-import-meta]

    pkg/spiral_temp_extension.js:1507:66:
      1507 │ ...ath = new URL('spiral_temp_extension_bg.wasm', import.meta.url);
           ╵                                                   ~~~~~~~~~~~

  You need to set the output format to "esm" for "import.meta" to work correctly.

1 warning

  dist/spiral_temp_extension_bg-6ATVSFWS.wasm   4.6mb ⚠️
  dist/devtools.js                             29.0kb
  dist/content_script.js                       28.0kb
  dist/service_worker.js                        2.2kb

⚡ Done in 33ms
$ playwright test
[WebServer] Resolving dependencies
[WebServer] Resolved, downloaded and extracted [272]
[WebServer] Saved lockfile

Running 3 tests using 2 workers
···
  3 passed (9.1s)
In [ ]:
{ pwsh ../apps/spiral/temp/test/build.ps1 } | Invoke-Block
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
00:00:00   debug #1 runtime.execute_with_options_async / { options = { command = ../../../../workspace/target/release/spiral_builder dib --path build.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:00 verbose #2 > 00:00:00   debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "build.dib"])) }
00:00:00 verbose #3 > 00:00:00   debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [
00:00:00 verbose #4 >     "repl",
00:00:00 verbose #5 >     "--exit-after-run",
00:00:00 verbose #6 >     "--run",
00:00:00 verbose #7 >     "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib",
00:00:00 verbose #8 >     "--output-path",
00:00:00 verbose #9 >     "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb",
00:00:00 verbose #10 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } }
00:00:01 verbose #11 > >
00:00:01 verbose #12 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:01 verbose #13 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:01 verbose #14 > > │ # test                                                                       │
00:00:01 verbose #15 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:01 verbose #16 > >
00:00:01 verbose #17 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:01 verbose #18 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:01 verbose #19 > > │ ## include scripts                                                           │
00:00:01 verbose #20 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:01 verbose #21 > >
00:00:01 verbose #22 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:01 verbose #23 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:01 verbose #24 > > │ ### include notebook core                                                    │
00:00:01 verbose #25 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:01 verbose #26 > >
00:00:01 verbose #27 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:01 verbose #28 > > . ../../../../scripts/nbs_header.ps1
00:00:02 verbose #29 > >
00:00:02 verbose #30 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 verbose #31 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 verbose #32 > > │ ### Include core functions script                                            │
00:00:02 verbose #33 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 verbose #34 > >
00:00:02 verbose #35 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:02 verbose #36 > > . ../../../../scripts/core.ps1
00:00:02 verbose #37 > >
00:00:02 verbose #38 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 verbose #39 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 verbose #40 > > │ ### Include spiral library                                                   │
00:00:02 verbose #41 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 verbose #42 > >
00:00:02 verbose #43 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:02 verbose #44 > > . ../../../../lib/spiral/lib.ps1
00:00:02 verbose #45 > >
00:00:02 verbose #46 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 verbose #47 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 verbose #48 > > │ ## execute project commands                                                  │
00:00:02 verbose #49 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 verbose #50 > >
00:00:02 verbose #51 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:02 verbose #52 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:02 verbose #53 > > │ ### run notebook with retries using spiral supervisor                        │
00:00:02 verbose #54 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:02 verbose #55 > >
00:00:02 verbose #56 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:02 verbose #57 > > { . ../../../../apps/spiral/dist/Supervisor$(_exe) --execute-command
00:00:02 verbose #58 > > "../../../../workspace/target/release/spiral_builder$(_exe) dib --path test.dib
00:00:02 verbose #59 > > --retries 3" } | Invoke-Block
00:00:12 verbose #60 > >
00:00:12 verbose #61 > > ╭─[ 9.93s - stdout ]───────────────────────────────────────────────────────────╮
00:00:12 verbose #62 > > │ 00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex =    │
00:00:12 verbose #63 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:00:12 verbose #64 > > │ }                                                                            │
00:00:12 verbose #65 > > │ 00:00:00   debug #1 runtime.execute_with_options_async / { options = {  │
00:00:12 verbose #66 > > │ command = ../../../../workspace/target/release/spiral_builder dib --path     │
00:00:12 verbose #67 > > │ test.dib --retries 3; cancellation_token = Some                              │
00:00:12 verbose #68 > > │ System.Threading.CancellationToken; environment_variables = [||]; on_line =  │
00:00:12 verbose #69 > > │ None; stdin = None; trace = true; working_directory = None } }               │
00:00:12 verbose #70 > > │ 00:00:00 verbose #2 > 00:00:00   debug #1 spiral_builder.main / { │
00:00:12 verbose #71 > > │ args = Array(MutCell(["dib", "--path", "test.dib", "--retries", "3"])) }     │
00:00:12 verbose #72 > > │ 00:00:00 verbose #3 > 00:00:00   debug #2                         │
00:00:12 verbose #73 > > │ runtime.execute_with_options / { file_name = dotnet; arguments = [           │
00:00:12 verbose #74 > > │ 00:00:00 verbose #4 >     "repl",                                       │
00:00:12 verbose #75 > > │ 00:00:00 verbose #5 >     "--exit-after-run",                           │
00:00:12 verbose #76 > > │ 00:00:00 verbose #6 >     "--run",                                      │
00:00:12 verbose #77 > > │ 00:00:00 verbose #7 >                                                   │
00:00:12 verbose #78 > > │ "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib",        │
00:00:12 verbose #79 > > │ 00:00:00 verbose #8 >     "--output-path",                              │
00:00:12 verbose #80 > > │ 00:00:00 verbose #9 >                                                   │
00:00:12 verbose #81 > > │ "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb",  │
00:00:12 verbose #82 > > │ 00:00:00 verbose #10 > ]; options = { command = dotnet repl             │
00:00:12 verbose #83 > > │ --exit-after-run --run                                                       │
00:00:12 verbose #84 > > │ "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib"         │
00:00:12 verbose #85 > > │ --output-path                                                                │
00:00:12 verbose #86 > > │ "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb";  │
00:00:12 verbose #87 > > │ cancellation_token = None; environment_variables = Array(MutCell([           │
00:00:12 verbose #88 > > │ ("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin │
00:00:12 verbose #89 > > │ = None; trace = false; working_directory = None } }                          │
00:00:12 verbose #90 > > │ 00:00:01 verbose #11 > >                                                │
00:00:12 verbose #91 > > │ 00:00:01 verbose #12 > > ── markdown                           │
00:00:12 verbose #92 > > │ ────────────────────────────────────────────────────────────────────       │
00:00:12 verbose #93 > > │ 00:00:01 verbose #13 > > 38;5;2m│
00:00:12 verbose #94 > > │ 38;5;103m╭────────────────────────────────────────────────────────────────── │
00:00:12 verbose #95 > > │ ────────────╮                                                              │
00:00:12 verbose #96 > > │ 00:00:01 verbose #14 > > │ # test (Polyglot)                 │
00:00:12 verbose #97 > > │ │                                                                 │
00:00:12 verbose #98 > > │ 00:00:01 verbose #15 > > 38;5;2m│
00:00:12 verbose #99 > > │ 38;5;103m╰────────────────────────────────────────────────────────────────── │
00:00:12 verbose #100 > > │ ────────────╯                                                              │
00:00:12 verbose #101 > > │ 00:00:04 verbose #16 > >                                                │
00:00:12 verbose #102 > > │ 00:00:04 verbose #17 > > ── spiral                             │
00:00:12 verbose #103 > > │ ──────────────────────────────────────────────────────────────────────     │
00:00:12 verbose #104 > > │ 00:00:04 verbose #18 > > //// test                                      │
00:00:12 verbose #105 > > │ 00:00:04 verbose #19 > >                                                │
00:00:12 verbose #106 > > │ 00:00:04 verbose #20 > > open testing                                   │
00:00:12 verbose #107 > > │ 00:00:05 verbose #21 > >                                                │
00:00:12 verbose #108 > > │ 00:00:05 verbose #22 > > ── spiral                             │
00:00:12 verbose #109 > > │ ──────────────────────────────────────────────────────────────────────     │
00:00:12 verbose #110 > > │ 00:00:05 verbose #23 > > nominal i = ()                                 │
00:00:12 verbose #111 > > │ 00:00:05 verbose #24 > > nominal e = ()                                 │
00:00:12 verbose #112 > > │ 00:00:05 verbose #25 > > nominal s = ()                                 │
00:00:12 verbose #113 > > │ 00:00:05 verbose #26 > > nominal n = ()                                 │
00:00:12 verbose #114 > > │ 00:00:05 verbose #27 > > nominal t = ()                                 │
00:00:12 verbose #115 > > │ 00:00:05 verbose #28 > > nominal f = ()                                 │
00:00:12 verbose #116 > > │ 00:00:05 verbose #29 > > nominal j = ()                                 │
00:00:12 verbose #117 > > │ 00:00:05 verbose #30 > > nominal p = ()                                 │
00:00:12 verbose #118 > > │ 00:00:05 verbose #31 > >                                                │
00:00:12 verbose #119 > > │ 00:00:05 verbose #32 > > union sensing =                                │
00:00:12 verbose #120 > > │ 00:00:05 verbose #33 > >     | Si : s * i                               │
00:00:12 verbose #121 > > │ 00:00:05 verbose #34 > >     | Se : s * e                               │
00:00:12 verbose #122 > > │ 00:00:05 verbose #35 > >                                                │
00:00:12 verbose #123 > > │ 00:00:05 verbose #36 > > union intuition =                              │
00:00:12 verbose #124 > > │ 00:00:05 verbose #37 > >     | Ni : n * i                               │
00:00:12 verbose #125 > > │ 00:00:05 verbose #38 > >     | Ne : n * e                               │
00:00:12 verbose #126 > > │ 00:00:05 verbose #39 > >                                                │
00:00:12 verbose #127 > > │ 00:00:05 verbose #40 > > union thinking =                               │
00:00:12 verbose #128 > > │ 00:00:05 verbose #41 > >     | Ti : t * i                               │
00:00:12 verbose #129 > > │ 00:00:05 verbose #42 > >     | Te : t * e                               │
00:00:12 verbose #130 > > │ 00:00:05 verbose #43 > >                                                │
00:00:12 verbose #131 > > │ 00:00:05 verbose #44 > > union feeling =                                │
00:00:12 verbose #132 > > │ 00:00:05 verbose #45 > >     | Fi : f * i                               │
00:00:12 verbose #133 > > │ 00:00:05 verbose #46 > >     | Fe : f * e                               │
00:00:12 verbose #134 > > │ 00:00:05 verbose #47 > >                                                │
00:00:12 verbose #135 > > │ 00:00:05 verbose #48 > > union function_stack =                         │
00:00:12 verbose #136 > > │ 00:00:05 verbose #49 > >     | FS : sensing * intuition * thinking *    │
00:00:12 verbose #137 > > │ feeling                                                                      │
00:00:12 verbose #138 > > │ 00:00:05 verbose #50 > >                                                │
00:00:12 verbose #139 > > │ 00:00:05 verbose #51 > > union personality_type =                       │
00:00:12 verbose #140 > > │ 00:00:05 verbose #52 > >     | ISTJ : i * s * t * j * function_stack    │
00:00:12 verbose #141 > > │ 00:00:05 verbose #53 > >     | ISFJ : i * s * f * j * function_stack    │
00:00:12 verbose #142 > > │ 00:00:05 verbose #54 > >     | INFJ : i * n * f * j * function_stack    │
00:00:12 verbose #143 > > │ 00:00:05 verbose #55 > >     | INTJ : i * n * t * j * function_stack    │
00:00:12 verbose #144 > > │ 00:00:05 verbose #56 > >     | ISTP : i * s * t * p * function_stack    │
00:00:12 verbose #145 > > │ 00:00:05 verbose #57 > >     | ISFP : i * s * f * p * function_stack    │
00:00:12 verbose #146 > > │ 00:00:05 verbose #58 > >     | INFP : i * n * f * p * function_stack    │
00:00:12 verbose #147 > > │ 00:00:05 verbose #59 > >     | INTP : i * n * t * p * function_stack    │
00:00:12 verbose #148 > > │ 00:00:05 verbose #60 > >     | ESTP : e * s * t * p * function_stack    │
00:00:12 verbose #149 > > │ 00:00:05 verbose #61 > >     | ESFP : e * s * f * p * function_stack    │
00:00:12 verbose #150 > > │ 00:00:05 verbose #62 > >     | ENFP : e * n * f * p * function_stack    │
00:00:12 verbose #151 > > │ 00:00:05 verbose #63 > >     | ENTP : e * n * t * p * function_stack    │
00:00:12 verbose #152 > > │ 00:00:05 verbose #64 > >     | ESTJ : e * s * t * j * function_stack    │
00:00:12 verbose #153 > > │ 00:00:05 verbose #65 > >     | ESFJ : e * s * f * j * function_stack    │
00:00:12 verbose #154 > > │ 00:00:05 verbose #66 > >     | ENFJ : e * n * f * j * function_stack    │
00:00:12 verbose #155 > > │ 00:00:05 verbose #67 > >     | ENTJ : e * n * t * j * function_stack    │
00:00:12 verbose #156 > > │ 00:00:05 verbose #68 > >                                                │
00:00:12 verbose #157 > > │ 00:00:05 verbose #69 > >                                                │
00:00:12 verbose #158 > > │ 00:00:05 verbose #70 > > inl main () =                                  │
00:00:12 verbose #159 > > │ 00:00:05 verbose #71 > >     inl istj_stack = FS ((Si (s, i)), Ne (n,   │
00:00:12 verbose #160 > > │ e), (Te (t, e)), (Fi (f, i)))                                                │
00:00:12 verbose #161 > > │ 00:00:05 verbose #72 > >     inl istj_personality = ISTJ (i, s, t, j,   │
00:00:12 verbose #162 > > │ istj_stack)                                                                  │
00:00:12 verbose #163 > > │ 00:00:05 verbose #73 > >     // inl isfj_stack = FS ((Si (s, i)), Ne    │
00:00:12 verbose #164 > > │ (n, e), (Fe (f, e)), (Ti (t, i)))                                            │
00:00:12 verbose #165 > > │ 00:00:05 verbose #74 > >     // inl isfj_personality = ISFJ (i, s, f,   │
00:00:12 verbose #166 > > │ j, isfj_stack)                                                               │
00:00:12 verbose #167 > > │ 00:00:05 verbose #75 > >                                                │
00:00:12 verbose #168 > > │ 00:00:05 verbose #76 > >     ;[[                                        │
00:00:12 verbose #169 > > │ 00:00:05 verbose #77 > >         istj_personality                       │
00:00:12 verbose #170 > > │ 00:00:05 verbose #78 > >     ]]                                         │
00:00:12 verbose #171 > > │ 00:00:05 verbose #79 > >     |> fun x => $'$"%A{!x}"' : string          │
00:00:12 verbose #172 > > │ 00:00:05 verbose #80 > >     |> console.write_line                      │
00:00:12 verbose #173 > > │ 00:00:05 verbose #81 > >                                                │
00:00:12 verbose #174 > > │ 00:00:05 verbose #82 > > inl main () =                                  │
00:00:12 verbose #175 > > │ 00:00:05 verbose #83 > >     $'!main ()' : ()                           │
00:00:12 verbose #176 > > │ 00:00:06 verbose #84 > >                                                │
00:00:12 verbose #177 > > │ 00:00:06 verbose #85 > > ╭─[ 1.18s - stdout                      │
00:00:12 verbose #178 > > │ ]───────────────────────────────────────────────────────────╮              │
00:00:12 verbose #179 > > │ 00:00:06 verbose #86 > > │ [|US5_0 (US4_0 (US0_0, US1_1,       │
00:00:12 verbose #180 > > │ US2_1, US3_0))|]                               │                    │
00:00:12 verbose #181 > > │ 00:00:06 verbose #87 > > │                                     │
00:00:12 verbose #182 > > │                                                                              │
00:00:12 verbose #183 > > │ │                                                                   │
00:00:12 verbose #184 > > │ 00:00:06 verbose #88 > > 38;5;2m│
00:00:12 verbose #185 > > │ 38;5;2m╰──────────────────────────────────────────────────────────────────── │
00:00:12 verbose #186 > > │ ──────────╯                                                                │
00:00:12 verbose #187 > > │ 00:00:06 verbose #89 > >                                                │
00:00:12 verbose #188 > > │ 00:00:06 verbose #90 > > ── fsharp                             │
00:00:12 verbose #189 > > │ ──────────────────────────────────────────────────────────────────────     │
00:00:12 verbose #190 > > │ 00:00:06 verbose #91 > > type PhonologicalFeature =                     │
00:00:12 verbose #191 > > │ 00:00:06 verbose #92 > >     | VowelFeature of                          │
00:00:12 verbose #192 > > │ 00:00:06 verbose #93 > >         height: Height                         │
00:00:12 verbose #193 > > │ 00:00:06 verbose #94 > >         * backness: Backness                   │
00:00:12 verbose #194 > > │ 00:00:06 verbose #95 > >         * roundedness: Roundedness             │
00:00:12 verbose #195 > > │ 00:00:06 verbose #96 > >         * tone: Option<Tone>                   │
00:00:12 verbose #196 > > │ 00:00:06 verbose #97 > >         * stress: Option<Stress>               │
00:00:12 verbose #197 > > │ 00:00:06 verbose #98 > >         * length: Option<Length>               │
00:00:12 verbose #198 > > │ 00:00:06 verbose #99 > >     | ConsonantFeature of                      │
00:00:12 verbose #199 > > │ 00:00:06 verbose #100 > >         place: PlaceOfArticulation            │
00:00:12 verbose #200 > > │ 00:00:06 verbose #101 > >         * manner: MannerOfArticulation        │
00:00:12 verbose #201 > > │ 00:00:06 verbose #102 > >         * voicing: Voicing                    │
00:00:12 verbose #202 > > │ 00:00:06 verbose #103 > >         * length: Option<Length>              │
00:00:12 verbose #203 > > │ 00:00:06 verbose #104 > >     | VowelHarmonyFeature                     │
00:00:12 verbose #204 > > │ 00:00:06 verbose #105 > >     | PitchAccentFeature                      │
00:00:12 verbose #205 > > │ 00:00:06 verbose #106 > >                                               │
00:00:12 verbose #206 > > │ 00:00:06 verbose #107 > > and Stress = Primary | Secondary              │
00:00:12 verbose #207 > > │ 00:00:06 verbose #108 > > and Length = Long | Short | HalfLong          │
00:00:12 verbose #208 > > │ 00:00:06 verbose #109 > >                                               │
00:00:12 verbose #209 > > │ 00:00:06 verbose #110 > > and Height =                                  │
00:00:12 verbose #210 > > │ 00:00:06 verbose #111 > >     | High | NearHigh | HighMid               │
00:00:12 verbose #211 > > │ 00:00:06 verbose #112 > >     | Mid | LowMid | NearLow                  │
00:00:12 verbose #212 > > │ 00:00:06 verbose #113 > >     | Low                                     │
00:00:12 verbose #213 > > │ 00:00:06 verbose #114 > >                                               │
00:00:12 verbose #214 > > │ 00:00:06 verbose #115 > > and Backness = Front | Central | Back         │
00:00:12 verbose #215 > > │ 00:00:06 verbose #116 > >                                               │
00:00:12 verbose #216 > > │ 00:00:06 verbose #117 > > and Roundedness = Rounded | Unrounded         │
00:00:12 verbose #217 > > │ 00:00:06 verbose #118 > >                                               │
00:00:12 verbose #218 > > │ 00:00:06 verbose #119 > > and PlaceOfArticulation =                     │
00:00:12 verbose #219 > > │ 00:00:06 verbose #120 > >     | Bilabial | Labiodental | Dental         │
00:00:12 verbose #220 > > │ 00:00:06 verbose #121 > >     | Alveolar | Postalveolar | Retroflex     │
00:00:12 verbose #221 > > │ 00:00:06 verbose #122 > >     | Palatal | Velar | Uvular                │
00:00:12 verbose #222 > > │ 00:00:06 verbose #123 > >     | Pharyngeal | Epiglottal | Glottal       │
00:00:12 verbose #223 > > │ 00:00:06 verbose #124 > >                                               │
00:00:12 verbose #224 > > │ 00:00:06 verbose #125 > > and MannerOfArticulation =                    │
00:00:12 verbose #225 > > │ 00:00:06 verbose #126 > >     | Plosive | Nasal | Trill                 │
00:00:12 verbose #226 > > │ 00:00:06 verbose #127 > >     | TapOrFlap | Fricative |                 │
00:00:12 verbose #227 > > │ LateralFricative                                                             │
00:00:12 verbose #228 > > │ 00:00:06 verbose #128 > >     | Approximant | LateralApproximant        │
00:00:12 verbose #229 > > │ 00:00:06 verbose #129 > >                                               │
00:00:12 verbose #230 > > │ 00:00:06 verbose #130 > > and Voicing = Voiced | Voiceless              │
00:00:12 verbose #231 > > │ 00:00:06 verbose #131 > >                                               │
00:00:12 verbose #232 > > │ 00:00:06 verbose #132 > > and SecondaryArticulation =                   │
00:00:12 verbose #233 > > │ 00:00:06 verbose #133 > >     | Labialization | Palatalization |        │
00:00:12 verbose #234 > > │ Velarization                                                                 │
00:00:12 verbose #235 > > │ 00:00:06 verbose #134 > >     | Pharyngealization | Aspiration          │
00:00:12 verbose #236 > > │ 00:00:06 verbose #135 > >                                               │
00:00:12 verbose #237 > > │ 00:00:06 verbose #136 > > and Tone =                                    │
00:00:12 verbose #238 > > │ 00:00:06 verbose #137 > >     | LevelTone of int                        │
00:00:12 verbose #239 > > │ 00:00:06 verbose #138 > >     | ContourTone of int list                 │
00:00:12 verbose #240 > > │ 00:00:06 verbose #139 > >                                               │
00:00:12 verbose #241 > > │ 00:00:06 verbose #140 > > and MorphologicalFeature =                    │
00:00:12 verbose #242 > > │ 00:00:06 verbose #141 > >     | RootFeature of string                   │
00:00:12 verbose #243 > > │ 00:00:06 verbose #142 > >     | AffixFeature of AffixType * string      │
00:00:12 verbose #244 > > │ 00:00:06 verbose #143 > >     | IncorporationFeature of string *        │
00:00:12 verbose #245 > > │ MorphologicalFeature                                                         │
00:00:12 verbose #246 > > │ 00:00:06 verbose #144 > >     | NonConcatenativePattern of string *     │
00:00:12 verbose #247 > > │ string                                                                       │
00:00:12 verbose #248 > > │ 00:00:06 verbose #145 > >     | AgglutinativeAffixFeature of            │
00:00:12 verbose #249 > > │ AgglutinativeAffixType * string                                              │
00:00:12 verbose #250 > > │ 00:00:06 verbose #146 > >     | HonorificFeature of HonorificType *     │
00:00:12 verbose #251 > > │ string                                                                       │
00:00:12 verbose #252 > > │ 00:00:06 verbose #147 > >                                               │
00:00:12 verbose #253 > > │ 00:00:06 verbose #148 > > and AgglutinativeAffixType = Suffix | Prefix  │
00:00:12 verbose #254 > > │ 00:00:06 verbose #149 > >                                               │
00:00:12 verbose #255 > > │ 00:00:06 verbose #150 > > and HonorificType = VerbHonorific |           │
00:00:12 verbose #256 > > │ NounHonorific                                                                │
00:00:12 verbose #257 > > │ 00:00:06 verbose #151 > >                                               │
00:00:12 verbose #258 > > │ 00:00:06 verbose #152 > > and AffixType =                               │
00:00:12 verbose #259 > > │ 00:00:06 verbose #153 > >     | Prefix | Suffix | Infix                 │
00:00:12 verbose #260 > > │ 00:00:06 verbose #154 > >     | Circumfix                               │
00:00:12 verbose #261 > > │ 00:00:06 verbose #155 > >                                               │
00:00:12 verbose #262 > > │ 00:00:06 verbose #156 > > type SyntacticFeature =                       │
00:00:12 verbose #263 > > │ 00:00:06 verbose #157 > >     | WordFeature of MorphologicalFeature     │
00:00:12 verbose #264 > > │ list * LexicalCategory                                                       │
00:00:12 verbose #265 > > │ 00:00:06 verbose #158 > >     | PhraseFeature of PhraseType *           │
00:00:12 verbose #266 > > │ SyntacticFeature list                                                        │
00:00:12 verbose #267 > > │ 00:00:06 verbose #159 > >     | GrammaticalRelation of                  │
00:00:12 verbose #268 > > │ GrammaticalRelationType * SyntacticFeature list                              │
00:00:12 verbose #269 > > │ 00:00:06 verbose #160 > >     | SOVOrderFeature                         │
00:00:12 verbose #270 > > │ 00:00:06 verbose #161 > >     | TopicCommentFeature                     │
00:00:12 verbose #271 > > │ 00:00:06 verbose #162 > >                                               │
00:00:12 verbose #272 > > │ 00:00:06 verbose #163 > > and GrammaticalRelationType =                 │
00:00:12 verbose #273 > > │ 00:00:06 verbose #164 > >     | Ergative | Absolutive | Nominative      │
00:00:12 verbose #274 > > │ 00:00:06 verbose #165 > >     | Accusative                              │
00:00:12 verbose #275 > > │ 00:00:06 verbose #166 > >                                               │
00:00:12 verbose #276 > > │ 00:00:06 verbose #167 > > and LexicalCategory =                         │
00:00:12 verbose #277 > > │ 00:00:06 verbose #168 > >     | Noun | Verb | Adjective                 │
00:00:12 verbose #278 > > │ 00:00:06 verbose #169 > >     | Adverb | Pronoun | Preposition          │
00:00:12 verbose #279 > > │ 00:00:06 verbose #170 > >     | Conjunction | Determiner | Interjection │
00:00:12 verbose #280 > > │ 00:00:06 verbose #171 > >                                               │
00:00:12 verbose #281 > > │ 00:00:06 verbose #172 > > and PhraseType =                              │
00:00:12 verbose #282 > > │ 00:00:06 verbose #173 > >     | NP | VP | AP                            │
00:00:12 verbose #283 > > │ 00:00:06 verbose #174 > >     | PP | CP                                 │
00:00:12 verbose #284 > > │ 00:00:06 verbose #175 > >                                               │
00:00:12 verbose #285 > > │ 00:00:06 verbose #176 > > and SemanticFeature =                         │
00:00:12 verbose #286 > > │ 00:00:06 verbose #177 > >     | Meaning of string                       │
00:00:12 verbose #287 > > │ 00:00:06 verbose #178 > >     | SemanticRole of SemanticRoleType *      │
00:00:12 verbose #288 > > │ SemanticFeature                                                              │
00:00:12 verbose #289 > > │ 00:00:06 verbose #179 > >                                               │
00:00:12 verbose #290 > > │ 00:00:06 verbose #180 > > and SemanticRoleType =                        │
00:00:12 verbose #291 > > │ 00:00:06 verbose #181 > >     | Agent | Patient | Instrument            │
00:00:12 verbose #292 > > │ 00:00:06 verbose #182 > >     | Location | Time | Cause                 │
00:00:12 verbose #293 > > │ 00:00:06 verbose #183 > >                                               │
00:00:12 verbose #294 > > │ 00:00:06 verbose #184 > > and PragmaticFeature =                        │
00:00:12 verbose #295 > > │ 00:00:06 verbose #185 > >     | UseContext of string                    │
00:00:12 verbose #296 > > │ 00:00:06 verbose #186 > >     | PolitenessLevel of Politeness           │
00:00:12 verbose #297 > > │ 00:00:06 verbose #187 > >     | SpeechAct of SpeechActType              │
00:00:12 verbose #298 > > │ 00:00:06 verbose #188 > >     | SpeechLevel of SpeechLevelType          │
00:00:12 verbose #299 > > │ 00:00:06 verbose #189 > >                                               │
00:00:12 verbose #300 > > │ 00:00:06 verbose #190 > > and Politeness = Formal | Informal | Neutral  │
00:00:12 verbose #301 > > │ 00:00:06 verbose #191 > >                                               │
00:00:12 verbose #302 > > │ 00:00:06 verbose #192 > > and SpeechActType =                           │
00:00:12 verbose #303 > > │ 00:00:06 verbose #193 > >     | Assertive | Directive | Commissive      │
00:00:12 verbose #304 > > │ 00:00:06 verbose #194 > >     | Expressive | Declarative                │
00:00:12 verbose #305 > > │ 00:00:06 verbose #195 > >                                               │
00:00:12 verbose #306 > > │ 00:00:06 verbose #196 > > and SpeechLevelType =                         │
00:00:12 verbose #307 > > │ 00:00:06 verbose #197 > >     | FormalHigh | FormalLow | InformalHigh   │
00:00:12 verbose #308 > > │ 00:00:06 verbose #198 > >     | InformalLow | Neutral                   │
00:00:12 verbose #309 > > │ 00:00:06 verbose #199 > >                                               │
00:00:12 verbose #310 > > │ 00:00:06 verbose #200 > > type LinguisticFeature =                      │
00:00:12 verbose #311 > > │ 00:00:06 verbose #201 > >     | Phonological of PhonologicalFeature     │
00:00:12 verbose #312 > > │ 00:00:06 verbose #202 > >     | Morphological of MorphologicalFeature   │
00:00:12 verbose #313 > > │ 00:00:06 verbose #203 > >     | Syntactic of SyntacticFeature           │
00:00:12 verbose #314 > > │ 00:00:06 verbose #204 > >     | Semantic of SemanticFeature             │
00:00:12 verbose #315 > > │ 00:00:06 verbose #205 > >     | Pragmatic of PragmaticFeature           │
00:00:12 verbose #316 > > │ 00:00:06 verbose #206 > >                                               │
00:00:12 verbose #317 > > │ 00:00:06 verbose #207 > > type LanguageConstruct =                      │
00:00:12 verbose #318 > > │ 00:00:06 verbose #208 > >     | LanguageElement of LinguisticFeature    │
00:00:12 verbose #319 > > │ 00:00:06 verbose #209 > >     | LanguageStructure of LanguageConstruct  │
00:00:12 verbose #320 > > │ list                                                                         │
00:00:12 verbose #321 > > │ 00:00:06 verbose #210 > >     | TranslationElement of                   │
00:00:12 verbose #322 > > │ TranslationFeature                                                           │
00:00:12 verbose #323 > > │ 00:00:06 verbose #211 > >                                               │
00:00:12 verbose #324 > > │ 00:00:06 verbose #212 > > and TranslationFeature =                      │
00:00:12 verbose #325 > > │ 00:00:06 verbose #213 > >     | LinkedPhonological of                   │
00:00:12 verbose #326 > > │ PhonologicalFeature * PhonologicalFeature                                    │
00:00:12 verbose #327 > > │ 00:00:06 verbose #214 > >     | LinkedMorphological of                  │
00:00:12 verbose #328 > > │ MorphologicalFeature * MorphologicalFeature                                  │
00:00:12 verbose #329 > > │ 00:00:06 verbose #215 > >     | LinkedSyntactic of SyntacticFeature *   │
00:00:12 verbose #330 > > │ SyntacticFeature                                                             │
00:00:12 verbose #331 > > │ 00:00:06 verbose #216 > >     | LinkedSemantic of SemanticFeature *     │
00:00:12 verbose #332 > > │ SemanticFeature                                                              │
00:00:12 verbose #333 > > │ 00:00:06 verbose #217 > >                                               │
00:00:12 verbose #334 > > │ 00:00:06 verbose #218 > > type Discourse = DiscourseUnit of             │
00:00:12 verbose #335 > > │ LanguageConstruct list                                                       │
00:00:12 verbose #336 > > │ 00:00:06 verbose #219 > >                                               │
00:00:12 verbose #337 > > │ 00:00:06 verbose #220 > > type LanguageModel =                          │
00:00:12 verbose #338 > > │ 00:00:06 verbose #221 > >     | Model of discourse: Discourse           │
00:00:12 verbose #339 > > │ 00:00:07 verbose #222 > >                                               │
00:00:12 verbose #340 > > │ 00:00:07 verbose #223 > > ── fsharp                            │
00:00:12 verbose #341 > > │ ──────────────────────────────────────────────────────────────────────     │
00:00:12 verbose #342 > > │ 00:00:07 verbose #224 > > let testEnglish =                             │
00:00:12 verbose #343 > > │ 00:00:07 verbose #225 > >     Model(                                    │
00:00:12 verbose #344 > > │ 00:00:07 verbose #226 > >         DiscourseUnit [[                      │
00:00:12 verbose #345 > > │ 00:00:07 verbose #227 > >             LanguageElement (Phonological     │
00:00:12 verbose #346 > > │ (ConsonantFeature (Alveolar, Nasal,                                          │
00:00:12 verbose #347 > > │ 00:00:07 verbose #228 > > Voiced, Some(HalfLong))));                    │
00:00:12 verbose #348 > > │ 00:00:07 verbose #229 > >             LanguageElement (Phonological     │
00:00:12 verbose #349 > > │ (VowelFeature (High, Front, Unrounded,                                       │
00:00:12 verbose #350 > > │ 00:00:07 verbose #230 > > Some(LevelTone 1), Some(Primary),             │
00:00:12 verbose #351 > > │ Some(Short))));                                                              │
00:00:12 verbose #352 > > │ 00:00:07 verbose #231 > >             LanguageElement (Phonological     │
00:00:12 verbose #353 > > │ (VowelFeature (Low, Front, Unrounded,                                        │
00:00:12 verbose #354 > > │ 00:00:07 verbose #232 > > Some(LevelTone 2), Some(Secondary),           │
00:00:12 verbose #355 > > │ Some(Long))));                                                               │
00:00:12 verbose #356 > > │ 00:00:07 verbose #233 > >             LanguageElement (Phonological     │
00:00:12 verbose #357 > > │ (ConsonantFeature (Velar, Plosive,                                           │
00:00:12 verbose #358 > > │ 00:00:07 verbose #234 > > Voiceless, Some(HalfLong))));                 │
00:00:12 verbose #359 > > │ 00:00:07 verbose #235 > >             LanguageElement (Morphological    │
00:00:12 verbose #360 > > │ (RootFeature "I"));                                                          │
00:00:12 verbose #361 > > │ 00:00:07 verbose #236 > >             LanguageElement (Morphological    │
00:00:12 verbose #362 > > │ (RootFeature "see"));                                                        │
00:00:12 verbose #363 > > │ 00:00:07 verbose #237 > >             LanguageElement (Morphological    │
00:00:12 verbose #364 > > │ (RootFeature "a"));                                                          │
00:00:12 verbose #365 > > │ 00:00:07 verbose #238 > >             LanguageElement (Morphological    │
00:00:12 verbose #366 > > │ (RootFeature "cat"));                                                        │
00:00:12 verbose #367 > > │ 00:00:07 verbose #239 > >             LanguageElement (Syntactic        │
00:00:12 verbose #368 > > │ (PhraseFeature (NP, [[WordFeature                                            │
00:00:12 verbose #369 > > │ 00:00:07 verbose #240 > > ([[RootFeature "I"]], Pronoun)]])));          │
00:00:12 verbose #370 > > │ 00:00:07 verbose #241 > >             LanguageElement (Syntactic        │
00:00:12 verbose #371 > > │ (PhraseFeature (VP, [[WordFeature                                            │
00:00:12 verbose #372 > > │ 00:00:07 verbose #242 > > ([[RootFeature "see"]], Verb)]])));           │
00:00:12 verbose #373 > > │ 00:00:07 verbose #243 > >             LanguageElement (Syntactic        │
00:00:12 verbose #374 > > │ (PhraseFeature (NP, [[WordFeature                                            │
00:00:12 verbose #375 > > │ 00:00:07 verbose #244 > > ([[RootFeature "a"; RootFeature "cat"]],      │
00:00:12 verbose #376 > > │ Noun)]])));                                                                  │
00:00:12 verbose #377 > > │ 00:00:07 verbose #245 > >             LanguageElement (Semantic         │
00:00:12 verbose #378 > > │ (Meaning "Perception act of a feline by                                      │
00:00:12 verbose #379 > > │ 00:00:07 verbose #246 > > the speaker"));                               │
00:00:12 verbose #380 > > │ 00:00:07 verbose #247 > >             LanguageElement (Pragmatic        │
00:00:12 verbose #381 > > │ (UseContext "Statement of an action being                                    │
00:00:12 verbose #382 > > │ 00:00:07 verbose #248 > > observed"))                                   │
00:00:12 verbose #383 > > │ 00:00:07 verbose #249 > >         ]]                                    │
00:00:12 verbose #384 > > │ 00:00:07 verbose #250 > >     )                                         │
00:00:12 verbose #385 > > │ 00:00:07 verbose #251 > >                                               │
00:00:12 verbose #386 > > │ 00:00:07 verbose #252 > > let testPortuguese =                          │
00:00:12 verbose #387 > > │ 00:00:07 verbose #253 > >     Model(                                    │
00:00:12 verbose #388 > > │ 00:00:07 verbose #254 > >         DiscourseUnit [[                      │
00:00:12 verbose #389 > > │ 00:00:07 verbose #255 > >             LanguageElement (Phonological     │
00:00:12 verbose #390 > > │ (VowelFeature (High, Front, Unrounded,                                       │
00:00:12 verbose #391 > > │ 00:00:07 verbose #256 > > Some(LevelTone 1), Some(Primary),             │
00:00:12 verbose #392 > > │ Some(Short))));                                                              │
00:00:12 verbose #393 > > │ 00:00:07 verbose #257 > >             LanguageElement (Phonological     │
00:00:12 verbose #394 > > │ (VowelFeature (Low, Front, Unrounded,                                        │
00:00:12 verbose #395 > > │ 00:00:07 verbose #258 > > Some(LevelTone 2), Some(Secondary),           │
00:00:12 verbose #396 > > │ Some(Long))));                                                               │
00:00:12 verbose #397 > > │ 00:00:07 verbose #259 > >             LanguageElement (Phonological     │
00:00:12 verbose #398 > > │ (VowelFeature (Mid, Back, Rounded,                                           │
00:00:12 verbose #399 > > │ 00:00:07 verbose #260 > > Some(LevelTone 3), Some(Primary),             │
00:00:12 verbose #400 > > │ Some(Short))));                                                              │
00:00:12 verbose #401 > > │ 00:00:07 verbose #261 > >             LanguageElement (Phonological     │
00:00:12 verbose #402 > > │ (ConsonantFeature (Velar, Plosive,                                           │
00:00:12 verbose #403 > > │ 00:00:07 verbose #262 > > Voiceless, Some(HalfLong))));                 │
00:00:12 verbose #404 > > │ 00:00:07 verbose #263 > >             LanguageElement (Morphological    │
00:00:12 verbose #405 > > │ (RootFeature "Eu"));                                                         │
00:00:12 verbose #406 > > │ 00:00:07 verbose #264 > >             LanguageElement (Morphological    │
00:00:12 verbose #407 > > │ (RootFeature "ver" |> ignore;                                                │
00:00:12 verbose #408 > > │ 00:00:07 verbose #265 > > AffixFeature (Suffix, "o")));                 │
00:00:12 verbose #409 > > │ 00:00:07 verbose #266 > >             LanguageElement (Morphological    │
00:00:12 verbose #410 > > │ (RootFeature "um"));                                                         │
00:00:12 verbose #411 > > │ 00:00:07 verbose #267 > >             LanguageElement (Morphological    │
00:00:12 verbose #412 > > │ (RootFeature "gato"));                                                       │
00:00:12 verbose #413 > > │ 00:00:07 verbose #268 > >             LanguageElement (Syntactic        │
00:00:12 verbose #414 > > │ (PhraseFeature (NP, [[WordFeature                                            │
00:00:12 verbose #415 > > │ 00:00:07 verbose #269 > > ([[RootFeature "Eu"]], Pronoun)]])));         │
00:00:12 verbose #416 > > │ 00:00:07 verbose #270 > >             LanguageElement (Syntactic        │
00:00:12 verbose #417 > > │ (PhraseFeature (VP, [[WordFeature                                            │
00:00:12 verbose #418 > > │ 00:00:07 verbose #271 > > ([[RootFeature "vejo"]], Verb)]])));          │
00:00:12 verbose #419 > > │ 00:00:07 verbose #272 > >             LanguageElement (Syntactic        │
00:00:12 verbose #420 > > │ (PhraseFeature (NP, [[WordFeature                                            │
00:00:12 verbose #421 > > │ 00:00:07 verbose #273 > > ([[RootFeature "um"; RootFeature "gato"]],    │
00:00:12 verbose #422 > > │ Noun)]])));                                                                  │
00:00:12 verbose #423 > > │ 00:00:07 verbose #274 > >             LanguageElement (Semantic         │
00:00:12 verbose #424 > > │ (Meaning "Ação de percepção de um felino                                     │
00:00:12 verbose #425 > > │ 00:00:07 verbose #275 > > pelo falante"));                              │
00:00:12 verbose #426 > > │ 00:00:07 verbose #276 > >             LanguageElement (Pragmatic        │
00:00:12 verbose #427 > > │ (UseContext "Declaração de uma ação sendo                                    │
00:00:12 verbose #428 > > │ 00:00:07 verbose #277 > > observada"))                                  │
00:00:12 verbose #429 > > │ 00:00:07 verbose #278 > >         ]]                                    │
00:00:12 verbose #430 > > │ 00:00:07 verbose #279 > >     )                                         │
00:00:12 verbose #431 > > │ 00:00:07 verbose #280 > >                                               │
00:00:12 verbose #432 > > │ 00:00:07 verbose #281 > > let testKorean =                              │
00:00:12 verbose #433 > > │ 00:00:07 verbose #282 > >     Model(                                    │
00:00:12 verbose #434 > > │ 00:00:07 verbose #283 > >         DiscourseUnit [[                      │
00:00:12 verbose #435 > > │ 00:00:07 verbose #284 > >             LanguageElement (Phonological     │
00:00:12 verbose #436 > > │ (ConsonantFeature (Alveolar, Nasal,                                          │
00:00:12 verbose #437 > > │ 00:00:07 verbose #285 > > Voiced, Some(Short))));                       │
00:00:12 verbose #438 > > │ 00:00:07 verbose #286 > >             LanguageElement (Phonological     │
00:00:12 verbose #439 > > │ (VowelFeature (High, Back, Rounded,                                          │
00:00:12 verbose #440 > > │ 00:00:07 verbose #287 > > None, None, Some(Short))));                   │
00:00:12 verbose #441 > > │ 00:00:07 verbose #288 > >             LanguageElement (Phonological     │
00:00:12 verbose #442 > > │ (VowelFeature (Mid, Front, Unrounded,                                        │
00:00:12 verbose #443 > > │ 00:00:07 verbose #289 > > None, None, Some(Long))));                    │
00:00:12 verbose #444 > > │ 00:00:07 verbose #290 > >             LanguageElement (Phonological     │
00:00:12 verbose #445 > > │ (ConsonantFeature (Bilabial, Plosive,                                        │
00:00:12 verbose #446 > > │ 00:00:07 verbose #291 > > Voiceless, Some(Short))));                    │
00:00:12 verbose #447 > > │ 00:00:07 verbose #292 > >             LanguageElement (Morphological    │
00:00:12 verbose #448 > > │ (RootFeature "나"));                                                         │
00:00:12 verbose #449 > > │ 00:00:07 verbose #293 > >             LanguageElement (Morphological    │
00:00:12 verbose #450 > > │ (RootFeature "보다"));                                                       │
00:00:12 verbose #451 > > │ 00:00:07 verbose #294 > >             LanguageElement (Morphological    │
00:00:12 verbose #452 > > │ (AffixFeature (Suffix, "아")));                                              │
00:00:12 verbose #453 > > │ 00:00:07 verbose #295 > >             LanguageElement (Morphological    │
00:00:12 verbose #454 > > │ (RootFeature "고양이"));                                                     │
00:00:12 verbose #455 > > │ 00:00:07 verbose #296 > >             LanguageElement (Syntactic        │
00:00:12 verbose #456 > > │ (PhraseFeature (NP, [[WordFeature                                            │
00:00:12 verbose #457 > > │ 00:00:07 verbose #297 > > ([[RootFeature "나"]], Pronoun)]])));         │
00:00:12 verbose #458 > > │ 00:00:07 verbose #298 > >             LanguageElement (Syntactic        │
00:00:12 verbose #459 > > │ (PhraseFeature (VP, [[WordFeature                                            │
00:00:12 verbose #460 > > │ 00:00:07 verbose #299 > > ([[RootFeature "보다"; AffixFeature (Suffix,  │
00:00:12 verbose #461 > > │ "아")]], Verb)]])));                                                         │
00:00:12 verbose #462 > > │ 00:00:07 verbose #300 > >             LanguageElement (Syntactic        │
00:00:12 verbose #463 > > │ (PhraseFeature (NP, [[WordFeature                                            │
00:00:12 verbose #464 > > │ 00:00:07 verbose #301 > > ([[RootFeature "고양이"]], Noun)]])));        │
00:00:12 verbose #465 > > │ 00:00:07 verbose #302 > >             LanguageElement (Semantic         │
00:00:12 verbose #466 > > │ (Meaning "화자에 의한 고양이의 관찰                                          │
00:00:12 verbose #467 > > │ 00:00:07 verbose #303 > > 행위"));                                      │
00:00:12 verbose #468 > > │ 00:00:07 verbose #304 > >             LanguageElement (Pragmatic        │
00:00:12 verbose #469 > > │ (UseContext "관찰되고 있는 행동의 진술"))                                    │
00:00:12 verbose #470 > > │ 00:00:07 verbose #305 > >         ]]                                    │
00:00:12 verbose #471 > > │ 00:00:07 verbose #306 > >     )                                         │
00:00:12 verbose #472 > > │ 00:00:07 verbose #307 > >                                               │
00:00:12 verbose #473 > > │ 00:00:07 verbose #308 > > ── markdown                          │
00:00:12 verbose #474 > > │ ────────────────────────────────────────────────────────────────────       │
00:00:12 verbose #475 > > │ 00:00:07 verbose #309 > > 38;5;2m│
00:00:12 verbose #476 > > │ 38;5;103m╭────────────────────────────────────────────────────────────────── │
00:00:12 verbose #477 > > │ ────────────╮                                                              │
00:00:12 verbose #478 > > │ 00:00:07 verbose #310 > > │ ## main                          │
00:00:12 verbose #479 > > │ │                                                                 │
00:00:12 verbose #480 > > │ 00:00:07 verbose #311 > > 38;5;2m│
00:00:12 verbose #481 > > │ 38;5;103m╰────────────────────────────────────────────────────────────────── │
00:00:12 verbose #482 > > │ ────────────╯                                                              │
00:00:12 verbose #483 > > │ 00:00:07 verbose #312 > >                                               │
00:00:12 verbose #484 > > │ 00:00:07 verbose #313 > > ── spiral                            │
00:00:12 verbose #485 > > │ ──────────────────────────────────────────────────────────────────────     │
00:00:12 verbose #486 > > │ 00:00:07 verbose #314 > > inl main (_args : array_base string) =        │
00:00:12 verbose #487 > > │ 00:00:07 verbose #315 > >     0i32                                      │
00:00:12 verbose #488 > > │ 00:00:07 verbose #316 > >                                               │
00:00:12 verbose #489 > > │ 00:00:07 verbose #317 > > inl main () =                                 │
00:00:12 verbose #490 > > │ 00:00:07 verbose #318 > >     $'let main args = !main args' : ()        │
00:00:12 verbose #491 > > │ 00:00:07 verbose #319 > >                                               │
00:00:12 verbose #492 > > │ 00:00:07 verbose #320 > > ── spiral                            │
00:00:12 verbose #493 > > │ ──────────────────────────────────────────────────────────────────────     │
00:00:12 verbose #494 > > │ 00:00:07 verbose #321 > > inl app () =                                  │
00:00:12 verbose #495 > > │ 00:00:07 verbose #322 > >     "test" |> console.write_line              │
00:00:12 verbose #496 > > │ 00:00:07 verbose #323 > >     0i32                                      │
00:00:12 verbose #497 > > │ 00:00:07 verbose #324 > >                                               │
00:00:12 verbose #498 > > │ 00:00:07 verbose #325 > > inl main () =                                 │
00:00:12 verbose #499 > > │ 00:00:07 verbose #326 > >     print_static "<test>"                     │
00:00:12 verbose #500 > > │ 00:00:07 verbose #327 > >                                               │
00:00:12 verbose #501 > > │ 00:00:07 verbose #328 > >     app                                       │
00:00:12 verbose #502 > > │ 00:00:07 verbose #329 > >     |> dyn                                    │
00:00:12 verbose #503 > > │ 00:00:07 verbose #330 > >     |> ignore                                 │
00:00:12 verbose #504 > > │ 00:00:07 verbose #331 > >                                               │
00:00:12 verbose #505 > > │ 00:00:07 verbose #332 > >     print_static "</test>"                    │
00:00:12 verbose #506 > > │ 00:00:07 verbose #333 > 00:00:07 verbose #3                       │
00:00:12 verbose #507 > > │ runtime.execute_with_options / result / { exit_code = 0; std_trace_length =  │
00:00:12 verbose #508 > > │ 11263 }                                                                      │
00:00:12 verbose #509 > > │ 00:00:07 verbose #334 > 00:00:07   debug #4                       │
00:00:12 verbose #510 > > │ runtime.execute_with_options / { file_name = jupyter; arguments = [          │
00:00:12 verbose #511 > > │ 00:00:07 verbose #335 >     "nbconvert",                                │
00:00:12 verbose #512 > > │ 00:00:07 verbose #336 >                                                 │
00:00:12 verbose #513 > > │ "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb",  │
00:00:12 verbose #514 > > │ 00:00:07 verbose #337 >     "--to",                                     │
00:00:12 verbose #515 > > │ 00:00:07 verbose #338 >     "html",                                     │
00:00:12 verbose #516 > > │ 00:00:07 verbose #339 >     "--HTMLExporter.theme=dark",                │
00:00:12 verbose #517 > > │ 00:00:07 verbose #340 > ]; options = { command = jupyter nbconvert      │
00:00:12 verbose #518 > > │ "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb"   │
00:00:12 verbose #519 > > │ --to html --HTMLExporter.theme=dark; cancellation_token = None;              │
00:00:12 verbose #520 > > │ environment_variables = Array(MutCell([])); on_line = None; stdin = None;    │
00:00:12 verbose #521 > > │ trace = true; working_directory = None } }                                   │
00:00:12 verbose #522 > > │ 00:00:08 verbose #341 > 00:00:08 verbose #5 ! [NbConvertApp]      │
00:00:12 verbose #523 > > │ Converting notebook                                                          │
00:00:12 verbose #524 > > │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb to  │
00:00:12 verbose #525 > > │ html                                                                         │
00:00:12 verbose #526 > > │ 00:00:08 verbose #342 > 00:00:08 verbose #6 !                     │
00:00:12 verbose #527 > > │ /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat │
00:00:12 verbose #528 > > │ /__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this    │
00:00:12 verbose #529 > > │ will become a hard error in future nbformat versions. You may want to use    │
00:00:12 verbose #530 > > │ `normalize()` on your notebooks before validations (available since nbformat │
00:00:12 verbose #531 > > │ 5.1.4). Previous versions of nbformat are fixing this issue transparently,   │
00:00:12 verbose #532 > > │ and will stop doing so in the future.                                        │
00:00:12 verbose #533 > > │ 00:00:08 verbose #343 > 00:00:08 verbose #7 !   validate(nb)      │
00:00:12 verbose #534 > > │ 00:00:09 verbose #344 > 00:00:08 verbose #8 !                     │
00:00:12 verbose #535 > > │ /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconver │
00:00:12 verbose #536 > > │ t/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling  │
00:00:12 verbose #537 > > │ back on Python 3                                                             │
00:00:12 verbose #538 > > │ 00:00:09 verbose #345 > 00:00:08 verbose #9 !   return            │
00:00:12 verbose #539 > > │ _pygments_highlight(                                                         │
00:00:12 verbose #540 > > │ 00:00:09 verbose #346 > 00:00:08 verbose #10 ! [NbConvertApp]     │
00:00:12 verbose #541 > > │ Writing 318991 bytes to                                                      │
00:00:12 verbose #542 > > │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.html      │
00:00:12 verbose #543 > > │ 00:00:09 verbose #347 > 00:00:08 verbose #11                      │
00:00:12 verbose #544 > > │ runtime.execute_with_options / result / { exit_code = 0; std_trace_length =  │
00:00:12 verbose #545 > > │ 914 }                                                                        │
00:00:12 verbose #546 > > │ 00:00:09 verbose #348 > 00:00:08   debug #12 spiral_builder.run / │
00:00:12 verbose #547 > > │ dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 914 }     │
00:00:12 verbose #548 > > │ 00:00:09 verbose #349 > 00:00:08   debug #13                      │
00:00:12 verbose #549 > > │ runtime.execute_with_options / { file_name = pwsh; arguments = [             │
00:00:12 verbose #550 > > │ 00:00:09 verbose #350 >     "-c",                                       │
00:00:12 verbose #551 > > │ 00:00:09 verbose #351 >     "$counter = 1; $path =                      │
00:00:12 verbose #552 > > │ '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.html';   │
00:00:12 verbose #553 > > │ (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', {       │
00:00:12 verbose #554 > > │ $_.Groups[1].Value + $counter++ } | Set-Content $path",                      │
00:00:12 verbose #555 > > │ 00:00:09 verbose #352 > ]; options = { command = pwsh -c "$counter = 1; │
00:00:12 verbose #556 > > │ $path =                                                                      │
00:00:12 verbose #557 > > │ '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.html';   │
00:00:12 verbose #558 > > │ (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', {         │
00:00:12 verbose #559 > > │ $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = │
00:00:12 verbose #560 > > │ None; environment_variables = Array(MutCell([])); on_line = None; stdin =    │
00:00:12 verbose #561 > > │ None; trace = true; working_directory = None } }                             │
00:00:12 verbose #562 > > │ 00:00:09 verbose #353 > 00:00:09 verbose #14                      │
00:00:12 verbose #563 > > │ runtime.execute_with_options / result / { exit_code = 0; std_trace_length =  │
00:00:12 verbose #564 > > │ 0 }                                                                          │
00:00:12 verbose #565 > > │ 00:00:09 verbose #354 > 00:00:09   debug #15 spiral_builder.run / │
00:00:12 verbose #566 > > │ dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } │
00:00:12 verbose #567 > > │ 00:00:09 verbose #355 > 00:00:09   debug #16 spiral_builder.run / │
00:00:12 verbose #568 > > │ dib / { exit_code = 0; result_length = 12236 }                               │
00:00:12 verbose #569 > > │ 00:00:09   debug #356 runtime.execute_with_options_async / { exit_code  │
00:00:12 verbose #570 > > │ = 0; output_length = 15794 }                                                 │
00:00:12 verbose #571 > > │ 00:00:09   debug #1 main / executeCommand / exitCode: 0 / command:      │
00:00:12 verbose #572 > > │ ../../../../workspace/target/release/spiral_builder dib --path test.dib      │
00:00:12 verbose #573 > > │ --retries 3                                                                  │
00:00:12 verbose #574 > > │                                                                              │
00:00:12 verbose #575 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 verbose #576 > >
00:00:12 verbose #577 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 verbose #578 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 verbose #579 > > │ ### parse the .dib file into .spi format with dibparser                      │
00:00:12 verbose #580 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 verbose #581 > >
00:00:12 verbose #582 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:12 verbose #583 > > { . ../../../../apps/parser/dist/DibParser$(_exe) test.dib spi } | Invoke-Block
00:00:12 verbose #584 > >
00:00:12 verbose #585 > > ╭─[ 438.12ms - stdout ]────────────────────────────────────────────────────────╮
00:00:12 verbose #586 > > │ 00:00:00   debug #1 writeDibCode / output: Spi / path: test.dib         │
00:00:12 verbose #587 > > │ 00:00:00   debug #2 parseDibCode / output: Spi / file: test.dib         │
00:00:12 verbose #588 > > │                                                                              │
00:00:12 verbose #589 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 verbose #590 > >
00:00:12 verbose #591 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:12 verbose #592 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:12 verbose #593 > > │ ### build .fsx file from .spi using supervisor                               │
00:00:12 verbose #594 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:12 verbose #595 > >
00:00:12 verbose #596 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:12 verbose #597 > > { . ../../../../apps/spiral/dist/Supervisor$(_exe) --build-file test.spi
00:00:12 verbose #598 > > test.fsx } | Invoke-Block
00:00:13 verbose #599 > >
00:00:13 verbose #600 > > ╭─[ 1.02s - stdout ]───────────────────────────────────────────────────────────╮
00:00:13 verbose #601 > > │ 00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex =    │
00:00:13 verbose #602 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:00:13 verbose #603 > > │ }                                                                            │
00:00:13 verbose #604 > > │ 00:00:00 verbose #2 networking.test_port_open / { port = 13806; ex =    │
00:00:13 verbose #605 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │
00:00:13 verbose #606 > > │ }                                                                            │
00:00:13 verbose #607 > > │ 00:00:00   debug #1 Supervisor.buildFile / takeWhileInclusive /         │
00:00:13 verbose #608 > > │ outputContent:                                                               │
00:00:13 verbose #609 > > │  / errors: [] / typeErrorCount: 0 / retry: 0 / path: test.spi                │
00:00:13 verbose #610 > > │ 00:00:00   debug #2 Supervisor.buildFile / AsyncSeq.scan /              │
00:00:13 verbose #611 > > │ outputContent:                                                               │
00:00:13 verbose #612 > > │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
00:00:13 verbose #613 > > │ error:  / path: test.spi                                                     │
00:00:13 verbose #614 > > │ 00:00:00   debug #3 Supervisor.buildFile / takeWhileInclusive /         │
00:00:13 verbose #615 > > │ outputContent:                                                               │
00:00:13 verbose #616 > > │  / errors: [] / typeErrorCount: 0 / retry: 0 / path: test.spi                │
00:00:13 verbose #617 > > │ 00:00:00 verbose #4 Supervisor.sendJson / port: 13805 / json:           │
00:00:13 verbose #618 > > │ {"FileOpen":{"spiText":"/// # test (Polyglot)\nnominal i = ()\nnominal e =   │
00:00:13 verbose #619 > > │ ()\nnominal s =                                                              │
00:00:13 verbose #620 > > │ ()\nnomin...t\u003E\u0022\n","uri":"file:///home/runner/work/polyglot/polygl │
00:00:13 verbose #621 > > │ ot/apps/spiral/temp/test/test.spi"}} / result:                               │
00:00:13 verbose #622 > > │ 00:00:00 verbose #5 Supervisor.sendJson / port: 13805 / json:           │
00:00:13 verbose #623 > > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │
00:00:13 verbose #624 > > │ lyglot/apps/spiral/temp/test/test.spi"}} / result:                           │
00:00:13 verbose #625 > > │ 00:00:00   debug #6 Supervisor.buildFile / AsyncSeq.scan /              │
00:00:13 verbose #626 > > │ outputContent:                                                               │
00:00:13 verbose #627 > > │ let rec closure1 () () : unit =                                              │
00:00:13 verbose #628 > > │     let v0 : (string -> unit) = System.Console.WriteLine                     │
00:00:13 verbose #629 > > │     let v1 : string = "test"                                                 │
00:00:13 verbose #630 > > │     v0 v1                                                                    │
00:00:13 verbose #631 > > │ and closure0 () () : i...t v0 : unit = ()                                    │
00:00:13 verbose #632 > > │     let v1 : (unit -> unit) = closure1()                                     │
00:00:13 verbose #633 > > │     let v2 : unit = (fun () -> v1 (); v0) ()                                 │
00:00:13 verbose #634 > > │     0                                                                        │
00:00:13 verbose #635 > > │ let v0 : (unit -> int32) = closure0()                                        │
00:00:13 verbose #636 > > │ ()                                                                           │
00:00:13 verbose #637 > > │  / errors: [] / outputContentResult:  / typeErrorCount: 0 / retry: 0 /       │
00:00:13 verbose #638 > > │ error:  / path: test.spi                                                     │
00:00:13 verbose #639 > > │ 00:00:00   debug #7 Supervisor.buildFile / takeWhileInclusive /         │
00:00:13 verbose #640 > > │ outputContent:                                                               │
00:00:13 verbose #641 > > │ let rec closure1 () () : unit =                                              │
00:00:13 verbose #642 > > │     let v0 : (string -> unit) = System.Console.WriteLine                     │
00:00:13 verbose #643 > > │     let v1 : string = "test"                                                 │
00:00:13 verbose #644 > > │     v0 v1                                                                    │
00:00:13 verbose #645 > > │ and closure0 () () : i...t v0 : unit = ()                                    │
00:00:13 verbose #646 > > │     let v1 : (unit -> unit) = closure1()                                     │
00:00:13 verbose #647 > > │     let v2 : unit = (fun () -> v1 (); v0) ()                                 │
00:00:13 verbose #648 > > │     0                                                                        │
00:00:13 verbose #649 > > │ let v0 : (unit -> int32) = closure0()                                        │
00:00:13 verbose #650 > > │ ()                                                                           │
00:00:13 verbose #651 > > │  / errors: [] / typeErrorCount: 0 / retry: 0 / path: test.spi                │
00:00:13 verbose #652 > > │ 00:00:00   debug #8 FileSystem.watchWithFilter / Disposing watch stream │
00:00:13 verbose #653 > > │ / filter: FileName, LastWrite                                                │
00:00:13 verbose #654 > > │                                                                              │
00:00:13 verbose #655 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 verbose #656 > >
00:00:13 verbose #657 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 verbose #658 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 verbose #659 > > │ ## compile and format the project                                            │
00:00:13 verbose #660 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 verbose #661 > >
00:00:13 verbose #662 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:13 verbose #663 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:13 verbose #664 > > │ ### compile project with fable targeting optimized rust                      │
00:00:13 verbose #665 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:13 verbose #666 > >
00:00:13 verbose #667 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:13 verbose #668 > > dotnet fable --optimize --lang rs --extension .rs
00:00:20 verbose #669 > >
00:00:20 verbose #670 > > ╭─[ 6.75s - stdout ]───────────────────────────────────────────────────────────╮
00:00:20 verbose #671 > > │ Fable 4.19.3: F# to Rust compiler (status: alpha)                         │
00:00:20 verbose #672 > > │                                                                           │
00:00:20 verbose #673 > > │ Thanks to the contributor! @battermann                                       │
00:00:20 verbose #674 > > │ Stand with Ukraine! https://standwithukraine.com.ua/                      │
00:00:20 verbose #675 > > │                                                                              │
00:00:20 verbose #676 > > │ Parsing test.fsproj...                                                    │
00:00:20 verbose #677 > > │ .> dotnet restore test.fable-temp.csproj -p:FABLE_COMPILER=true           │
00:00:20 verbose #678 > > │ -p:FABLE_COMPILER_4=true -p:FABLE_COMPILER_RUST=true                         │
00:00:20 verbose #679 > > │   Determining projects to restore...                                         │
00:00:20 verbose #680 > > │   Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b      │
00:00:20 verbose #681 > > │   The last full restore is still up to date. Nothing left to do.             │
00:00:20 verbose #682 > > │   Total time taken: 0 milliseconds                                           │
00:00:20 verbose #683 > > │   Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b      │
00:00:20 verbose #684 > > │   Restoring                                                                  │
00:00:20 verbose #685 > > │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.fable-temp.cs │
00:00:20 verbose #686 > > │ proj                                                                         │
00:00:20 verbose #687 > > │   Starting restore process.                                                  │
00:00:20 verbose #688 > > │   Total time taken: 0 milliseconds                                           │
00:00:20 verbose #689 > > │   Restored                                                                   │
00:00:20 verbose #690 > > │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.fable-temp.cs │
00:00:20 verbose #691 > > │ proj (in 256 ms).                                                            │
00:00:20 verbose #692 > > │ .> dotnet restore                                                         │
00:00:20 verbose #693 > > │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.fsproj        │
00:00:20 verbose #694 > > │   Determining projects to restore...                                         │
00:00:20 verbose #695 > > │   Restored                                                                   │
00:00:20 verbose #696 > > │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.fsproj (in    │
00:00:20 verbose #697 > > │ 251 ms).                                                                     │
00:00:20 verbose #698 > > │ Project and references (1 source files) parsed in 4634ms                  │
00:00:20 verbose #699 > > │                                                                              │
00:00:20 verbose #700 > > │ Started Fable compilation...                                              │
00:00:20 verbose #701 > > │                                                                           │
00:00:20 verbose #702 > > │ Fable compilation finished in 1041ms                                         │
00:00:20 verbose #703 > > │                                                                              │
00:00:20 verbose #704 > > │ ./test.fsx(11,0): (11,2) warning FABLE: For Rust, support for F# static   │
00:00:20 verbose #705 > > │ and module do bindings is disabled by default. It can be enabled with the    │
00:00:20 verbose #706 > > │ 'static_do_bindings' feature. Use at your own risk!                          │
00:00:20 verbose #707 > > │                                                                              │
00:00:20 verbose #708 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 verbose #709 > >
00:00:20 verbose #710 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 verbose #711 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 verbose #712 > > │ ### fix formatting issues in the .rs file using regex and set-content        │
00:00:20 verbose #713 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 verbose #714 > >
00:00:20 verbose #715 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:20 verbose #716 > > (Get-Content test.rs) `
00:00:20 verbose #717 > >     -replace [[regex]]::Escape("),);"), "));" `
00:00:20 verbose #718 > >     | FixRust `
00:00:20 verbose #719 > > | Set-Content test.rs
00:00:20 verbose #720 > >
00:00:20 verbose #721 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 verbose #722 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 verbose #723 > > │ ### format the rust code using cargo fmt                                     │
00:00:20 verbose #724 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 verbose #725 > >
00:00:20 verbose #726 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:20 verbose #727 > > cargo fmt --
00:00:20 verbose #728 > >
00:00:20 verbose #729 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 verbose #730 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 verbose #731 > > │ ## build and test the project                                                │
00:00:20 verbose #732 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 verbose #733 > >
00:00:20 verbose #734 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:20 verbose #735 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:20 verbose #736 > > │ ### build the project in release mode using nightly rust compiler            │
00:00:20 verbose #737 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:20 verbose #738 > >
00:00:20 verbose #739 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:20 verbose #740 > > cargo build --release
00:00:32 verbose #741 > >
00:00:32 verbose #742 > > ╭─[ 11.36s - stdout ]──────────────────────────────────────────────────────────╮
00:00:32 verbose #743 > > │    Compiling syn v2.0.76                                       │
00:00:32 verbose #744 > > │    Compiling rand_core v0.6.4                                  │
00:00:32 verbose #745 > > │    Compiling linux-raw-sys v0.4.14                             │
00:00:32 verbose #746 > > │    Compiling num-traits v0.2.19                                │
00:00:32 verbose #747 > > │    Compiling once_cell v1.19.0                                 │
00:00:32 verbose #748 > > │    Compiling libm v0.2.8                                       │
00:00:32 verbose #749 > > │    Compiling wait-timeout v0.2.0                               │
00:00:32 verbose #750 > > │    Compiling rustix v0.38.35                                   │
00:00:32 verbose #751 > > │    Compiling bit-vec v0.6.3                                    │
00:00:32 verbose #752 > > │    Compiling quick-error v1.2.3                                │
00:00:32 verbose #753 > > │    Compiling bit-set v0.5.3                                    │
00:00:32 verbose #754 > > │    Compiling rand_xorshift v0.3.0                              │
00:00:32 verbose #755 > > │    Compiling unarray v0.1.4                                    │
00:00:32 verbose #756 > > │    Compiling memchr v2.7.4                                     │
00:00:32 verbose #757 > > │    Compiling nom v7.1.3                                        │
00:00:32 verbose #758 > > │    Compiling fable_library_rust v0.1.0                           │
00:00:32 verbose #759 > > │ (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-libr │
00:00:32 verbose #760 > > │ ary-rust)                                                                  │
00:00:32 verbose #761 > > │    Compiling zerocopy-derive v0.7.35                           │
00:00:32 verbose #762 > > │    Compiling tempfile v3.12.0                                  │
00:00:32 verbose #763 > > │    Compiling rusty-fork v0.3.0                                 │
00:00:32 verbose #764 > > │    Compiling zerocopy v0.7.35                                  │
00:00:32 verbose #765 > > │    Compiling thiserror-impl v1.0.63                            │
00:00:32 verbose #766 > > │    Compiling ppv-lite86 v0.2.20                                │
00:00:32 verbose #767 > > │    Compiling thiserror v1.0.63                                 │
00:00:32 verbose #768 > > │    Compiling rand_chacha v0.3.1                                │
00:00:32 verbose #769 > > │    Compiling rand v0.8.5                                       │
00:00:32 verbose #770 > > │    Compiling proptest v1.5.0                                   │
00:00:32 verbose #771 > > │    Compiling spiral_temp_test v0.0.1                             │
00:00:32 verbose #772 > > │ (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test)                │
00:00:32 verbose #773 > > │ warning: enum `Item` is never used                     │
00:00:32 verbose #774 > > │   --> 38;5;2m│
00:00:32 verbose #775 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:16:638;5;2m│
00:00:32 verbose #776 > > │ 0m                                                                           │
00:00:32 verbose #777 > > │    |                                                │
00:00:32 verbose #778 > > │ 16 | enum Item {              │
00:00:32 verbose #779 > > │    |      ^^^^                         │
00:00:32 verbose #780 > > │    |                                                │
00:00:32 verbose #781 > > │    = note: `#[warn(dead_code)]` on by default38;5;2m│
00:00:32 verbose #782 > > │ 0m                                                                         │
00:00:32 verbose #783 > > │                                                                       │
00:00:32 verbose #784 > > │ warning: struct `Cart` is never constructed            │
00:00:32 verbose #785 > > │   --> 38;5;2m│
00:00:32 verbose #786 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:41:838;5;2m│
00:00:32 verbose #787 > > │ 0m                                                                           │
00:00:32 verbose #788 > > │    |                                                │
00:00:32 verbose #789 > > │ 41 | struct Cart {            │
00:00:32 verbose #790 > > │    |        ^^^^                       │
00:00:32 verbose #791 > > │                                                                       │
00:00:32 verbose #792 > > │ warning: associated items `new`, `add_item`, and           │
00:00:32 verbose #793 > > │ `remove_item` are never used                                             │
00:00:32 verbose #794 > > │   --> 38;5;2m│
00:00:32 verbose #795 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:46:838;5;2m│
00:00:32 verbose #796 > > │ 0m                                                                           │
00:00:32 verbose #797 > > │    |                                                │
00:00:32 verbose #798 > > │ 45 | impl Cart {              │
00:00:32 verbose #799 > > │    | --------- 38;5;2m│
00:00:32 verbose #800 > > │ 38;5;12massociated items in this implementation                          │
00:00:32 verbose #801 > > │ 46 |     fn new() -> Cart {   │
00:00:32 verbose #802 > > │    |        ^^^                        │
00:00:32 verbose #803 > > │ ...                                                     │
00:00:32 verbose #804 > > │ 50 |     fn add_item(&mut self,   │
00:00:32 verbose #805 > > │ item: Item) {                                                            │
00:00:32 verbose #806 > > │    |        ^^^^^^^^                   │
00:00:32 verbose #807 > > │ ...                                                     │
00:00:32 verbose #808 > > │ 56 |     fn remove_item(&mut      │
00:00:32 verbose #809 > > │ self, item: &Item) {                                                     │
00:00:32 verbose #810 > > │    |        ^^^^^^^^^^^                │
00:00:32 verbose #811 > > │                                                                       │
00:00:32 verbose #812 > > │ warning: function `parse_comment` is never used        │
00:00:32 verbose #813 > > │    --> 38;5;2m│
00:00:32 verbose #814 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:124:4 │
00:00:32 verbose #815 > > │ [0m                                                                          │
00:00:32 verbose #816 > > │     |                                               │
00:00:32 verbose #817 > > │ 124 | fn parse_comment(input:     │
00:00:32 verbose #818 > > │ &str) -> IResult<&str, SpiralToken> {                                    │
00:00:32 verbose #819 > > │     |    ^^^^^^^^^^^^^                 │
00:00:32 verbose #820 > > │                                                                       │
00:00:32 verbose #821 > > │ warning: function `parse_string` is never used         │
00:00:32 verbose #822 > > │    --> 38;5;2m│
00:00:32 verbose #823 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:130:4 │
00:00:32 verbose #824 > > │ [0m                                                                          │
00:00:32 verbose #825 > > │     |                                               │
00:00:32 verbose #826 > > │ 130 | fn parse_string(input:      │
00:00:32 verbose #827 > > │ &str) -> IResult<&str, SpiralToken> {                                    │
00:00:32 verbose #828 > > │     |    ^^^^^^^^^^^^                  │
00:00:32 verbose #829 > > │                                                                       │
00:00:32 verbose #830 > > │ warning: function `parse_identifier` is never used     │
00:00:32 verbose #831 > > │    --> 38;5;2m│
00:00:32 verbose #832 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:145:4 │
00:00:32 verbose #833 > > │ [0m                                                                          │
00:00:32 verbose #834 > > │     |                                               │
00:00:32 verbose #835 > > │ 145 | fn parse_identifier(input:  │
00:00:32 verbose #836 > > │ &str) -> IResult<&str, SpiralToken> {                                    │
00:00:32 verbose #837 > > │     |    ^^^^^^^^^^^^^^^^              │
00:00:32 verbose #838 > > │                                                                       │
00:00:32 verbose #839 > > │ warning: function `parse_integer` is never used        │
00:00:32 verbose #840 > > │    --> 38;5;2m│
00:00:32 verbose #841 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:157:4 │
00:00:32 verbose #842 > > │ [0m                                                                          │
00:00:32 verbose #843 > > │     |                                               │
00:00:32 verbose #844 > > │ 157 | fn parse_integer(input:     │
00:00:32 verbose #845 > > │ &str) -> IResult<&str, SpiralToken> {                                    │
00:00:32 verbose #846 > > │     |    ^^^^^^^^^^^^^                 │
00:00:32 verbose #847 > > │                                                                       │
00:00:32 verbose #848 > > │ warning: function `parse_operator` is never used       │
00:00:32 verbose #849 > > │    --> 38;5;2m│
00:00:32 verbose #850 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:165:4 │
00:00:32 verbose #851 > > │ [0m                                                                          │
00:00:32 verbose #852 > > │     |                                               │
00:00:32 verbose #853 > > │ 165 | fn parse_operator(input:    │
00:00:32 verbose #854 > > │ &str) -> IResult<&str, SpiralToken> {                                    │
00:00:32 verbose #855 > > │     |    ^^^^^^^^^^^^^^                │
00:00:32 verbose #856 > > │                                                                       │
00:00:32 verbose #857 > > │ warning: function `parse_token` is never used          │
00:00:32 verbose #858 > > │    --> 38;5;2m│
00:00:32 verbose #859 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:170:4 │
00:00:32 verbose #860 > > │ [0m                                                                          │
00:00:32 verbose #861 > > │     |                                               │
00:00:32 verbose #862 > > │ 170 | fn parse_token(input: &str) │
00:00:32 verbose #863 > > │ -> IResult<&str, SpiralToken> {                                          │
00:00:32 verbose #864 > > │     |    ^^^^^^^^^^^                   │
00:00:32 verbose #865 > > │                                                                       │
00:00:32 verbose #866 > > │ warning: function `format_token` is never used         │
00:00:32 verbose #867 > > │    --> 38;5;2m│
00:00:32 verbose #868 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:180:4 │
00:00:32 verbose #869 > > │ [0m                                                                          │
00:00:32 verbose #870 > > │     |                                               │
00:00:32 verbose #871 > > │ 180 | fn format_token(token:      │
00:00:32 verbose #872 > > │ &SpiralToken) -> String {                                                │
00:00:32 verbose #873 > > │     |    ^^^^^^^^^^^^                  │
00:00:32 verbose #874 > > │                                                                       │
00:00:32 verbose #875 > > │ warning: function `parse_expression` is never used     │
00:00:32 verbose #876 > > │    --> 38;5;2m│
00:00:32 verbose #877 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:201:4 │
00:00:32 verbose #878 > > │ [0m                                                                          │
00:00:32 verbose #879 > > │     |                                               │
00:00:32 verbose #880 > > │ 201 | fn parse_expression(input:  │
00:00:32 verbose #881 > > │ &str) -> IResult<&str, SpiralToken> {                                    │
00:00:32 verbose #882 > > │     |    ^^^^^^^^^^^^^^^^              │
00:00:32 verbose #883 > > │                                                                       │
00:00:32 verbose #884 > > │ warning: `spiral_temp_test` (bin "spiral_temp_test")         │
00:00:32 verbose #885 > > │ generated 11 warnings                                                      │
00:00:32 verbose #886 > > │     Finished `release` profile [optimized] target(s) in 11.31s │
00:00:32 verbose #887 > > │                                                                              │
00:00:32 verbose #888 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 verbose #889 > >
00:00:32 verbose #890 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:32 verbose #891 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:32 verbose #892 > > │ ### run release tests with output enabled                                    │
00:00:32 verbose #893 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:32 verbose #894 > >
00:00:32 verbose #895 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:32 verbose #896 > > { cargo test --release -- --show-output } | Invoke-Block
00:00:48 verbose #897 > >
00:00:48 verbose #898 > > ╭─[ 15.97s - stdout ]──────────────────────────────────────────────────────────╮
00:00:48 verbose #899 > > │    Compiling linux-raw-sys v0.4.14                             │
00:00:48 verbose #900 > > │    Compiling bitflags v2.6.0                                   │
00:00:48 verbose #901 > > │    Compiling zerocopy v0.7.35                                  │
00:00:48 verbose #902 > > │    Compiling fastrand v2.1.1                                   │
00:00:48 verbose #903 > > │    Compiling once_cell v1.19.0                                 │
00:00:48 verbose #904 > > │    Compiling wait-timeout v0.2.0                               │
00:00:48 verbose #905 > > │    Compiling bit-vec v0.6.3                                    │
00:00:48 verbose #906 > > │    Compiling rustix v0.38.35                                   │
00:00:48 verbose #907 > > │    Compiling quick-error v1.2.3                                │
00:00:48 verbose #908 > > │    Compiling fnv v1.0.7                                        │
00:00:48 verbose #909 > > │    Compiling bit-set v0.5.3                                    │
00:00:48 verbose #910 > > │    Compiling num-traits v0.2.19                                │
00:00:48 verbose #911 > > │    Compiling ppv-lite86 v0.2.20                                │
00:00:48 verbose #912 > > │    Compiling rand_xorshift v0.3.0                              │
00:00:48 verbose #913 > > │    Compiling minimal-lexical v0.2.1                            │
00:00:48 verbose #914 > > │    Compiling rand_chacha v0.3.1                                │
00:00:48 verbose #915 > > │    Compiling lazy_static v1.5.0                                │
00:00:48 verbose #916 > > │    Compiling memchr v2.7.4                                     │
00:00:48 verbose #917 > > │    Compiling rand v0.8.5                                       │
00:00:48 verbose #918 > > │    Compiling unarray v0.1.4                                    │
00:00:48 verbose #919 > > │    Compiling nom v7.1.3                                        │
00:00:48 verbose #920 > > │    Compiling fable_library_rust v0.1.0                           │
00:00:48 verbose #921 > > │ (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-libr │
00:00:48 verbose #922 > > │ ary-rust)                                                                  │
00:00:48 verbose #923 > > │    Compiling thiserror v1.0.63                                 │
00:00:48 verbose #924 > > │    Compiling tempfile v3.12.0                                  │
00:00:48 verbose #925 > > │    Compiling rusty-fork v0.3.0                                 │
00:00:48 verbose #926 > > │    Compiling proptest v1.5.0                                   │
00:00:48 verbose #927 > > │    Compiling spiral_temp_test v0.0.1                             │
00:00:48 verbose #928 > > │ (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test)                │
00:00:48 verbose #929 > > │     Finished `release` profile [optimized] target(s) in 15.83s │
00:00:48 verbose #930 > > │      Running unittests main.rs                                   │
00:00:48 verbose #931 > > │ (/home/runner/work/polyglot/polyglot/workspace/target/release/deps/spiral_te │
00:00:48 verbose #932 > > │ mp_test-9ee62054c8fa759c)                                                  │
00:00:48 verbose #933 > > │                                                                              │
00:00:48 verbose #934 > > │ running 3 tests                                                              │
00:00:48 verbose #935 > > │ test test_parse_number ... ok                                                │
00:00:48 verbose #936 > > │ test prop_parse_format_idempotent ... ok                                     │
00:00:48 verbose #937 > > │ test                                                                         │
00:00:48 verbose #938 > > │ adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged ... │
00:00:48 verbose #939 > > │ ok                                                                           │
00:00:48 verbose #940 > > │                                                                              │
00:00:48 verbose #941 > > │ successes:                                                                   │
00:00:48 verbose #942 > > │                                                                              │
00:00:48 verbose #943 > > │ ---- prop_parse_format_idempotent stdout ----                                │
00:00:48 verbose #944 > > │ input=Identifier("oPnQm0AYQ78Ng1Q7fqn5EalTCQM932q")                          │
00:00:48 verbose #945 > > │ input=Operator("=")                                                          │
00:00:48 verbose #946 > > │ input=Integer(-3920480083096758925)                                          │
00:00:48 verbose #947 > > │ input=Operator("(")                                                          │
00:00:48 verbose #948 > > │ input=Operator("/")                                                          │
00:00:48 verbose #949 > > │ input=Integer(-3702015641894580733)                                          │
00:00:48 verbose #950 > > │ input=Integer(-2703506329922252149)                                          │
00:00:48 verbose #951 > > │ input=StringLiteral("PH=t/&P^){/%*t4%z:2Y-<&kl")                             │
00:00:48 verbose #952 > > │ input=Identifier("O")                                                        │
00:00:48 verbose #953 > > │ input=Integer(7708368487579818809)                                           │
00:00:48 verbose #954 > > │ input=Operator("*")                                                          │
00:00:48 verbose #955 > > │ input=Integer(857580607048074132)                                            │
00:00:48 verbose #956 > > │ input=Operator("(")                                                          │
00:00:48 verbose #957 > > │ input=Integer(8688783525598232421)                                           │
00:00:48 verbose #958 > > │ input=Operator(")")                                                          │
00:00:48 verbose #959 > > │ input=Operator("(")                                                          │
00:00:48 verbose #960 > > │ input=Integer(440397636449447109)                                            │
00:00:48 verbose #961 > > │ input=Comment(" e&@\"?:\"")                                                  │
00:00:48 verbose #962 > > │ input=Operator("/")                                                          │
00:00:48 verbose #963 > > │ input=Identifier("ZT0FZCNm85z5M4gUo")                                        │
00:00:48 verbose #964 > > │ input=Identifier("kssuMBgtE9bF7DNb7QL1AIyqA1PS4Gru")                         │
00:00:48 verbose #965 > > │ input=Comment("5~<b6;e)Ad#m_^>r@[ml(Y%:")                                    │
00:00:48 verbose #966 > > │ input=Identifier("rw0S7bYpJo8g9tOOLgXwT9d")                                  │
00:00:48 verbose #967 > > │ input=Comment("p&)=\"jo@+'3W/`")                                             │
00:00:48 verbose #968 > > │ input=Operator("*")                                                          │
00:00:48 verbose #969 > > │ input=Identifier("vBAXJb1RbHW7")                                             │
00:00:48 verbose #970 > > │ input=StringLiteral("+|?{[[=zly/")                                           │
00:00:48 verbose #971 > > │ input=Operator(")")                                                          │
00:00:48 verbose #972 > > │ input=Comment("*2U")                                                         │
00:00:48 verbose #973 > > │ input=Comment("<6^Ng?&e)=ikM*=$^~eOdW`l:C$$")                                │
00:00:48 verbose #974 > > │ input=StringLiteral("bY%],d$p't{/F4`:B~]")                                   │
00:00:48 verbose #975 > > │ input=Comment("h:EM<Dg?QCrn'")                                               │
00:00:48 verbose #976 > > │ input=StringLiteral("V.2/095K*//fRu`'b&<G=B=i`@&?4|=")                       │
00:00:48 verbose #977 > > │ input=Integer(-7539917455275479063)                                          │
00:00:48 verbose #978 > > │ input=Identifier("TqU666jZ5sH2W5ObUBK4NU2R")                                 │
00:00:48 verbose #979 > > │ input=StringLiteral("K &nzH/")                                               │
00:00:48 verbose #980 > > │ input=Integer(-6274804900431084729)                                          │
00:00:48 verbose #981 > > │ input=Comment("-_\"{=$}'")                                                   │
00:00:48 verbose #982 > > │ input=Comment("Br^H\"}.*#H[T")                                               │
00:00:48 verbose #983 > > │ input=Operator("=")                                                          │
00:00:48 verbose #984 > > │ input=Operator("*")                                                          │
00:00:48 verbose #985 > > │ input=Comment(" 0}4ZR|&:a0Fb<=Q$In\\bB&=KBueZY")                             │
00:00:48 verbose #986 > > │ input=Operator("*")                                                          │
00:00:48 verbose #987 > > │ input=Comment("`yRu$'6:vTZ)`{8\"f~9")                                        │
00:00:48 verbose #988 > > │ input=Integer(-2808533717791317249)                                          │
00:00:48 verbose #989 > > │ input=Operator("(")                                                          │
00:00:48 verbose #990 > > │ input=Identifier("RYi4lyGRcgEPVb7")                                          │
00:00:48 verbose #991 > > │ input=Integer(-8800822282197351581)                                          │
00:00:48 verbose #992 > > │ input=Identifier("dN8hwrJvj33TlYJRC3")                                       │
00:00:48 verbose #993 > > │ input=StringLiteral(" :Wc=efr-{K^!!tkCy:`IX$f$aw")                           │
00:00:48 verbose #994 > > │ input=Operator("+")                                                          │
00:00:48 verbose #995 > > │ input=Comment("M%m")                                                         │
00:00:48 verbose #996 > > │ input=Identifier("d2sW3SIou")                                                │
00:00:48 verbose #997 > > │ input=Comment("QS:$O8.\\f:'{F$?a%/O:)~_\\D^cO?$=I")                          │
00:00:48 verbose #998 > > │ input=Comment("'\\*N/\\?;*2F")                                               │
00:00:48 verbose #999 > > │ input=Comment("")                                                            │
00:00:48 verbose #1000 > > │ input=Identifier("azrz1Ujy4X4M1G2AB36G9a")                                   │
00:00:48 verbose #1001 > > │ input=Operator("(")                                                          │
00:00:48 verbose #1002 > > │ input=Integer(-8523168548933077200)                                          │
00:00:48 verbose #1003 > > │ input=StringLiteral("%ol]D=*'L$c>.wYF#?*/7")                                 │
00:00:48 verbose #1004 > > │ input=Operator(")")                                                          │
00:00:48 verbose #1005 > > │ input=Identifier("zwsEagg0Tg7I")                                             │
00:00:48 verbose #1006 > > │ input=Integer(-2446719588365423274)                                          │
00:00:48 verbose #1007 > > │ input=Comment(">J=m")                                                        │
00:00:48 verbose #1008 > > │ input=StringLiteral("N&$msfoDO@3&h$lA2<_:|$f")                               │
00:00:48 verbose #1009 > > │ input=StringLiteral("p$oYq%(tHjh[^k`Q%Cv<hjn")                               │
00:00:48 verbose #1010 > > │ input=StringLiteral("?.l<")                                                  │
00:00:48 verbose #1011 > > │ input=StringLiteral("O%@`824=)<1lu")                                         │
00:00:48 verbose #1012 > > │ input=Comment("ia<PZ*~\\h.KS8Fzei'`$@4U]P(zs")                               │
00:00:48 verbose #1013 > > │ input=StringLiteral("n{:k.`K%H0l`cxyLWP.ZoA{O/;*o OAF")                      │
00:00:48 verbose #1014 > > │ input=Identifier("F22WSBkigbSwE7t3YAncY6G1Sj77mbHD")                         │
00:00:48 verbose #1015 > > │ input=StringLiteral("!Mo:/`<a0p12o%o")                                       │
00:00:48 verbose #1016 > > │ input=Identifier("lX0nfSoAjD5x72")                                           │
00:00:48 verbose #1017 > > │ input=StringLiteral("w&?4q*rYI$,Q`'v`d=7/v]N1.ui")                           │
00:00:48 verbose #1018 > > │ input=Identifier("MY4mH6EZQCjQNr33lvFgZADj")                                 │
00:00:48 verbose #1019 > > │ input=StringLiteral("'/hU5k9iJU#=7N:#K`''")                                  │
00:00:48 verbose #1020 > > │ input=StringLiteral("&.<m&/=<)r}y=F|zPk")                                    │
00:00:48 verbose #1021 > > │ input=Comment("g*")                                                          │
00:00:48 verbose #1022 > > │ input=Comment("=\\$*^<^_=K`%b<{f`?=bx|")                                     │
00:00:48 verbose #1023 > > │ input=Comment("*..E5'/e<")                                                   │
00:00:48 verbose #1024 > > │ input=Operator("+")                                                          │
00:00:48 verbose #1025 > > │ input=Operator("/")                                                          │
00:00:48 verbose #1026 > > │ input=Comment("&</.&$nX:fE>:.#mM x|\"G")                                     │
00:00:48 verbose #1027 > > │ input=StringLiteral(",{*Yc?%'n$TsxRUs ")                                     │
00:00:48 verbose #1028 > > │ input=Comment("&H=:/>^.g;m74|\"W)(\\N.2=4'")                                 │
00:00:48 verbose #1029 > > │ input=Comment("0[s\"{T?$$%'=$Oy*&/6sB")                                      │
00:00:48 verbose #1030 > > │ input=StringLiteral("Oapa#bh$h&=")                                           │
00:00:48 verbose #1031 > > │ input=StringLiteral("*<.")                                                   │
00:00:48 verbose #1032 > > │ input=Identifier("ut3SjA948u0sXK5j0W")                                       │
00:00:48 verbose #1033 > > │ input=Identifier("Rk7EqwYB00ExcPTTiP9h")                                     │
00:00:48 verbose #1034 > > │ input=Operator(")")                                                          │
00:00:48 verbose #1035 > > │ input=Integer(-6430453863265735044)                                          │
00:00:48 verbose #1036 > > │ input=Operator("=")                                                          │
00:00:48 verbose #1037 > > │ input=Comment("pW")                                                          │
00:00:48 verbose #1038 > > │ input=StringLiteral(" WM")                                                   │
00:00:48 verbose #1039 > > │ input=Operator("-")                                                          │
00:00:48 verbose #1040 > > │ input=Integer(7831398330588322592)                                           │
00:00:48 verbose #1041 > > │ input=StringLiteral("0..ksP1%*0UO>Lu:")                                      │
00:00:48 verbose #1042 > > │ input=StringLiteral(".u*9:VF'-qG@6z%/U")                                     │
00:00:48 verbose #1043 > > │ input=Integer(-1110220110047254687)                                          │
00:00:48 verbose #1044 > > │ input=Identifier("ukUyYNrr1w")                                               │
00:00:48 verbose #1045 > > │ input=Identifier("CfWg6jzOwe7SEm8HhvFRw2CFikX38a4z")                         │
00:00:48 verbose #1046 > > │ input=Comment("\"")                                                          │
00:00:48 verbose #1047 > > │ input=Comment("?K/n+&='?a!aN=q%>)q&0`x=@sQ<-")                               │
00:00:48 verbose #1048 > > │ input=Comment("VT5}")                                                        │
00:00:48 verbose #1049 > > │ input=Identifier("qk89PiH6aWlVKlNEML3f4mzHK4UHn4w")                          │
00:00:48 verbose #1050 > > │ input=StringLiteral("!5<4$=j{.&")                                            │
00:00:48 verbose #1051 > > │ input=Operator("(")                                                          │
00:00:48 verbose #1052 > > │ input=Integer(-4921477954402948115)                                          │
00:00:48 verbose #1053 > > │ input=Identifier("n5uCndqXKewKU03hxk2BnN9A6ZHjYnGd1")                        │
00:00:48 verbose #1054 > > │ input=Identifier("RI5wc6124mECDot3x4oe1hbm")                                 │
00:00:48 verbose #1055 > > │ input=Operator(")")                                                          │
00:00:48 verbose #1056 > > │ input=Identifier("RL3pC0rWNhuCAG4s11V6Z")                                    │
00:00:48 verbose #1057 > > │ input=Integer(5399778741117989125)                                           │
00:00:48 verbose #1058 > > │ input=StringLiteral("Oq[%^suT/B%!2.h{x<Ejwl:,Rr_W<")                         │
00:00:48 verbose #1059 > > │ input=Comment("^N\"WXE?K?Ml>-3K@4")                                          │
00:00:48 verbose #1060 > > │ input=Comment("j<f>R<h@'=tTv/g]J<vf")                                        │
00:00:48 verbose #1061 > > │ input=Comment(")[?.9a?CN`1R9?mA@\\%_u$u.M\"E~")                              │
00:00:48 verbose #1062 > > │ input=Identifier("lyYk2UL2Jr3r7YU2VkUmEpZtB5zmQ5")                           │
00:00:48 verbose #1063 > > │ input=StringLiteral("/m'x==%~$o")                                            │
00:00:48 verbose #1064 > > │ input=Operator("(")                                                          │
00:00:48 verbose #1065 > > │ input=StringLiteral("ei2|nIT:'.u:=If]I*^w[q::*t0$+LcC")                      │
00:00:48 verbose #1066 > > │ input=Comment("!?\\*!~jpdrW`HL&R:$HZ")                                       │
00:00:48 verbose #1067 > > │ input=StringLiteral("Q.'u`'?=7p*J{4")                                        │
00:00:48 verbose #1068 > > │ input=Identifier("Fak0xtMMqTh3U")                                            │
00:00:48 verbose #1069 > > │ input=StringLiteral("5;Aj R*i!.:gN*hIm")                                     │
00:00:48 verbose #1070 > > │ input=Identifier("gYR6cOsUZoDRx5W")                                          │
00:00:48 verbose #1071 > > │ input=Operator("(")                                                          │
00:00:48 verbose #1072 > > │ input=StringLiteral("%6*|`,;b*&u}_t*TH:7m=t*sM")                             │
00:00:48 verbose #1073 > > │ input=Integer(1541676995365507997)                                           │
00:00:48 verbose #1074 > > │ input=Identifier("fr9iH0MXN6O5P")                                            │
00:00:48 verbose #1075 > > │ input=StringLiteral("rq")                                                    │
00:00:48 verbose #1076 > > │ input=StringLiteral("W<X`!W,_|$<Ea. | O98&:/?")                              │
00:00:48 verbose #1077 > > │ input=StringLiteral("a/T")                                                   │
00:00:48 verbose #1078 > > │ input=Operator(")")                                                          │
00:00:48 verbose #1079 > > │ input=StringLiteral("zXt~-")                                                 │
00:00:48 verbose #1080 > > │ input=Integer(2139209711786415078)                                           │
00:00:48 verbose #1081 > > │ input=StringLiteral("4>}.(.5V0yuoMD4")                                       │
00:00:48 verbose #1082 > > │ input=Identifier("vbTFwBV4ymjJr9Ab123")                                      │
00:00:48 verbose #1083 > > │ input=Operator("=")                                                          │
00:00:48 verbose #1084 > > │ input=Integer(-3282439213889950271)                                          │
00:00:48 verbose #1085 > > │ input=Integer(-8080052913109747650)                                          │
00:00:48 verbose #1086 > > │ input=Integer(7608052470181148204)                                           │
00:00:48 verbose #1087 > > │ input=StringLiteral("B`:")                                                   │
00:00:48 verbose #1088 > > │ input=Operator("(")                                                          │
00:00:48 verbose #1089 > > │ input=Identifier("mGyeo3NfWOyOuDgqzTz6jLMiNVayWH5S")                         │
00:00:48 verbose #1090 > > │ input=StringLiteral("`Rr")                                                   │
00:00:48 verbose #1091 > > │ input=Operator(")")                                                          │
00:00:48 verbose #1092 > > │ input=Operator("-")                                                          │
00:00:48 verbose #1093 > > │ input=Operator("=")                                                          │
00:00:48 verbose #1094 > > │ input=StringLiteral("/;k%?x]F~Z+`GGS")                                       │
00:00:48 verbose #1095 > > │ input=StringLiteral("*L{yn")                                                 │
00:00:48 verbose #1096 > > │ input=Integer(7822953228837922623)                                           │
00:00:48 verbose #1097 > > │ input=Identifier("B1")                                                       │
00:00:48 verbose #1098 > > │ input=StringLiteral(".~$:a/C3f%'$dA&=_O_")                                   │
00:00:48 verbose #1099 > > │ input=Operator("-")                                                          │
00:00:48 verbose #1100 > > │ input=Operator("*")                                                          │
00:00:48 verbose #1101 > > │ input=StringLiteral("]L%U`q);.,?)x./f$*(?UYwx&E*=PM")                        │
00:00:48 verbose #1102 > > │ input=Identifier("r")                                                        │
00:00:48 verbose #1103 > > │ input=Operator("*")                                                          │
00:00:48 verbose #1104 > > │ input=Operator("*")                                                          │
00:00:48 verbose #1105 > > │ input=Integer(-2486022194309878877)                                          │
00:00:48 verbose #1106 > > │ input=StringLiteral("RY:A:s}{.9Ezy+ yH:zs{J.Bt'?")                           │
00:00:48 verbose #1107 > > │ input=Operator("=")                                                          │
00:00:48 verbose #1108 > > │ input=Integer(-2206037627311676445)                                          │
00:00:48 verbose #1109 > > │ input=StringLiteral("tRg2ua.hF")                                             │
00:00:48 verbose #1110 > > │ input=Operator("(")                                                          │
00:00:48 verbose #1111 > > │ input=StringLiteral("<X`bd*8k.u/ko<'^%?V3?kbr-")                             │
00:00:48 verbose #1112 > > │ input=StringLiteral("*!<~hI8T!!Re%iY</({P&")                                 │
00:00:48 verbose #1113 > > │ input=Operator("/")                                                          │
00:00:48 verbose #1114 > > │ input=Identifier("TUE")                                                      │
00:00:48 verbose #1115 > > │ input=Operator("*")                                                          │
00:00:48 verbose #1116 > > │ input=Identifier("kWK7AbkELn6")                                              │
00:00:48 verbose #1117 > > │ input=Comment("'t:M<<m\"M`!?SU2}?,0/e''u:+P")                                │
00:00:48 verbose #1118 > > │ input=Identifier("Q81s8814Uq64pIoXH51LV")                                    │
00:00:48 verbose #1119 > > │ input=Identifier("Pjyd80EIF")                                                │
00:00:48 verbose #1120 > > │ input=Comment("UchIJsV&p%=@/*:{=}r")                                         │
00:00:48 verbose #1121 > > │ input=Identifier("wa8KXWSoLV66VPzeci0ui")                                    │
00:00:48 verbose #1122 > > │ input=Comment("w|@6'<jS::F.{*$O:4!':=w%IIY|\\]%{")                           │
00:00:48 verbose #1123 > > │ input=Identifier("Kl8ZwG")                                                   │
00:00:48 verbose #1124 > > │ input=StringLiteral("ujSCPot?DrN")                                           │
00:00:48 verbose #1125 > > │ input=Identifier("M2vS02")                                                   │
00:00:48 verbose #1126 > > │ input=StringLiteral("%G<+rygucROe-H YgzhS0A'??%`*qBX")                       │
00:00:48 verbose #1127 > > │ input=StringLiteral(")0XMEIJ(;<j*)UeyD:s^-?!06l")                            │
00:00:48 verbose #1128 > > │ input=StringLiteral("")                                                      │
00:00:48 verbose #1129 > > │ input=Identifier("xY75T3XQ10ME")                                             │
00:00:48 verbose #1130 > > │ input=Integer(-2804319554064575025)                                          │
00:00:48 verbose #1131 > > │ input=StringLiteral("s0{<3xmyX?{4_<Z.)p?-M|YN.R;Kp/w")                       │
00:00:48 verbose #1132 > > │ input=Operator("+")                                                          │
00:00:48 verbose #1133 > > │ input=Operator("(")                                                          │
00:00:48 verbose #1134 > > │ input=Identifier("pB90NVFKKd2hwEj0Yr")                                       │
00:00:48 verbose #1135 > > │ input=Comment("&AXm%%W<G")                                                   │
00:00:48 verbose #1136 > > │ input=Identifier("N")                                                        │
00:00:48 verbose #1137 > > │ input=Identifier("MwIA")                                                     │
00:00:48 verbose #1138 > > │ input=Identifier("Ay0i3M5JGLn1ipg0LIDLDQjM35CXI9O7")                         │
00:00:48 verbose #1139 > > │ input=Identifier("xCm")                                                      │
00:00:48 verbose #1140 > > │ input=Identifier("NueDFNIkkW1CO5b")                                          │
00:00:48 verbose #1141 > > │ input=Comment("oA\\.`y|[*\\Ap>o5-d26c;)i: \" +")                             │
00:00:48 verbose #1142 > > │ input=Integer(2260709744622975654)                                           │
00:00:48 verbose #1143 > > │ input=Comment("HHez|<QU=\\cV=G/u")                                           │
00:00:48 verbose #1144 > > │ input=Integer(-2190506955495365154)                                          │
00:00:48 verbose #1145 > > │ input=Identifier("f3dDM38SUScqBYW3eYLFuKy")                                  │
00:00:48 verbose #1146 > > │ input=Integer(-7521038412782243708)                                          │
00:00:48 verbose #1147 > > │ input=Identifier("att3Fc2citc9KSo")                                          │
00:00:48 verbose #1148 > > │ input=Operator("+")                                                          │
00:00:48 verbose #1149 > > │ input=StringLiteral("R[.a=?sy_LB2&]*}y..w|!:KH$<*")                          │
00:00:48 verbose #1150 > > │ input=Integer(-3170942163288706970)                                          │
00:00:48 verbose #1151 > > │ input=Comment("*$:cjrk%zS{b:=0=<'")                                          │
00:00:48 verbose #1152 > > │ input=StringLiteral("Y<S7vE&ggQ;6F")                                         │
00:00:48 verbose #1153 > > │ input=StringLiteral("oLK/?.MP46` .W'=&")                                     │
00:00:48 verbose #1154 > > │ input=Integer(-4646842264133998525)                                          │
00:00:48 verbose #1155 > > │ input=Operator("=")                                                          │
00:00:48 verbose #1156 > > │ input=Identifier("r2FJ8qc3A6It2GNV7qQvMA0")                                  │
00:00:48 verbose #1157 > > │ input=Identifier("k6KGEr77s53d667DSvgb0lq")                                  │
00:00:48 verbose #1158 > > │ input=Identifier("kQCQ6UNR")                                                 │
00:00:48 verbose #1159 > > │ input=Operator("+")                                                          │
00:00:48 verbose #1160 > > │ input=Comment("W?.i:MV")                                                     │
00:00:48 verbose #1161 > > │ input=Identifier("O4yR2o5z46xcE8ylvzK2rNS")                                  │
00:00:48 verbose #1162 > > │ input=Integer(-6557257559799732829)                                          │
00:00:48 verbose #1163 > > │ input=StringLiteral("'c@`5Be:<%%B>`m^& aS&")                                 │
00:00:48 verbose #1164 > > │ input=StringLiteral("R`{")                                                   │
00:00:48 verbose #1165 > > │ input=Operator("*")                                                          │
00:00:48 verbose #1166 > > │ input=Comment("b<hbaN&`r}sr]4C")                                             │
00:00:48 verbose #1167 > > │ input=Comment("<<t<jOT")                                                     │
00:00:48 verbose #1168 > > │ input=StringLiteral("HV1G=%'?KBkJ,,%<{:'Q:$`??i")                            │
00:00:48 verbose #1169 > > │ input=Operator("/")                                                          │
00:00:48 verbose #1170 > > │ input=StringLiteral("-=x<==V%U/Xm<0<")                                       │
00:00:48 verbose #1171 > > │ input=Comment("um.]&c3&ccv1\\jEgmYW$:&A++<&E+C'")                            │
00:00:48 verbose #1172 > > │ input=Comment("a%s%jhxV*9w8:F!:q<v/y\\V%1")                                  │
00:00:48 verbose #1173 > > │ input=StringLiteral("G.e}m>i:Z*/? ~<b")                                      │
00:00:48 verbose #1174 > > │ input=Comment("R2a6\":=}Zv5|/>yT")                                           │
00:00:48 verbose #1175 > > │ input=Operator("(")                                                          │
00:00:48 verbose #1176 > > │ input=Identifier("lW")                                                       │
00:00:48 verbose #1177 > > │ input=Integer(-3903151113352816874)                                          │
00:00:48 verbose #1178 > > │ input=Comment("*aT~x1<$*=p|sXf~?|Y")                                         │
00:00:48 verbose #1179 > > │ input=Operator("*")                                                          │
00:00:48 verbose #1180 > > │ input=Comment("\\w@o%*!<we{\"%k_>q`(O.\\#%:?S")                              │
00:00:48 verbose #1181 > > │ input=Integer(4011110214059869403)                                           │
00:00:48 verbose #1182 > > │ input=Identifier("BT5RBOarb2x6k")                                            │
00:00:48 verbose #1183 > > │ input=StringLiteral("4{6k]-7=1}lqkr*7D")                                     │
00:00:48 verbose #1184 > > │ input=Identifier("tceHg40n9x8EviL1DF")                                       │
00:00:48 verbose #1185 > > │ input=Integer(-3764393408627435613)                                          │
00:00:48 verbose #1186 > > │ input=Operator("-")                                                          │
00:00:48 verbose #1187 > > │ input=Identifier("FjHs3Ofuvq017mKuFVsoEW00P6p9B4YbU")                        │
00:00:48 verbose #1188 > > │ input=Integer(2583856766945553526)                                           │
00:00:48 verbose #1189 > > │ input=Identifier("avz8g545R")                                                │
00:00:48 verbose #1190 > > │ input=Identifier("UqSK5XF3wnD5O48Pfl7f7")                                    │
00:00:48 verbose #1191 > > │ input=Identifier("G0v5X9oDyylzo")                                            │
00:00:48 verbose #1192 > > │ input=Integer(1167883933528882270)                                           │
00:00:48 verbose #1193 > > │ input=Operator("*")                                                          │
00:00:48 verbose #1194 > > │ input=Identifier("Z42634jR0k3jIJa")                                          │
00:00:48 verbose #1195 > > │ input=StringLiteral("9LI4")                                                  │
00:00:48 verbose #1196 > > │ input=Integer(-9055317498844514144)                                          │
00:00:48 verbose #1197 > > │ input=Identifier("tj4V16W1R25O88Fh")                                         │
00:00:48 verbose #1198 > > │ input=Integer(2418265439380977620)                                           │
00:00:48 verbose #1199 > > │ input=StringLiteral("(p?8Z'*/:g(L'?>$}N}NqI=`c`S$H")                         │
00:00:48 verbose #1200 > > │                                                                              │
00:00:48 verbose #1201 > > │                                                                              │
00:00:48 verbose #1202 > > │ successes:                                                                   │
00:00:48 verbose #1203 > > │     adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged │
00:00:48 verbose #1204 > > │     prop_parse_format_idempotent                                             │
00:00:48 verbose #1205 > > │     test_parse_number                                                        │
00:00:48 verbose #1206 > > │                                                                              │
00:00:48 verbose #1207 > > │ test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out;  │
00:00:48 verbose #1208 > > │ finished in 0.07s                                                            │
00:00:48 verbose #1209 > > │                                                                              │
00:00:48 verbose #1210 > > │                                                                              │
00:00:48 verbose #1211 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:48 verbose #1212 > >
00:00:48 verbose #1213 > > ── markdown ────────────────────────────────────────────────────────────────────
00:00:48 verbose #1214 > > ╭──────────────────────────────────────────────────────────────────────────────╮
00:00:48 verbose #1215 > > │ ### execute the binary in release mode                                       │
00:00:48 verbose #1216 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:48 verbose #1217 > >
00:00:48 verbose #1218 > > ── pwsh ────────────────────────────────────────────────────────────────────────
00:00:48 verbose #1219 > > { . $ScriptDir/../../../../workspace/target/release/spiral_temp_test$(_exe) } |
00:00:48 verbose #1220 > > Invoke-Block
00:00:48 verbose #1221 > >
00:00:48 verbose #1222 > > ╭─[ 8.94ms - stdout ]──────────────────────────────────────────────────────────╮
00:00:48 verbose #1223 > > │ app=test                                                                     │
00:00:48 verbose #1224 > > │                                                                              │
00:00:48 verbose #1225 > > ╰──────────────────────────────────────────────────────────────────────────────╯
00:00:48 verbose #1226 > 00:00:47 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 127910 }
00:00:48 verbose #1227 > 00:00:47   debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [
00:00:48 verbose #1228 >     "nbconvert",
00:00:48 verbose #1229 >     "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb",
00:00:48 verbose #1230 >     "--to",
00:00:48 verbose #1231 >     "html",
00:00:48 verbose #1232 >     "--HTMLExporter.theme=dark",
00:00:48 verbose #1233 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:48 verbose #1234 > 00:00:48 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb to html
00:00:48 verbose #1235 > 00:00:48 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future.
00:00:48 verbose #1236 > 00:00:48 verbose #7 !   validate(nb)
00:00:49 verbose #1237 > 00:00:48 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3
00:00:49 verbose #1238 > 00:00:48 verbose #9 !   return _pygments_highlight(
00:00:49 verbose #1239 > 00:00:48 verbose #10 ! [NbConvertApp] Writing 365222 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html
00:00:49 verbose #1240 > 00:00:48 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 916 }
00:00:49 verbose #1241 > 00:00:48   debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 916 }
00:00:49 verbose #1242 > 00:00:48   debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [
00:00:49 verbose #1243 >     "-c",
00:00:49 verbose #1244 >     "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path",
00:00:49 verbose #1245 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } }
00:00:49 verbose #1246 > 00:00:49 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 }
00:00:49 verbose #1247 > 00:00:49   debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 }
00:00:49 verbose #1248 > 00:00:49   debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 128885 }
00:00:49   debug #1249 runtime.execute_with_options_async / { exit_code = 0; output_length = 134222 }
00:00:49   debug #1 main / executeCommand / exitCode: 0 / command: ../../../../workspace/target/release/spiral_builder dib --path build.dib
In [ ]:
{ pwsh ../apps/spiral/vscode/build.ps1 } | Invoke-Block
bun install v1.1.26 (0a37423b)

+ @types/node@20.12.11
+ @types/vscode@1.89.0
+ @vscode/vsce@2.26.1
+ npm-check-updates@17.0.0-5
+ typescript@5.5.0-dev.20240514
+ vscode@1.1.37

190 packages installed [925.00ms]
Creating symlink: /home/runner/work/polyglot/polyglot/apps/spiral/vscode/LICENSE -> /home/runner/work/polyglot/polyglot/LICENSE

  out/src/extension.js                  2.4kb
  out/media/cellOutputScrollButtons.js  1.9kb

⚡ Done in 3ms
Packaged: out/spiral-vscode-0.0.1.vsix (12 files, 43.6KB)
In [ ]:
{ pwsh ../apps/ipfs/build.ps1 } | Invoke-Block
bun install v1.1.26 (0a37423b)

+ @types/node@20.12.2
+ npm-check-updates@17.0.0-5
+ typescript@5.5.0-dev.20240401
+ nft.storage@7.1.1

219 packages installed [1267.00ms]

Blocked 1 postinstall. Run `bun pm untrusted` for details.
In [ ]:
{ pwsh ./outdated.ps1 } | Invoke-Block
Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
Resolving dependency graph...
Outdated packages found:
  Group: Main
    * Expecto 10.2.1 -> 11.0.0-alpha2
    * Expecto.FsCheck 10.2.1-fscheck3 -> 11.0.0-alpha2-fscheck2
    * FsCheck 3.0.0-rc3 -> 2.16.6
    * FSharp.Core 8.0.300-beta.24080.5 -> 9.0.100-beta.24406.3
    * Microsoft.AspNetCore.Connections.Abstractions 7.0 -> 9.0.0-preview.7.24406.2
    * Microsoft.AspNetCore.Http.Connections.Client 7.0 -> 9.0.0-preview.7.24406.2
    * Microsoft.AspNetCore.Http.Connections.Common 7.0 -> 9.0.0-preview.7.24406.2
    * Microsoft.AspNetCore.SignalR.Client 7.0 -> 9.0.0-preview.7.24406.2
    * Microsoft.AspNetCore.SignalR.Client.Core 7.0 -> 9.0.0-preview.7.24406.2
    * Microsoft.AspNetCore.SignalR.Common 7.0 -> 9.0.0-preview.7.24406.2
    * Microsoft.AspNetCore.SignalR.Protocols.Json 7.0 -> 9.0.0-preview.7.24406.2
    * Microsoft.Extensions.DependencyInjection 8.0 -> 9.0.0-preview.7.24405.7
    * Microsoft.Extensions.DependencyInjection.Abstractions 8.0.1 -> 9.0.0-preview.7.24405.7
    * Microsoft.Extensions.Features 7.0 -> 9.0.0-preview.7.24406.2
    * Microsoft.Extensions.Logging 8.0 -> 9.0.0-preview.7.24405.7
    * Microsoft.Extensions.Logging.Abstractions 8.0.1 -> 9.0.0-preview.7.24405.7
    * Microsoft.Extensions.Options 8.0.2 -> 9.0.0-preview.7.24405.7
    * Microsoft.Extensions.Primitives 8.0 -> 9.0.0-preview.7.24405.7
    * System.CodeDom 8.0 -> 9.0.0-preview.7.24405.7
    * System.Management 7.0 -> 9.0.0-preview.7.24405.7
    * System.Threading.Channels 8.0 -> 9.0.0-preview.7.24405.7
Total time taken: 5 seconds

CheckToml / toml: /home/runner/work/polyglot/polyglot/workspace/Cargo.toml
chat_contract_tests
================
Name                        Project                        Compat   Latest   Kind    Platform
----                        -------                        ------   ------   ----    --------
ahash                       0.7.8                          0.8.11   ---      Normal  ---
ahash                       0.8.11                         ---      0.7.8    Normal  ---
autocfg                     1.3.0                          Removed  ---      Build   ---
bumpalo                     3.16.0                         Removed  ---      Normal  ---
byteorder                   1.5.0                          ---      Removed  Normal  ---
cfg-if                      1.0.0                          ---      Removed  Normal  ---
cfg-if                      1.0.0                          Removed  ---      Normal  ---
equivalent                  1.0.1                          ---      Removed  Normal  ---
getrandom                   0.2.15                         Removed  ---      Normal  cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
hashbrown                   0.12.3                         0.14.5   ---      Normal  ---
hashbrown                   0.14.5                         ---      0.12.3   Normal  ---
indexmap                    1.9.3                          2.4.0    ---      Normal  ---
indexmap                    2.4.0                          ---      1.9.3    Normal  ---
js-sys                      0.3.70                         Removed  ---      Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
libc                        0.2.158                        Removed  ---      Normal  cfg(unix)
log                         0.4.22                         Removed  ---      Normal  ---
near-sandbox-utils          0.9.0                          0.8.0    0.8.0    Normal  ---
once_cell                   1.19.0                         Removed  ---      Normal  ---
proc-macro2                 1.0.86                         ---      Removed  Normal  ---
proc-macro2                 1.0.86                         Removed  ---      Normal  ---
quote                       1.0.37                         ---      Removed  Normal  ---
quote                       1.0.37                         Removed  ---      Normal  ---
serde                       1.0.209                        ---      Removed  Normal  ---
serde_derive                1.0.209                        ---      Removed  Normal  ---
syn                         2.0.76                         ---      Removed  Normal  ---
syn                         2.0.76                         Removed  ---      Normal  ---
unicode-ident               1.0.12                         ---      Removed  Normal  ---
unicode-ident               1.0.12                         Removed  ---      Normal  ---
wasi                        0.11.0+wasi-snapshot-preview1  Removed  ---      Normal  cfg(target_os = "wasi")
wasm-bindgen                0.2.93                         Removed  ---      Normal  ---
wasm-bindgen                0.2.93                         Removed  ---      Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
wasm-bindgen-backend        0.2.93                         Removed  ---      Normal  ---
wasm-bindgen-macro          0.2.93                         Removed  ---      Normal  ---
wasm-bindgen-macro-support  0.2.93                         Removed  ---      Normal  ---
wasm-bindgen-shared         0.2.93                         Removed  ---      Normal  ---
zerocopy                    0.7.35                         ---      Removed  Normal  ---
zerocopy-derive             0.7.35                         ---      Removed  Normal  ---

spiral_wasm
================
Name                        Project                        Compat   Latest   Kind    Platform
----                        -------                        ------   ------   ----    --------
ahash                       0.7.8                          0.8.11   ---      Normal  ---
ahash                       0.8.11                         ---      0.7.8    Normal  ---
autocfg                     1.3.0                          Removed  ---      Build   ---
bumpalo                     3.16.0                         Removed  ---      Normal  ---
byteorder                   1.5.0                          ---      Removed  Normal  ---
cfg-if                      1.0.0                          ---      Removed  Normal  ---
cfg-if                      1.0.0                          Removed  ---      Normal  ---
equivalent                  1.0.1                          ---      Removed  Normal  ---
getrandom                   0.2.15                         Removed  ---      Normal  cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
hashbrown                   0.12.3                         0.14.5   ---      Normal  ---
hashbrown                   0.14.5                         ---      0.12.3   Normal  ---
indexmap                    1.9.3                          2.4.0    ---      Normal  ---
indexmap                    2.4.0                          ---      1.9.3    Normal  ---
js-sys                      0.3.70                         Removed  ---      Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
libc                        0.2.158                        Removed  ---      Normal  cfg(unix)
log                         0.4.22                         Removed  ---      Normal  ---
near-sandbox-utils          0.9.0                          0.8.0    0.8.0    Normal  ---
once_cell                   1.19.0                         Removed  ---      Normal  ---
proc-macro2                 1.0.86                         ---      Removed  Normal  ---
proc-macro2                 1.0.86                         Removed  ---      Normal  ---
quote                       1.0.37                         ---      Removed  Normal  ---
quote                       1.0.37                         Removed  ---      Normal  ---
serde                       1.0.209                        ---      Removed  Normal  ---
serde_derive                1.0.209                        ---      Removed  Normal  ---
syn                         2.0.76                         ---      Removed  Normal  ---
syn                         2.0.76                         Removed  ---      Normal  ---
unicode-ident               1.0.12                         ---      Removed  Normal  ---
unicode-ident               1.0.12                         Removed  ---      Normal  ---
wasi                        0.11.0+wasi-snapshot-preview1  Removed  ---      Normal  cfg(target_os = "wasi")
wasm-bindgen                0.2.93                         Removed  ---      Normal  ---
wasm-bindgen                0.2.93                         Removed  ---      Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
wasm-bindgen-backend        0.2.93                         Removed  ---      Normal  ---
wasm-bindgen-macro          0.2.93                         Removed  ---      Normal  ---
wasm-bindgen-macro-support  0.2.93                         Removed  ---      Normal  ---
wasm-bindgen-shared         0.2.93                         Removed  ---      Normal  ---
zerocopy                    0.7.35                         ---      Removed  Normal  ---
zerocopy-derive             0.7.35                         ---      Removed  Normal  ---

CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml
Name                             Project  Compat   Latest   Kind    Platform
----                             -------  ------   ------   ----    --------
borsh-derive->syn                2.0.76   2.0.77   2.0.77   Normal  ---
darling_core->syn                2.0.76   2.0.77   2.0.77   Normal  ---
darling_macro->syn               2.0.76   2.0.77   2.0.77   Normal  ---
futures-macro->syn               2.0.76   2.0.77   2.0.77   Normal  ---
iana-time-zone-haiku->cc         1.1.15   1.1.16   1.1.16   Build   ---
near-sdk->serde_json             1.0.127  1.0.128  1.0.128  Normal  ---
near-sdk-macros->serde_json      1.0.127  1.0.128  1.0.128  Normal  ---
near-sdk-macros->syn             2.0.76   2.0.77   2.0.77   Normal  ---
serde_derive->syn                2.0.76   2.0.77   2.0.77   Normal  ---
sha2->cpufeatures                0.2.13   0.2.14   0.2.14   Normal  cfg(any(target_arch = "aarch64", target_arch = "x86_64", target_arch = "x86"))
strum_macros->syn                2.0.76   2.0.77   2.0.77   Normal  ---
syn_derive->syn                  2.0.76   2.0.77   2.0.77   Normal  ---
toml_edit->indexmap              2.4.0    2.5.0    2.5.0    Normal  ---
wasm-bindgen-backend->syn        2.0.76   2.0.77   2.0.77   Normal  ---
wasm-bindgen-macro-support->syn  2.0.76   2.0.77   2.0.77   Normal  ---
zerocopy-derive->syn             2.0.76   2.0.77   2.0.77   Normal  ---

CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml
Name                                              Project                        Compat         Latest         Kind    Platform
----                                              -------                        ------         ------         ----    --------
actix->tokio-util                                 0.7.11                         0.7.12         0.7.12         Normal  ---
actix-macros->syn                                 2.0.76                         2.0.77         2.0.77         Normal  ---
actix_derive->syn                                 2.0.76                         2.0.77         2.0.77         Normal  ---
aes->cpufeatures                                  0.2.13                         0.2.14         0.2.14         Normal  cfg(any(target_arch = "aarch64", target_arch = "x86_64", target_arch = "x86"))
ahash->cfg-if                                     1.0.0                          Removed        ---            Normal  ---
ahash->getrandom                                  0.2.15                         ---            Removed        Normal  cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
ahash->zerocopy                                   0.7.35                         Removed        ---            Normal  ---
android_system_properties->libc                   0.2.158                        Removed        ---            Normal  ---
async-io->rustix                                  0.38.35                        0.38.36        0.38.36        Normal  ---
async-process->rustix                             0.38.35                        0.38.36        0.38.36        Normal  cfg(unix)
async-recursion->syn                              2.0.76                         2.0.77         2.0.77         Normal  ---
async-signal->rustix                              0.38.35                        0.38.36        0.38.36        Normal  cfg(unix)
async-stream-impl->syn                            2.0.76                         2.0.77         2.0.77         Normal  ---
async-trait->syn                                  2.0.76                         2.0.77         2.0.77         Normal  ---
axum->async-trait                                 0.1.81                         0.1.82         0.1.82         Normal  ---
axum-core->async-trait                            0.1.81                         0.1.82         0.1.82         Normal  ---
backtrace->cc                                     1.1.15                         1.1.16         1.1.16         Build   ---
borsh-derive->syn                                 2.0.76                         2.0.77         2.0.77         Normal  ---
bzip2-sys->cc                                     1.1.15                         1.1.16         1.1.16         Build   ---
cargo-near->clap                                  4.5.16                         4.5.17         4.5.17         Normal  ---
cargo-near->serde_json                            1.0.127                        1.0.128        1.0.128        Normal  ---
cargo_metadata->serde_json                        1.0.127                        1.0.128        1.0.128        Normal  ---
cc->jobserver                                     0.1.32                         Removed        ---            Normal  ---
cc->libc                                          0.2.158                        Removed        ---            Normal  cfg(unix)
cc->shlex                                         1.3.0                          Removed        ---            Normal  ---
chrono->android-tzdata                            0.1.1                          Removed        ---            Normal  cfg(target_os = "android")
chrono->iana-time-zone                            0.1.60                         Removed        ---            Normal  cfg(unix)
chrono->js-sys                                    0.3.70                         Removed        ---            Normal  cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
chrono->num-traits                                0.2.19                         Removed        ---            Normal  ---
chrono->serde                                     1.0.209                        Removed        ---            Normal  ---
chrono->wasm-bindgen                              0.2.93                         Removed        ---            Normal  cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
chrono->windows-targets                           0.52.6                         Removed        ---            Normal  cfg(windows)
clap->clap_builder                                4.5.15                         4.5.17         4.5.17         Normal  ---
clap_derive->syn                                  2.0.76                         2.0.77         2.0.77         Normal  ---
curve25519-dalek->cpufeatures                     0.2.13                         0.2.14         0.2.14         Normal  cfg(target_arch = "x86_64")
curve25519-dalek-derive->syn                      2.0.76                         2.0.77         2.0.77         Normal  ---
darling_core->syn                                 2.0.76                         2.0.77         2.0.77         Normal  ---
darling_macro->syn                                2.0.76                         2.0.77         2.0.77         Normal  ---
derive_arbitrary->syn                             2.0.76                         2.0.77         2.0.77         Normal  ---
derive_more->syn                                  2.0.76                         2.0.77         2.0.77         Normal  ---
enum-map-derive->syn                              2.0.76                         2.0.77         2.0.77         Normal  ---
enumflags2_derive->syn                            2.0.76                         2.0.77         2.0.77         Normal  ---
futures-macro->syn                                2.0.76                         2.0.77         2.0.77         Normal  ---
getrandom->cfg-if                                 1.0.0                          ---            Removed        Normal  ---
getrandom->js-sys                                 0.3.70                         ---            Removed        Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
getrandom->libc                                   0.2.158                        ---            Removed        Normal  cfg(unix)
getrandom->wasi                                   0.11.0+wasi-snapshot-preview1  ---            Removed        Normal  cfg(target_os = "wasi")
getrandom->wasm-bindgen                           0.2.93                         ---            Removed        Normal  cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
h2->indexmap                                      2.4.0                          2.5.0          2.5.0          Normal  ---
h2->tokio-util                                    0.7.11                         0.7.12         0.7.12         Normal  ---
hashbrown->ahash                                  0.7.8                          ---            0.8.11         Normal  ---
hashbrown->ahash                                  0.8.11                         0.7.8          ---            Normal  ---
hashbrown->serde                                  1.0.209                        Removed        ---            Normal  ---
iana-time-zone->android_system_properties         0.1.5                          Removed        ---            Normal  cfg(target_os = "android")
iana-time-zone->core-foundation-sys               0.8.7                          Removed        ---            Normal  cfg(any(target_os = "macos", target_os = "ios"))
iana-time-zone->iana-time-zone-haiku              0.1.2                          Removed        ---            Normal  cfg(target_os = "haiku")
iana-time-zone->js-sys                            0.3.70                         Removed        ---            Normal  cfg(target_arch = "wasm32")
iana-time-zone->wasm-bindgen                      0.2.93                         Removed        ---            Normal  cfg(target_arch = "wasm32")
iana-time-zone->windows-core                      0.52.0                         Removed        ---            Normal  cfg(target_os = "windows")
iana-time-zone-haiku->cc                          1.1.15                         1.1.16         1.1.16         Build   ---
iana-time-zone-haiku->cc                          1.1.15                         Removed        1.1.16         Build   ---
indexmap->autocfg                                 1.3.0                          ---            Removed        Build   ---
indexmap->equivalent                              1.0.1                          Removed        ---            Normal  ---
indexmap->hashbrown                               0.12.3                         ---            0.14.5         Normal  ---
indexmap->hashbrown                               0.14.5                         0.12.3         ---            Normal  ---
jobserver->libc                                   0.2.158                        Removed        ---            Normal  cfg(unix)
js-sys->wasm-bindgen                              0.2.93                         ---            Removed        Normal  ---
js-sys->wasm-bindgen                              0.2.93                         Removed        ---            Normal  ---
json-patch->serde_json                            1.0.127                        1.0.128        1.0.128        Normal  ---
jsonptr->serde_json                               1.0.127                        1.0.128        1.0.128        Normal  ---
keccak->cpufeatures                               0.2.13                         0.2.14         0.2.14         Normal  cfg(target_arch = "aarch64")
near-abi-client-impl->serde_json                  1.0.127                        1.0.128        1.0.128        Normal  ---
near-async->serde_json                            1.0.127                        1.0.128        1.0.128        Normal  ---
near-async-derive->syn                            2.0.76                         2.0.77         2.0.77         Normal  ---
near-chain-configs->serde_json                    1.0.127                        1.0.128        1.0.128        Normal  ---
near-cli-rs->clap                                 4.5.16                         4.5.17         4.5.17         Normal  ---
near-cli-rs->serde_json                           1.0.127                        1.0.128        1.0.128        Normal  ---
near-crypto->serde_json                           1.0.127                        1.0.128        1.0.128        Normal  ---
near-jsonrpc-client->serde_json                   1.0.127                        1.0.128        1.0.128        Normal  ---
near-jsonrpc-primitives->serde_json               1.0.127                        1.0.128        1.0.128        Normal  ---
near-o11y->clap                                   4.5.16                         4.5.17         4.5.17         Normal  ---
near-o11y->serde_json                             1.0.127                        1.0.128        1.0.128        Normal  ---
near-performance-metrics->tokio-util              0.7.11                         0.7.12         0.7.12         Normal  ---
near-primitives->serde_json                       1.0.127                        1.0.128        1.0.128        Normal  ---
near-rpc-error-core->syn                          2.0.76                         2.0.77         2.0.77         Normal  ---
near-rpc-error-macro->syn                         2.0.76                         2.0.77         2.0.77         Normal  ---
near-sandbox-utils                                0.10.1                         0.10.0         0.10.0         Normal  ---
near-sandbox-utils->chrono                        0.4.38                         Removed        ---            Normal  ---
near-sdk->serde_json                              1.0.127                        1.0.128        1.0.128        Normal  ---
near-sdk-macros->serde_json                       1.0.127                        1.0.128        1.0.128        Normal  ---
near-sdk-macros->syn                              2.0.76                         2.0.77         2.0.77         Normal  ---
near-socialdb-client->serde_json                  1.0.127                        1.0.128        1.0.128        Normal  ---
near-workspaces->async-trait                      0.1.81                         0.1.82         0.1.82         Normal  ---
near-workspaces->near-sandbox-utils               0.8.0                          0.9.0          ---            Build   ---
near-workspaces->near-sandbox-utils               0.9.0                          ---            0.8.0          Normal  ---
near-workspaces->serde_json                       1.0.127                        1.0.128        1.0.128        Normal  ---
near_schemafy_core->serde_json                    1.0.127                        1.0.128        1.0.128        Normal  ---
near_schemafy_lib->serde_json                     1.0.127                        1.0.128        1.0.128        Normal  ---
num-traits->autocfg                               1.3.0                          Removed        ---            Build   ---
num-traits->libm                                  0.2.8                          Removed        ---            Normal  ---
openssl-macros->syn                               2.0.76                         2.0.77         2.0.77         Normal  ---
openssl-src->cc                                   1.1.15                         1.1.16         1.1.16         Normal  ---
openssl-sys->cc                                   1.1.15                         1.1.16         1.1.16         Build   ---
openssl-sys->openssl-src                          300.3.1+3.3.1                  300.3.2+3.3.2  300.3.2+3.3.2  Build   ---
opentelemetry-otlp->async-trait                   0.1.81                         0.1.82         0.1.82         Normal  ---
opentelemetry_sdk->async-trait                    0.1.81                         0.1.82         0.1.82         Normal  ---
opentelemetry_sdk->tokio-stream                   0.1.15                         0.1.16         0.1.16         Normal  ---
pin-project-internal->syn                         2.0.76                         2.0.77         2.0.77         Normal  ---
polling->rustix                                   0.38.35                        0.38.36        0.38.36        Normal  cfg(any(unix, target_os = "fuchsia", target_os = "vxworks"))
proc-macro2->unicode-ident                        1.0.12                         ---            Removed        Normal  ---
proc-macro2->unicode-ident                        1.0.12                         Removed        ---            Normal  ---
prost-derive->syn                                 2.0.76                         2.0.77         2.0.77         Normal  ---
quote->proc-macro2                                1.0.86                         ---            Removed        Normal  ---
quote->proc-macro2                                1.0.86                         Removed        ---            Normal  ---
reqwest->hyper-rustls                             0.27.2                         0.27.3         0.27.3         Normal  cfg(not(target_arch = "wasm32"))
reqwest->serde_json                               1.0.127                        1.0.128        1.0.128        Normal  ---
ring->cc                                          1.1.15                         1.1.16         1.1.16         Build   ---
rust_decimal->serde_json                          1.0.127                        1.0.128        1.0.128        Normal  ---
schemars->serde_json                              1.0.127                        1.0.128        1.0.128        Normal  ---
schemars_derive->syn                              2.0.76                         2.0.77         2.0.77         Normal  ---
scroll_derive->syn                                2.0.76                         2.0.77         2.0.77         Normal  ---
secp256k1-sys->cc                                 1.1.15                         1.1.16         1.1.16         Build   ---
serde->serde_derive                               1.0.209                        Removed        ---            Normal  ---
serde_derive->proc-macro2                         1.0.86                         Removed        ---            Normal  ---
serde_derive->quote                               1.0.37                         Removed        ---            Normal  ---
serde_derive->syn                                 2.0.76                         2.0.77         2.0.77         Normal  ---
serde_derive->syn                                 2.0.76                         Removed        2.0.77         Normal  ---
serde_derive_internals->syn                       2.0.76                         2.0.77         2.0.77         Normal  ---
serde_json                                        1.0.127                        1.0.128        1.0.128        Normal  ---
serde_repr->syn                                   2.0.76                         2.0.77         2.0.77         Normal  ---
serde_with->indexmap                              1.9.3                          ---            2.5.0          Normal  ---
serde_with->indexmap                              2.4.0                          1.9.3          2.5.0          Normal  ---
serde_with->serde_json                            1.0.127                        1.0.128        1.0.128        Normal  ---
serde_with_macros->syn                            2.0.76                         2.0.77         2.0.77         Normal  ---
serde_yaml->indexmap                              2.4.0                          2.5.0          2.5.0          Normal  ---
sha1->cpufeatures                                 0.2.13                         0.2.14         0.2.14         Normal  cfg(any(target_arch = "aarch64", target_arch = "x86", target_arch = "x86_64"))
sha2->cpufeatures                                 0.2.13                         0.2.14         0.2.14         Normal  cfg(any(target_arch = "aarch64", target_arch = "x86_64", target_arch = "x86"))
smart-default->syn                                2.0.76                         2.0.77         2.0.77         Normal  ---
strum_macros->syn                                 2.0.76                         2.0.77         2.0.77         Normal  ---
symbolic-debuginfo->serde_json                    1.0.127                        1.0.128        1.0.128        Normal  ---
syn->proc-macro2                                  1.0.86                         ---            Removed        Normal  ---
syn->proc-macro2                                  1.0.86                         Removed        ---            Normal  ---
syn->quote                                        1.0.37                         ---            Removed        Normal  ---
syn->quote                                        1.0.37                         Removed        ---            Normal  ---
syn->unicode-ident                                1.0.12                         ---            Removed        Normal  ---
syn->unicode-ident                                1.0.12                         Removed        ---            Normal  ---
syn_derive->syn                                   2.0.76                         2.0.77         2.0.77         Normal  ---
tempfile->rustix                                  0.38.35                        0.38.36        0.38.36        Normal  cfg(any(unix, target_os = "wasi"))
thiserror-impl->syn                               2.0.76                         2.0.77         2.0.77         Normal  ---
tokio-macros->syn                                 2.0.76                         2.0.77         2.0.77         Normal  ---
toml_edit->indexmap                               2.4.0                          2.5.0          2.5.0          Normal  ---
tonic->async-trait                                0.1.81                         0.1.82         0.1.82         Normal  ---
tonic->tokio-stream                               0.1.15                         0.1.16         0.1.16         Normal  ---
tower->tokio-util                                 0.7.11                         0.7.12         0.7.12         Normal  ---
tracing-attributes->syn                           2.0.76                         2.0.77         2.0.77         Normal  ---
ureq->webpki-roots                                0.26.3                         0.26.5         0.26.5         Normal  ---
wasm-bindgen->cfg-if                              1.0.0                          ---            Removed        Normal  ---
wasm-bindgen->cfg-if                              1.0.0                          Removed        ---            Normal  ---
wasm-bindgen->once_cell                           1.19.0                         ---            Removed        Normal  ---
wasm-bindgen->once_cell                           1.19.0                         Removed        ---            Normal  ---
wasm-bindgen->wasm-bindgen-macro                  0.2.93                         ---            Removed        Normal  ---
wasm-bindgen->wasm-bindgen-macro                  0.2.93                         Removed        ---            Normal  ---
wasm-bindgen-backend->bumpalo                     3.16.0                         ---            Removed        Normal  ---
wasm-bindgen-backend->bumpalo                     3.16.0                         Removed        ---            Normal  ---
wasm-bindgen-backend->log                         0.4.22                         ---            Removed        Normal  ---
wasm-bindgen-backend->log                         0.4.22                         Removed        ---            Normal  ---
wasm-bindgen-backend->once_cell                   1.19.0                         ---            Removed        Normal  ---
wasm-bindgen-backend->once_cell                   1.19.0                         Removed        ---            Normal  ---
wasm-bindgen-backend->proc-macro2                 1.0.86                         ---            Removed        Normal  ---
wasm-bindgen-backend->proc-macro2                 1.0.86                         Removed        ---            Normal  ---
wasm-bindgen-backend->quote                       1.0.37                         ---            Removed        Normal  ---
wasm-bindgen-backend->quote                       1.0.37                         Removed        ---            Normal  ---
wasm-bindgen-backend->syn                         2.0.76                         2.0.77         2.0.77         Normal  ---
wasm-bindgen-backend->syn                         2.0.76                         2.0.77         Removed        Normal  ---
wasm-bindgen-backend->syn                         2.0.76                         Removed        2.0.77         Normal  ---
wasm-bindgen-backend->wasm-bindgen-shared         0.2.93                         ---            Removed        Normal  ---
wasm-bindgen-backend->wasm-bindgen-shared         0.2.93                         Removed        ---            Normal  ---
wasm-bindgen-macro->quote                         1.0.37                         ---            Removed        Normal  ---
wasm-bindgen-macro->quote                         1.0.37                         Removed        ---            Normal  ---
wasm-bindgen-macro->wasm-bindgen-macro-support    0.2.93                         ---            Removed        Normal  ---
wasm-bindgen-macro->wasm-bindgen-macro-support    0.2.93                         Removed        ---            Normal  ---
wasm-bindgen-macro-support->proc-macro2           1.0.86                         ---            Removed        Normal  ---
wasm-bindgen-macro-support->proc-macro2           1.0.86                         Removed        ---            Normal  ---
wasm-bindgen-macro-support->quote                 1.0.37                         ---            Removed        Normal  ---
wasm-bindgen-macro-support->quote                 1.0.37                         Removed        ---            Normal  ---
wasm-bindgen-macro-support->syn                   2.0.76                         2.0.77         2.0.77         Normal  ---
wasm-bindgen-macro-support->syn                   2.0.76                         2.0.77         Removed        Normal  ---
wasm-bindgen-macro-support->syn                   2.0.76                         Removed        2.0.77         Normal  ---
wasm-bindgen-macro-support->wasm-bindgen-backend  0.2.93                         ---            Removed        Normal  ---
wasm-bindgen-macro-support->wasm-bindgen-backend  0.2.93                         Removed        ---            Normal  ---
wasm-bindgen-macro-support->wasm-bindgen-shared   0.2.93                         ---            Removed        Normal  ---
wasm-bindgen-macro-support->wasm-bindgen-shared   0.2.93                         Removed        ---            Normal  ---
wasmparser->indexmap                              2.4.0                          2.5.0          2.5.0          Normal  ---
windows-core->windows-targets                     0.52.6                         Removed        ---            Normal  ---
windows-targets->windows_aarch64_gnullvm          0.52.6                         Removed        ---            Normal  aarch64-pc-windows-gnullvm
windows-targets->windows_aarch64_msvc             0.52.6                         Removed        ---            Normal  cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
windows-targets->windows_i686_gnu                 0.52.6                         Removed        ---            Normal  cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows-targets->windows_i686_gnullvm             0.52.6                         Removed        ---            Normal  i686-pc-windows-gnullvm
windows-targets->windows_i686_msvc                0.52.6                         Removed        ---            Normal  cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
windows-targets->windows_x86_64_gnu               0.52.6                         Removed        ---            Normal  cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows-targets->windows_x86_64_gnullvm           0.52.6                         Removed        ---            Normal  x86_64-pc-windows-gnullvm
windows-targets->windows_x86_64_msvc              0.52.6                         Removed        ---            Normal  cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib)))
xattr->rustix                                     0.38.35                        0.38.36        0.38.36        Normal  ---
zbus->async-trait                                 0.1.81                         0.1.82         0.1.82         Normal  ---
zerocopy->byteorder                               1.5.0                          Removed        ---            Normal  ---
zerocopy->zerocopy-derive                         0.7.35                         Removed        ---            Normal  ---
zerocopy-derive->proc-macro2                      1.0.86                         Removed        ---            Normal  ---
zerocopy-derive->quote                            1.0.37                         Removed        ---            Normal  ---
zerocopy-derive->syn                              2.0.76                         2.0.77         2.0.77         Normal  ---
zerocopy-derive->syn                              2.0.76                         Removed        2.0.77         Normal  ---
zstd-sys->cc                                      1.1.15                         1.1.16         1.1.16         Build   ---

CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml
Name                             Project  Compat   Latest   Kind    Platform
----                             -------  ------   ------   ----    --------
futures-macro->syn               2.0.76   2.0.77   2.0.77   Normal  ---
iana-time-zone-haiku->cc         1.1.15   1.1.16   1.1.16   Build   ---
serde_derive->syn                2.0.76   2.0.77   2.0.77   Normal  ---
serde_json                       1.0.127  1.0.128  1.0.128  Normal  ---
sha2->cpufeatures                0.2.13   0.2.14   0.2.14   Normal  cfg(any(target_arch = "aarch64", target_arch = "x86_64", target_arch = "x86"))
wasm-bindgen-backend->syn        2.0.76   2.0.77   2.0.77   Normal  ---
wasm-bindgen-macro-support->syn  2.0.76   2.0.77   2.0.77   Normal  ---

CheckJson / json: /home/runner/work/polyglot/polyglot
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/package.json


 @types/node           ~20.12  →    ~22.5
 npm-check-updates  ~17.0.0-5  →  ~17.1.1

Run ncu --target greatest -u to upgrade package.json

CheckJson / json: /home/runner/work/polyglot/polyglot/apps/ipfs
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/apps/ipfs/package.json


 @types/node           ~20.12  →    ~22.5
 nft.storage             ~7.1  →     ~7.2
 npm-check-updates  ~17.0.0-5  →  ~17.1.1

Run ncu --target greatest -u to upgrade package.json

CheckJson / json: /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/package.json


 @playwright/test      1.44.0  →  1.48.0-alpha-2024-09-06
 @types/chrome       ~0.0.268  →                 ~0.0.270
 npm-check-updates  ~17.0.0-5  →                  ~17.1.1

Run ncu --target greatest -u to upgrade package.json

CheckJson / json: /home/runner/work/polyglot/polyglot/apps/spiral/vscode
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/apps/spiral/vscode/package.json


 @types/node           ~20.12  →    ~22.5
 @types/vscode          ~1.89  →    ~1.93
 @vscode/vsce           ~2.26  →     ~3.1
 npm-check-updates  ~17.0.0-5  →  ~17.1.1

Run ncu --target greatest -u to upgrade package.json

CheckJson / json: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/VS Code Plugin
$ npm-check-updates --target greatest
Checking /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/VS Code Plugin/package.json


 @microsoft/signalr     ^8.0.0  →   ^8.0.7
 @types/node            ~20.14  →    ~22.5
 @types/vscode           ~1.81  →    ~1.93
 @vscode/vsce            ~2.30  →     ~3.1
 esbuild                 ~0.21  →    ~0.23
 npm-check-updates   ~17.0.0-5  →  ~17.1.1

Run ncu --target greatest -u to upgrade package.json